-
lookup
+ product
diff --git a/examples/demo/index.js b/examples/demo/index.js
index 846d02a67ec..549f15f3c4b 100644
--- a/examples/demo/index.js
+++ b/examples/demo/index.js
@@ -19,49 +19,25 @@ function DemoController($scope, $http) {
function init() {
$scope.samples = [
- "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 */",
- "select user_id, name from user where name in ('test1', 'test2') /* non-unique multi-select */",
- "select user_id, name from user /* scatter */",
- "select count(*) from user where user_id=1 /* aggregation on unique vindex */",
- "select count(*) from user where name='foo' /* error: aggregation on non-unique vindex */",
- "select user_id, name from user where user_id=1 limit 1 /* limit on unique vindex */",
- "update user set user_id=1 where user_id=2 /* error: cannot change vindex columns */",
- "delete from user where user_id=1 /* other 'test1' in name_user_idx unaffected */",
- "delete from user where name='test1' /* error: cannot delete by non-unique vindex */",
- "",
- "insert into user_extra(user_id, extra) values(1, 'extra1')",
- "insert into user_extra(user_id, extra) values(2, 'test1')",
- "insert into user_extra(user_id, extra) values(6, 'test2')",
- "insert into user_extra(extra) values('extra1') /* error: must supply value for user_id */",
- "select user_id, extra from user_extra where extra='extra1' /* scatter */",
- "update user_extra set extra='extra2' where user_id=1 /* allowed */",
- "delete from user_extra where user_id=1 /* vindexes are unchanged */",
- "",
- "insert into music(user_id) values(1) /* auto-inc on music_id */",
- "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 */",
- "",
- "insert into name_info(name, info) values('test1', 'test info')",
- "insert into name_info(name, info) values('test4', 'test info 4')",
- "select u.user_id, n.info from user u join name_info n on u.name=n.name where u.user_id=1",
- "",
- "select u.user_id, u.name, e.user_id, e.extra from user u join user_extra e on u.user_id = e.user_id where u.user_id = 2 /* simple, single row join */",
- "select u.user_id, u.name, e.user_id, e.extra from user u join user_extra e on u.user_id = e.user_id /* simple, scatter join */",
- "select u.user_id, u.name, e.user_id, e.extra from user u join user_extra e on u.name != e.extra where u.user_id = 2 /* simple, cross-shard complex join */",
- "select u1.user_id, u1.name, u2.user_id, u2.name from user u1 join user u2 on u1.name = u2.name where u1.user_id = 2 /* self-join */",
- "select u.user_id, u.name, e.user_id, e.extra from user u left join user_extra e on u.user_id = e.user_id /* left join */",
- "select u.user_id, u.name, e.user_id, e.extra from user u left join user_extra e on u.name != e.extra where u.user_id = 2 /* cross-shard left join */",
- "select user_id, name from user where name in (select extra from user_extra where user_id = user.user_id) /* correlated subquery */",
- "select count(*), u.user_id, u.name, e.extra from user u join user_extra e on u.user_id = e.user_id /* aggregates */",
- "select u.user_id, u.name, m.music_id, m.user_id from user u join music m on u.user_id = m.music_id where u.user_id = 1 order by u.user_id, u.name, m.user_id /* order by, in spite of odd join */",
- "",
- "insert into music_extra(music_id) values(1) /* keyspace_id back-computed */",
- "insert into music_extra(music_id, keyspace_id) values(1, 1) /* invalid keyspace id */",
+ "insert into product(pname) values ('monitor'), ('keyboard')",
+ "select * from product /* pass-through to unsharded keyspace */",
+ "--",
+ "insert into customer(uname) values('alice'),('bob'),('charlie'),('dan'),('eve') /* multi-shard insert */",
+ "select * from customer where customer_id=1 /* use hash vindex */",
+ "select * from customer where uname='bob' /* scatter */",
+ "update customer set customer_id=10 where customer_id=1 /* error: cannot change primary vindex column */",
+ "delete from customer where uname='eve' /* scatter DML */",
+ "--",
+ "insert into corder(customer_id, product_id, oname) values (1,1,'gift'),(1,2,'gift'),(2,1,'work'),(3,2,'personal'),(4,1,'personal') /* orders are grouped with their customer, observe lookup table changes */",
+ "select * from corder where customer_id=1 /* single-shard select */",
+ "select * from corder where corder_id=1 /* use unique lookup */",
+ "select * from corder where oname='gift' /* use non-unique lookup, also try with 'work' and 'personal' */",
+ "select c.uname, o.oname, o.product_id from customer c join corder o on c.customer_id = o.customer_id where c.customer_id=1 /* local join */",
+ "select c.uname, o.oname, o.product_id from customer c join corder o on c.customer_id = o.customer_id /* scatter local join */",
+ "select c.uname, o.oname, p.pname from customer c join corder o on c.customer_id = o.customer_id join product p on o.product_id = p.product_id /* cross-shard join */",
+ "delete from corder where corder_id=3 /* delete also deletes lookup entries */",
+ "--",
+ "insert into corder_event(corder_id, ename) values(1, 'paid'), (5, 'delivered') /* automatic population of keyspace_id */",
];
$scope.submitQuery()
}
diff --git a/examples/demo/schema/customer/customer_schema.sql b/examples/demo/schema/customer/customer_schema.sql
new file mode 100644
index 00000000000..aeabb800b10
--- /dev/null
+++ b/examples/demo/schema/customer/customer_schema.sql
@@ -0,0 +1,4 @@
+create table customer(customer_id bigint, uname varchar(128), primary key(customer_id));
+create table corder(corder_id bigint, customer_id bigint, product_id bigint, oname varchar(128), primary key(corder_id));
+create table corder_event(corder_event_id bigint, corder_id bigint, ename varchar(128), keyspace_id varbinary(10), primary key(corder_id, corder_event_id));
+create table oname_keyspace_idx(oname varchar(128), corder_id bigint, keyspace_id varbinary(10), primary key(oname, corder_id));
diff --git a/examples/demo/schema/customer/vschema.json b/examples/demo/schema/customer/vschema.json
new file mode 100644
index 00000000000..9c361475227
--- /dev/null
+++ b/examples/demo/schema/customer/vschema.json
@@ -0,0 +1,79 @@
+{
+ "sharded": true,
+ "vindexes": {
+ "hash": {
+ "type": "hash"
+ },
+ "corder_keyspace_idx": {
+ "type": "consistent_lookup_unique",
+ "params": {
+ "table": "product.corder_keyspace_idx",
+ "from": "corder_id",
+ "to": "keyspace_id"
+ },
+ "owner": "corder"
+ },
+ "oname_keyspace_idx": {
+ "type": "consistent_lookup",
+ "params": {
+ "table": "customer.oname_keyspace_idx",
+ "from": "oname,corder_id",
+ "to": "keyspace_id"
+ },
+ "owner": "corder"
+ },
+ "unicode_loose_md5": {
+ "type": "unicode_loose_md5"
+ },
+ "binary": {
+ "type": "binary"
+ }
+ },
+ "tables": {
+ "customer": {
+ "column_vindexes": [{
+ "column": "customer_id",
+ "name": "hash"
+ }],
+ "auto_increment": {
+ "column": "customer_id",
+ "sequence": "product.customer_seq"
+ }
+ },
+ "corder": {
+ "column_vindexes": [{
+ "column": "customer_id",
+ "name": "hash"
+ }, {
+ "column": "corder_id",
+ "name": "corder_keyspace_idx"
+ }, {
+ "columns": ["oname", "corder_id"],
+ "name": "oname_keyspace_idx"
+ }],
+ "auto_increment": {
+ "column": "corder_id",
+ "sequence": "product.corder_seq"
+ }
+ },
+ "corder_event": {
+ "column_vindexes": [{
+ "column": "corder_id",
+ "name": "corder_keyspace_idx"
+ }, {
+ "column": "keyspace_id",
+ "name": "binary"
+ }],
+ "auto_increment": {
+ "column": "corder_event_id",
+ "sequence": "product.corder_event_seq"
+ }
+ },
+ "oname_keyspace_idx": {
+ "column_vindexes": [{
+ "column": "oname",
+ "name": "unicode_loose_md5"
+ }]
+ }
+ }
+}
diff --git a/examples/demo/schema/lookup/lookup_schema.sql b/examples/demo/schema/lookup/lookup_schema.sql
deleted file mode 100644
index 10ef4d3d16a..00000000000
--- a/examples/demo/schema/lookup/lookup_schema.sql
+++ /dev/null
@@ -1,5 +0,0 @@
-create table user_seq(id int, next_id bigint, cache bigint, primary key(id)) comment 'vitess_sequence';
-insert into user_seq(id, next_id, cache) values(0, 1, 3);
-create table music_seq(id int, next_id bigint, cache bigint, primary key(id)) comment 'vitess_sequence';
-insert into music_seq(id, next_id, cache) values(0, 1, 2);
-create table name_keyspace_idx(name varchar(128), keyspace_id binary(8), primary key(name, keyspace_id));
diff --git a/examples/demo/schema/lookup/vschema.json b/examples/demo/schema/lookup/vschema.json
deleted file mode 100644
index b65f1f337ca..00000000000
--- a/examples/demo/schema/lookup/vschema.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
- "sharded": false,
- "tables": {
- "user_seq": {
- "type": "sequence"
- },
- "music_seq": {
- "type": "sequence"
- },
- "name_keyspace_idx": {}
- }
-}
diff --git a/examples/demo/schema/product/product_schema.sql b/examples/demo/schema/product/product_schema.sql
new file mode 100644
index 00000000000..766da1d5838
--- /dev/null
+++ b/examples/demo/schema/product/product_schema.sql
@@ -0,0 +1,8 @@
+create table product(product_id bigint auto_increment, pname varchar(128), primary key(product_id));
+create table customer_seq(id bigint, next_id bigint, cache bigint, primary key(id)) comment 'vitess_sequence';
+insert into customer_seq(id, next_id, cache) values(0, 1, 3);
+create table corder_seq(id bigint, next_id bigint, cache bigint, primary key(id)) comment 'vitess_sequence';
+insert into corder_seq(id, next_id, cache) values(0, 1, 3);
+create table corder_event_seq(id bigint, next_id bigint, cache bigint, primary key(id)) comment 'vitess_sequence';
+insert into corder_event_seq(id, next_id, cache) values(0, 1, 3);
+create table corder_keyspace_idx(corder_id bigint not null auto_increment, keyspace_id varbinary(10), primary key(corder_id));
diff --git a/examples/demo/schema/product/vschema.json b/examples/demo/schema/product/vschema.json
new file mode 100644
index 00000000000..712e8c1a277
--- /dev/null
+++ b/examples/demo/schema/product/vschema.json
@@ -0,0 +1,10 @@
+{
+ "sharded": false,
+ "tables": {
+ "product": {},
+ "customer_seq": { "type": "sequence" },
+ "corder_seq": { "type": "sequence" },
+ "corder_event_seq": { "type": "sequence" },
+ "corder_keyspace_idx": {}
+ }
+}
diff --git a/examples/demo/schema/user/user_schema.sql b/examples/demo/schema/user/user_schema.sql
deleted file mode 100644
index 08c79a9f732..00000000000
--- a/examples/demo/schema/user/user_schema.sql
+++ /dev/null
@@ -1,6 +0,0 @@
-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 name_info(name varchar(128), info varchar(128), primary key(name));
-create table music_keyspace_idx(music_id bigint not null auto_increment, keyspace_id binary(8), primary key(music_id));
diff --git a/examples/demo/schema/user/vschema.json b/examples/demo/schema/user/vschema.json
deleted file mode 100644
index 0cf0f42e6d1..00000000000
--- a/examples/demo/schema/user/vschema.json
+++ /dev/null
@@ -1,102 +0,0 @@
-{
- "sharded": true,
- "vindexes": {
- "hash": {
- "type": "hash"
- },
- "unicode_loose_md5": {
- "type": "unicode_loose_md5"
- },
- "name_keyspace_idx": {
- "type": "lookup",
- "params": {
- "table": "name_keyspace_idx",
- "from": "name",
- "to": "keyspace_id"
- },
- "owner": "user"
- },
- "music_keyspace_idx": {
- "type": "lookup_unique",
- "params": {
- "table": "music_keyspace_idx",
- "from": "music_id",
- "to": "keyspace_id"
- },
- "owner": "music"
- },
- "keyspace_idx": {
- "type": "numeric"
- }
- },
- "tables": {
- "user": {
- "column_vindexes": [
- {
- "column": "user_id",
- "name": "hash"
- },
- {
- "column": "name",
- "name": "name_keyspace_idx"
- }
- ],
- "auto_increment": {
- "column": "user_id",
- "sequence": "user_seq"
- }
- },
- "user_extra": {
- "column_vindexes": [
- {
- "column": "user_id",
- "name": "hash"
- }
- ]
- },
- "music": {
- "column_vindexes": [
- {
- "column": "user_id",
- "name": "hash"
- },
- {
- "column": "music_id",
- "name": "music_keyspace_idx"
- }
- ],
- "auto_increment": {
- "column": "music_id",
- "sequence": "music_seq"
- }
- },
- "music_extra": {
- "column_vindexes": [
- {
- "column": "music_id",
- "name": "music_keyspace_idx"
- },
- {
- "column": "keyspace_id",
- "name": "keyspace_idx"
- }
- ]
- },
- "name_info": {
- "column_vindexes": [
- {
- "column": "name",
- "name": "unicode_loose_md5"
- }
- ]
- },
- "music_keyspace_idx": {
- "column_vindexes": [
- {
- "column": "music_id",
- "name": "hash"
- }
- ]
- }
- }
-}
diff --git a/examples/demo/vschema_ddls.sql b/examples/demo/vschema_ddls.sql
new file mode 100644
index 00000000000..3347fbe2b86
--- /dev/null
+++ b/examples/demo/vschema_ddls.sql
@@ -0,0 +1,29 @@
+-- Unsharded Keyspace
+alter vschema add table product.product;
+
+-- Sharded Keyspace
+alter vschema on customer.customer add vindex hash(customer_id) using hash;
+
+-- Sequences
+alter vschema add sequence product.customer_seq;
+alter vschema on customer.customer add auto_increment customer_id using product.customer_seq;
+
+-- Shared Vindexes and Foreign Keys
+alter vschema on customer.corder add vindex hash(customer_id);
+alter vschema add sequence product.corder_seq;
+alter vschema on customer.corder add auto_increment corder_id using product.corder_seq;
+
+-- Unique Lookup Vindexes
+alter vschema add table product.corder_keyspace_idx;
+alter vschema on customer.corder add vindex corder_keyspace_idx(corder_id) using consistent_lookup_unique with owner=`corder`, table=`product.corder_keyspace_idx`, from=`corder_id`, to=`keyspace_id`;
+
+-- Non-Unique Lookup Vindexes
+alter vschema on customer.oname_keyspace_idx add vindex unicode_loose_md5(oname) using unicode_loose_md5;
+alter vschema on customer.corder add vindex oname_keyspace_idx(oname,corder_id) using consistent_lookup with owner=`corder`, table=`customer.oname_keyspace_idx`, from=`oname,corder_id`, to=`keyspace_id`;
+
+-- Lookup as Primary Vindex
+alter vschema add sequence product.corder_event_seq;
+alter vschema on customer.corder_event add vindex corder_keyspace_idx(corder_id);
+alter vschema on customer.corder_event add auto_increment corder_event_id using product.corder_event_seq;
+-- Reversible Vindexes
+alter vschema on customer.corder_event add vindex `binary`(keyspace_id) using `binary`;
diff --git a/examples/local/101_initial_cluster.sh b/examples/local/101_initial_cluster.sh
index 5d42d908f6e..40c83ad8ec8 100755
--- a/examples/local/101_initial_cluster.sh
+++ b/examples/local/101_initial_cluster.sh
@@ -38,7 +38,7 @@ for i in 100 101 102; do
done
# set one of the replicas to master
-vtctlclient InitShardMaster -force commerce/0 zone1-100
+vtctldclient InitShardPrimary --force commerce/0 zone1-100
# create the schema
vtctlclient ApplySchema -sql-file create_commerce_schema.sql commerce
diff --git a/examples/local/201_customer_tablets.sh b/examples/local/201_customer_tablets.sh
index b53ffb6cd16..bb7ef6d531f 100755
--- a/examples/local/201_customer_tablets.sh
+++ b/examples/local/201_customer_tablets.sh
@@ -25,4 +25,4 @@ for i in 200 201 202; do
CELL=zone1 KEYSPACE=customer TABLET_UID=$i ./scripts/vttablet-up.sh
done
-vtctlclient InitShardMaster -force customer/0 zone1-200
+vtctldclient InitShardPrimary --force customer/0 zone1-200
diff --git a/examples/local/302_new_shards.sh b/examples/local/302_new_shards.sh
index 33f2ec294e1..3aede2b3d6e 100755
--- a/examples/local/302_new_shards.sh
+++ b/examples/local/302_new_shards.sh
@@ -29,5 +29,5 @@ for i in 400 401 402; do
SHARD=80- CELL=zone1 KEYSPACE=customer TABLET_UID=$i ./scripts/vttablet-up.sh
done
-vtctlclient InitShardMaster -force customer/-80 zone1-300
-vtctlclient InitShardMaster -force customer/80- zone1-400
+vtctldclient InitShardPrimary --force customer/-80 zone1-300
+vtctldclient InitShardPrimary --force customer/80- zone1-400
diff --git a/examples/local/README.md b/examples/local/README.md
index c6d8510cc52..030b7299ce5 100644
--- a/examples/local/README.md
+++ b/examples/local/README.md
@@ -5,12 +5,12 @@ This document contains the summary of the commands to be run.
```
+# Setup environment and aliases
+source env.sh
+
# Bring up initial cluster and commerce keyspace
./101_initial_cluster.sh
-# Setup aliases
-source alias.source
-
# Insert and verify data
mysql < ../common/insert_commerce_data.sql
mysql --table < ../common/select_commerce_data.sql
diff --git a/examples/local/env.sh b/examples/local/env.sh
index c0b982a3dbe..e66871478ce 100644
--- a/examples/local/env.sh
+++ b/examples/local/env.sh
@@ -76,6 +76,7 @@ mkdir -p "${VTDATAROOT}/tmp"
alias mysql="command mysql -h 127.0.0.1 -P 15306"
alias vtctlclient="command vtctlclient -server localhost:15999 -log_dir ${VTDATAROOT}/tmp -alsologtostderr"
+alias vtctldclient="command vtctldclient --server localhost:15999"
# Make sure aliases are expanded in non-interactive shell
shopt -s expand_aliases
diff --git a/examples/local/scripts/vtadmin-up.sh b/examples/local/scripts/vtadmin-up.sh
new file mode 100755
index 00000000000..de554b7f880
--- /dev/null
+++ b/examples/local/scripts/vtadmin-up.sh
@@ -0,0 +1,33 @@
+#!/bin/bash
+
+source ./env.sh
+
+log_dir="${VTDATAROOT}/tmp"
+vtadmin_api_port=14200
+
+vtadmin \
+ --addr ":${vtadmin_api_port}" \
+ --http-origin "http://localhost:3000" \
+ --logtostderr \
+ --alsologtostderr \
+ --cluster "id=local,name=local,discovery=staticfile,discovery-staticfile-path=./vtadmin/discovery.json" \
+ > "${log_dir}/vtadmin-api.out" 2>&1 &
+vtadmin_pid=$!
+
+function cleanup() {
+ kill -9 "${vtadmin_pid}"
+
+ echo
+ echo "Shutdown complete!"
+}
+
+trap cleanup INT QUIT TERM
+
+echo "vtadmin-api is up! Logs are in ${log_dir}/vtadmin-api.out, and its PID is ${vtadmin_pid}"
+
+(
+ cd ../../web/vtadmin &&
+ npm install &&
+ REACT_APP_VTADMIN_API_ADDRESS="http://127.0.0.1:${vtadmin_api_port}" \
+ npm run start
+)
diff --git a/examples/local/vtadmin/discovery.json b/examples/local/vtadmin/discovery.json
new file mode 100644
index 00000000000..7aa60f530ff
--- /dev/null
+++ b/examples/local/vtadmin/discovery.json
@@ -0,0 +1,16 @@
+{
+ "vtctlds": [
+ {
+ "host": {
+ "hostname": "localhost:15999"
+ }
+ }
+ ],
+ "vtgates": [
+ {
+ "host": {
+ "hostname": "localhost:15991"
+ }
+ }
+ ]
+}
diff --git a/examples/operator/101_initial_cluster.yaml b/examples/operator/101_initial_cluster.yaml
index 2fe2b020de9..93bae05a60b 100644
--- a/examples/operator/101_initial_cluster.yaml
+++ b/examples/operator/101_initial_cluster.yaml
@@ -8,12 +8,12 @@ metadata:
name: example
spec:
images:
- vtctld: vitess/lite:v9.0.0
- vtgate: vitess/lite:v9.0.0
- vttablet: vitess/lite:v9.0.0
- vtbackup: vitess/lite:v9.0.0
+ vtctld: vitess/lite:v10.0.1
+ vtgate: vitess/lite:v10.0.1
+ vttablet: vitess/lite:v10.0.1
+ vtbackup: vitess/lite:v10.0.1
mysqld:
- mysql56Compatible: vitess/lite:v9.0.0
+ mysql56Compatible: vitess/lite:v10.0.1
mysqldExporter: prom/mysqld-exporter:v0.11.0
cells:
- name: zone1
diff --git a/examples/operator/201_customer_tablets.yaml b/examples/operator/201_customer_tablets.yaml
index 81ec63e8e78..0e9d8f0d893 100644
--- a/examples/operator/201_customer_tablets.yaml
+++ b/examples/operator/201_customer_tablets.yaml
@@ -4,12 +4,12 @@ metadata:
name: example
spec:
images:
- vtctld: vitess/lite:v9.0.0
- vtgate: vitess/lite:v9.0.0
- vttablet: vitess/lite:v9.0.0
- vtbackup: vitess/lite:v9.0.0
+ vtctld: vitess/lite:v10.0.1
+ vtgate: vitess/lite:v10.0.1
+ vttablet: vitess/lite:v10.0.1
+ vtbackup: vitess/lite:v10.0.1
mysqld:
- mysql56Compatible: vitess/lite:v9.0.0
+ mysql56Compatible: vitess/lite:v10.0.1
mysqldExporter: prom/mysqld-exporter:v0.11.0
cells:
- name: zone1
diff --git a/examples/operator/302_new_shards.yaml b/examples/operator/302_new_shards.yaml
index d02c2e41a25..c600aa2edc7 100644
--- a/examples/operator/302_new_shards.yaml
+++ b/examples/operator/302_new_shards.yaml
@@ -4,12 +4,12 @@ metadata:
name: example
spec:
images:
- vtctld: vitess/lite:v9.0.0
- vtgate: vitess/lite:v9.0.0
- vttablet: vitess/lite:v9.0.0
- vtbackup: vitess/lite:v9.0.0
+ vtctld: vitess/lite:v10.0.1
+ vtgate: vitess/lite:v10.0.1
+ vttablet: vitess/lite:v10.0.1
+ vtbackup: vitess/lite:v10.0.1
mysqld:
- mysql56Compatible: vitess/lite:v9.0.0
+ mysql56Compatible: vitess/lite:v10.0.1
mysqldExporter: prom/mysqld-exporter:v0.11.0
cells:
- name: zone1
diff --git a/examples/operator/306_down_shard_0.yaml b/examples/operator/306_down_shard_0.yaml
index 28a4d71d160..c4d4b1c4dbe 100644
--- a/examples/operator/306_down_shard_0.yaml
+++ b/examples/operator/306_down_shard_0.yaml
@@ -4,12 +4,12 @@ metadata:
name: example
spec:
images:
- vtctld: vitess/lite:v9.0.0
- vtgate: vitess/lite:v9.0.0
- vttablet: vitess/lite:v9.0.0
- vtbackup: vitess/lite:v9.0.0
+ vtctld: vitess/lite:v10.0.1
+ vtgate: vitess/lite:v10.0.1
+ vttablet: vitess/lite:v10.0.1
+ vtbackup: vitess/lite:v10.0.1
mysqld:
- mysql56Compatible: vitess/lite:v9.0.0
+ mysql56Compatible: vitess/lite:v10.0.1
mysqldExporter: prom/mysqld-exporter:v0.11.0
cells:
- name: zone1
diff --git a/examples/operator/README.md b/examples/operator/README.md
index 7bdf3d2b808..83f3013dc22 100644
--- a/examples/operator/README.md
+++ b/examples/operator/README.md
@@ -14,7 +14,7 @@ vtctlclient ApplyVSchema -vschema="$(cat vschema_commerce_initial.json)" commerc
# Insert and verify data
mysql < ../common/insert_commerce_data.sql
-mysql --table < select_commerce_data.sql
+mysql --table < ../common/select_commerce_data.sql
# Bring up customer keyspace
kubectl apply -f 201_customer_tablets.yaml
diff --git a/examples/operator/operator.yaml b/examples/operator/operator.yaml
index 916102603c6..9bbadc8221e 100644
--- a/examples/operator/operator.yaml
+++ b/examples/operator/operator.yaml
@@ -5773,7 +5773,7 @@ spec:
fieldPath: metadata.name
- name: OPERATOR_NAME
value: vitess-operator
- image: planetscale/vitess-operator:v2.3.0
+ image: planetscale/vitess-operator:v2.4.1
imagePullPolicy: IfNotPresent
name: vitess-operator
resources:
diff --git a/examples/operator/select_commerce_data.sql b/examples/operator/select_commerce_data.sql
deleted file mode 100644
index dd7f624d7ca..00000000000
--- a/examples/operator/select_commerce_data.sql
+++ /dev/null
@@ -1,8 +0,0 @@
-\! echo 'Using commerce'
-use commerce;
-\! echo 'Customer'
-select * from customer;
-\! echo 'Product'
-select * from product;
-\! echo 'COrder'
-select * from corder;
diff --git a/examples/operator/vtorc_example.yaml b/examples/operator/vtorc_example.yaml
index 63d01861267..ac62a7a296d 100644
--- a/examples/operator/vtorc_example.yaml
+++ b/examples/operator/vtorc_example.yaml
@@ -8,13 +8,13 @@ metadata:
name: example
spec:
images:
- vtctld: vitess/lite:v9.0.0
- vtorc: vitess/lite:v9.0.0
- vtgate: vitess/lite:v9.0.0
- vttablet: vitess/lite:v9.0.0
- vtbackup: vitess/lite:v9.0.0
+ vtctld: vitess/lite:v10.0.1
+ vtorc: vitess/lite:v10.0.1
+ vtgate: vitess/lite:v10.0.1
+ vttablet: vitess/lite:v10.0.1
+ vtbackup: vitess/lite:v10.0.1
mysqld:
- mysql56Compatible: vitess/lite:v9.0.0
+ mysql56Compatible: vitess/lite:v10.0.1
mysqldExporter: prom/mysqld-exporter:v0.11.0
cells:
- name: zone1
diff --git a/examples/region_sharding/README.md b/examples/region_sharding/README.md
index 21c53f1b497..a83bf1e54c4 100644
--- a/examples/region_sharding/README.md
+++ b/examples/region_sharding/README.md
@@ -9,14 +9,12 @@ This document contains the summary of the commands to be run.
# Example:
"region_map": "/home/user/vitess/examples/region_sharding/countries.json",
+# setup environment and aliases
+source env.sh
# Bring up initial cluster and main keyspace (unsharded)
./101_initial_cluster.sh
-# setup aliases
-alias mysql="command mysql -h 127.0.0.1 -P 15306"
-alias vtctlclient="command vtctlclient -server localhost:15999 -log_dir ${VTDATAROOT}/tmp -alsologtostderr"
-
# Insert and verify data
mysql < insert_customers.sql
mysql --table < show_initial_data.sql
diff --git a/go.mod b/go.mod
index f2a1bab366f..fb655e991ed 100644
--- a/go.mod
+++ b/go.mod
@@ -4,6 +4,7 @@ go 1.15
require (
cloud.google.com/go/storage v1.0.0
+ github.com/AdaLogics/go-fuzz-headers v0.0.0-20210330150358-dbd898e17899
github.com/Azure/azure-pipeline-go v0.2.2
github.com/Azure/azure-storage-blob-go v0.10.0
github.com/Azure/go-autorest/autorest v0.10.0 // indirect
@@ -22,17 +23,18 @@ require (
github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f // indirect
github.com/corpix/uarand v0.1.1 // indirect
github.com/cyberdelia/go-metrics-graphite v0.0.0-20161219230853-39f87cc3b432
+ github.com/dave/jennifer v1.4.1
github.com/evanphx/json-patch v4.5.0+incompatible
github.com/fsnotify/fsnotify v1.4.9
github.com/go-martini/martini v0.0.0-20170121215854-22fa46961aab
- github.com/go-sql-driver/mysql v1.5.0
- github.com/gogo/protobuf v1.3.1 // indirect
+ github.com/go-sql-driver/mysql v1.5.1-0.20210202043019-fe2230a8b20c
+ github.com/gogo/protobuf v1.3.1
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 // indirect
github.com/golang/mock v1.3.1
- github.com/golang/protobuf v1.3.2
+ github.com/golang/protobuf v1.3.3
github.com/golang/snappy v0.0.1
- github.com/google/go-cmp v0.4.0
+ github.com/google/go-cmp v0.5.2
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
github.com/google/uuid v1.1.1
github.com/googleapis/gnostic v0.2.0 // indirect
@@ -46,24 +48,21 @@ require (
github.com/hashicorp/go-msgpack v0.5.5
github.com/hashicorp/go-sockaddr v1.0.2 // indirect
github.com/hashicorp/go-uuid v1.0.2 // indirect
- github.com/hashicorp/golang-lru v0.5.3 // indirect
github.com/hashicorp/serf v0.9.2 // indirect
github.com/howeyc/gopass v0.0.0-20190910152052-7cb4b85ec19c
github.com/icrowley/fake v0.0.0-20180203215853-4178557ae428
github.com/imdario/mergo v0.3.6 // indirect
+ github.com/jmoiron/sqlx v1.2.0
github.com/klauspost/compress v1.4.1 // indirect
github.com/klauspost/cpuid v1.2.0 // indirect
github.com/klauspost/pgzip v1.2.4
- github.com/konsorten/go-windows-terminal-sequences v1.0.2 // indirect
github.com/krishicks/yaml-patch v0.0.10
- github.com/looplab/fsm v0.2.0
github.com/magiconair/properties v1.8.1
github.com/martini-contrib/auth v0.0.0-20150219114609-fa62c19b7ae8
github.com/martini-contrib/gzip v0.0.0-20151124214156-6c035326b43f
github.com/martini-contrib/render v0.0.0-20150707142108-ec18f8345a11
github.com/mattn/go-sqlite3 v1.14.0
github.com/minio/minio-go v0.0.0-20190131015406-c8a261de75c1
- github.com/mitchellh/go-ps v1.0.0 // indirect
github.com/mitchellh/go-testing-interface v1.14.0 // indirect
github.com/mitchellh/mapstructure v1.2.3 // indirect
github.com/montanaflynn/stats v0.6.3
@@ -84,6 +83,7 @@ require (
github.com/samuel/go-zookeeper v0.0.0-20200724154423-2164a8ac840e
github.com/satori/go.uuid v1.2.0 // indirect
github.com/sjmudd/stopwatch v0.0.0-20170613150411-f380bf8a9be1
+ github.com/skeema/tengo v0.0.0-00010101000000-000000000000
github.com/soheilhy/cmux v0.1.4
github.com/spf13/cobra v1.1.1
github.com/spf13/pflag v1.0.5
@@ -100,12 +100,12 @@ require (
golang.org/x/lint v0.0.0-20190930215403-16217165b5de
golang.org/x/net v0.0.0-20201021035429-f5854403a974
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45
- golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9
+ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a
golang.org/x/text v0.3.3
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4
golang.org/x/tools v0.0.0-20201202200335-bef1c476418a
google.golang.org/api v0.13.0
- google.golang.org/grpc v1.24.0
+ google.golang.org/grpc v1.29.1
gopkg.in/DataDog/dd-trace-go.v1 v1.17.0
gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d // indirect
gopkg.in/gcfg.v1 v1.2.3
@@ -117,6 +117,12 @@ require (
k8s.io/apiextensions-apiserver v0.17.3
k8s.io/apimachinery v0.17.3
k8s.io/client-go v0.17.3
- k8s.io/utils v0.0.0-20191114184206-e782cd3c129f
+ k8s.io/code-generator v0.17.3
sigs.k8s.io/yaml v1.1.0
)
+
+replace github.com/skeema/tengo => github.com/planetscale/tengo v0.9.6-ps.v1
+
+// (NOTE:@ajm188) Something we depend on depends on moby/term, and that version
+// of moby/term has this issue: https://github.com/moby/term/issues/15.
+replace golang.org/x/sys => golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6
diff --git a/go.sum b/go.sum
index b2bd789c34f..5815ed537bd 100644
--- a/go.sum
+++ b/go.sum
@@ -1,10 +1,10 @@
+bazil.org/fuse v0.0.0-20160811212531-371fbbdaa898/go.mod h1:Xbm+BRKSBEpa4q4hTSxohYNQpsxXPbPry4JJWOB3LB8=
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
cloud.google.com/go v0.41.0/go.mod h1:OauMR7DV8fzvZIl2qg6rkaIhD/vmgk4iwEw/h6ercmg=
cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU=
cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY=
-cloud.google.com/go v0.45.1 h1:lRi0CHyU+ytlvylOlFKKq0af6JncuyoRh1J+QJBqQx0=
cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc=
cloud.google.com/go v0.46.3 h1:AVXDdKsrtX33oR9fbCMu/+c1o8Ofjq6Ku/MInaLVg5Y=
cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0=
@@ -18,17 +18,18 @@ cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2k
cloud.google.com/go/storage v1.0.0 h1:VV2nUM3wwLLGh9lSABFgZMjInyUbJeaRSE64WuAIQ+4=
cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
+github.com/AdaLogics/go-fuzz-headers v0.0.0-20210330150358-dbd898e17899 h1:Cm0cjER/2C+3BEuRBARZ+1HG+jwU5jbVkYysA7zE2H8=
+github.com/AdaLogics/go-fuzz-headers v0.0.0-20210330150358-dbd898e17899/go.mod h1:CzsSbkDixRphAF5hS6wbMKq0eI6ccJRb7/A0M6JBnwg=
github.com/Azure/azure-pipeline-go v0.2.2 h1:6oiIS9yaG6XCCzhgAgKFfIWyo4LLCiDhZot6ltoThhY=
github.com/Azure/azure-pipeline-go v0.2.2/go.mod h1:4rQ/NZncSvGqNkkOsNpOU1tgoNuIlp9AfUH5G1tvCHc=
github.com/Azure/azure-storage-blob-go v0.10.0 h1:evCwGreYo3XLeBV4vSxLbLiYb6e0SzsJiXQVRGsRXxs=
github.com/Azure/azure-storage-blob-go v0.10.0/go.mod h1:ep1edmW+kNQx4UfWM9heESNmQdijykocJ0YOxmMX8SE=
+github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 h1:w+iIsaOQNcT7OZ575w+acHgRric5iCyQh+xv+KJ4HB8=
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8=
-github.com/Azure/go-autorest/autorest v0.9.0 h1:MRvx8gncNaXJqOoLmhNjUAKh33JJF8LyxPhomEtOsjs=
github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI=
github.com/Azure/go-autorest/autorest v0.10.0 h1:mvdtztBqcL8se7MdrUweNieTNi4kfNG6GOJuurQJpuY=
github.com/Azure/go-autorest/autorest v0.10.0/go.mod h1:/FALq9T/kS7b5J5qsQ+RSTUdAmGFqi0vUdVNNx8q630=
github.com/Azure/go-autorest/autorest/adal v0.5.0/go.mod h1:8Z9fGy2MpX0PvDjB1pEgQTmVqjGhiHBW7RJJEciWzS0=
-github.com/Azure/go-autorest/autorest/adal v0.8.2 h1:O1X4oexUxnZCaEUGsvMnr8ZGj8HI37tNezwY4npRqA0=
github.com/Azure/go-autorest/autorest/adal v0.8.2/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q=
github.com/Azure/go-autorest/autorest/adal v0.8.3 h1:O1AGG9Xig71FxdX9HO5pGNyZ7TbSyHaVg+5eJO/jSGw=
github.com/Azure/go-autorest/autorest/adal v0.8.3/go.mod h1:ZjhuQClTqx435SRJ2iMlOxPYt3d2C/T/7TiQCVZSn3Q=
@@ -51,13 +52,17 @@ github.com/BurntSushi/xgbutil v0.0.0-20160919175755-f7c97cef3b4e h1:4ZrkT/RzpnRO
github.com/BurntSushi/xgbutil v0.0.0-20160919175755-f7c97cef3b4e/go.mod h1:uw9h2sd4WWHOPdJ13MQpwK5qYWKYDumDqxWWIknEQ+k=
github.com/DataDog/datadog-go v2.2.0+incompatible h1:V5BKkxACZLjzHjSgBbr2gvLA2Ae49yhc6CSY7MLy5k4=
github.com/DataDog/datadog-go v2.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ=
-github.com/GeertJohan/go.incremental v1.0.0 h1:7AH+pY1XUgQE4Y1HcXYaMqAI0m9yrFqo/jt0CW30vsg=
github.com/GeertJohan/go.incremental v1.0.0/go.mod h1:6fAjUhbVuX1KcMD3c8TEgVUqmo4seqhv0i0kdATSkM0=
github.com/GeertJohan/go.rice v1.0.0 h1:KkI6O9uMaQU3VEKaj01ulavtF7o1fWT7+pk/4voiMLQ=
github.com/GeertJohan/go.rice v1.0.0/go.mod h1:eH6gbSOAUv07dQuZVnBmoDP8mgsM1rtixis4Tib9if0=
github.com/Masterminds/glide v0.13.2/go.mod h1:STyF5vcenH/rUqTEv+/hBXlSTo7KYwg2oc2f4tzPWic=
github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
github.com/Masterminds/vcs v1.13.0/go.mod h1:N09YCmOQr6RLxC6UNHzuVwAdodYbbnycGHSmwVJjcKA=
+github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw=
+github.com/Microsoft/go-winio v0.4.15-0.20200113171025-3fe6c5262873 h1:93nQ7k53GjoMQ07HVP8g6Zj1fQZDDj7Xy2VkNNtvX8o=
+github.com/Microsoft/go-winio v0.4.15-0.20200113171025-3fe6c5262873/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw=
+github.com/Microsoft/hcsshim v0.8.9 h1:VrfodqvztU8YSOvygU+DN1BGaSGxmrNfqOv5oOuX2Bk=
+github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8=
github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ=
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
github.com/PuerkitoBio/goquery v1.5.1 h1:PSPBGne8NIUWw+/7vFBV+kG2J/5MOjbzc7154OaKCSE=
@@ -67,8 +72,9 @@ github.com/PuerkitoBio/purell v1.1.0/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbt
github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
github.com/PuerkitoBio/urlesc v0.0.0-20160726150825-5bd2802263f2/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
+github.com/VividCortex/mysqlerr v0.0.0-20170204212430-6c6b55f8796f h1:HR5nRmUQgXrwqZOwZ2DAc/aCi3Bu3xENpspW935vxu0=
+github.com/VividCortex/mysqlerr v0.0.0-20170204212430-6c6b55f8796f/go.mod h1:f3HiCrHjHBdcm6E83vGaXh1KomZMA2P6aeo3hKx/wg0=
github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM=
-github.com/akavel/rsrc v0.8.0 h1:zjWn7ukO9Kc5Q62DOJCcxGpXC18RawVtYAGdz2aLlfw=
github.com/akavel/rsrc v0.8.0/go.mod h1:uLoCtb9J+EyAqh+26kdrTgmzRBFPGOolLWKpdxkKq+c=
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751 h1:JYp7IbQjafoB+tBA3gMyHYHrpOtNuDiK/uB5uXxq5wM=
@@ -81,7 +87,6 @@ github.com/andybalholm/cascadia v1.1.0 h1:BuuO6sSfQNFRu1LppgbD25Hr2vLYW25JvxHs5z
github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
github.com/aquarapid/vaultlib v0.5.1 h1:vuLWR6bZzLHybjJBSUYPgZlIp6KZ+SXeHLRRYTuk6d4=
github.com/aquarapid/vaultlib v0.5.1/go.mod h1:yT7AlEXtuabkxylOc/+Ulyp18tff1+QjgNLTnFWTlOs=
-github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e h1:QEF07wC0T1rKkctt1RINW/+RMTVmiwxETico2l3gxJA=
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6 h1:G1bPvciwNyF7IUmKXNt9Ak3m6u9DE1rF+RmtIkBpVdA=
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
@@ -89,7 +94,6 @@ github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmV
github.com/armon/go-metrics v0.0.0-20190430140413-ec5e00d3c878 h1:EFSB7Zo9Eg91v7MJPVsifUysc/wPdN+NOnVe6bWbdBM=
github.com/armon/go-metrics v0.0.0-20190430140413-ec5e00d3c878/go.mod h1:3AMJUQhVx52RsWOnlkpikZr01T/yAVN2gn0861vByNg=
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
-github.com/armon/go-radix v1.0.0 h1:F4z6KzEeeQIMeLFa97iZU6vupzoecKdU5TX24SNppXI=
github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
@@ -97,12 +101,10 @@ github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:l
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY=
github.com/aws/aws-sdk-go v1.28.8 h1:kPGnElMdW0GDc54Giy1lcE/3gAr2Gzl6cMjYKoBNFhw=
github.com/aws/aws-sdk-go v1.28.8/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
-github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0=
github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q=
github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8=
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
-github.com/bgentry/speakeasy v0.1.0 h1:ByYyxL9InA1OWqxJqqp2A5pYHUrCiAL6K3J+LKSsQkY=
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
@@ -110,29 +112,39 @@ github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdn
github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk=
github.com/buger/jsonparser v0.0.0-20200322175846-f7e751efca13 h1:+qUNY4VRkEH46bLUwxCyUU+iOGJMQBVibAaYzWiwWcg=
github.com/buger/jsonparser v0.0.0-20200322175846-f7e751efca13/go.mod h1:tgcrVJ81GPSF0mz+0nu1Xaz0fazGPrmmJfJtxjbHhUQ=
+github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU=
github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko=
github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc=
github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY=
github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs=
-github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible h1:C29Ae4G5GtYyYMm1aztcyj/J5ckgJm2zwdDajFbx1NY=
github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag=
-github.com/circonus-labs/circonusllhist v0.1.3 h1:TJH+oke8D16535+jHExHj4nQvzlZrj7ug5D7I/orNUA=
github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I=
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
+github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8=
github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd h1:qMd81Ts1T2OTKmB4acZcyKaMtRnY5Y44NuXGX2GFJ1w=
github.com/codahale/hdrhistogram v0.0.0-20161010025455-3a0bb77429bd/go.mod h1:sE/e/2PUdi/liOCUjSTXgM1o87ZssimdTWN964YiIeI=
github.com/codegangsta/cli v1.20.0/go.mod h1:/qJNoX69yVSKu5o4jLyXAENLRyk1uhi7zkbQ3slBdOA=
github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0 h1:sDMmm+q/3+BukdIpxwO365v/Rbspp2Nt5XntgQRXq8Q=
github.com/codegangsta/inject v0.0.0-20150114235600-33e0aa1cb7c0/go.mod h1:4Zcjuz89kmFXt9morQgcfYZAYZ5n8WHjt81YYWIwtTM=
+github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko=
+github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw=
+github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA=
+github.com/containerd/containerd v1.3.4 h1:3o0smo5SKY7H6AJCmJhsnCjR2/V2T8VmiHt7seN2/kI=
+github.com/containerd/containerd v1.3.4/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA=
+github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y=
+github.com/containerd/continuity v0.0.0-20200413184840-d3ef23f19fbb h1:nXPkFq8X1a9ycY3GYQpFNxHh3j2JgY7zDZfq2EXMIzk=
+github.com/containerd/continuity v0.0.0-20200413184840-d3ef23f19fbb/go.mod h1:Dq467ZllaHgAtVp4p1xUQWBrFXR9s/wyoTpG8zOJGkY=
+github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI=
+github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0=
+github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o=
+github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc=
github.com/coreos/bbolt v1.3.2 h1:wZwiHHUieZCquLkDL0B8UhzreNWsPHooDAG3q34zk0s=
github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
-github.com/coreos/etcd v3.3.10+incompatible h1:jFneRYjIvLMLhDLCzuTuU4rSJUjRplcJQ7pD7MnhC04=
github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
github.com/coreos/etcd v3.3.13+incompatible h1:8F3hqu9fGYLBifCmRCJsicFqDx/D68Rt3q1JMazcgBQ=
github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk=
-github.com/coreos/go-oidc v2.1.0+incompatible h1:sdJrfw8akMnCuUlaZU3tE/uYXFgfqom8DBE9so9EBsM=
github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc=
github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM=
@@ -150,10 +162,14 @@ github.com/corpix/uarand v0.1.1/go.mod h1:SFKZvkcRoLqVRFZ4u25xPmp6m9ktANfbpXZ7SJ
github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=
github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY=
+github.com/creack/pty v1.1.9 h1:uDmaGzcdjhF4i/plgjmEsriH11Y0o7RKapEf/LDaM3w=
+github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/cyberdelia/go-metrics-graphite v0.0.0-20161219230853-39f87cc3b432 h1:M5QgkYacWj0Xs8MhpIK/5uwU02icXpEoSo9sM2aRCps=
github.com/cyberdelia/go-metrics-graphite v0.0.0-20161219230853-39f87cc3b432/go.mod h1:xwIwAxMvYnVrGJPe2FKx5prTrnAjGOD8zvDOnxnrrkM=
github.com/daaku/go.zipexe v1.0.0 h1:VSOgZtH418pH9L16hC/JrgSNJbbAL26pj7lmD1+CGdY=
github.com/daaku/go.zipexe v1.0.0/go.mod h1:z8IiR6TsVLEYKwXAoE/I+8ys/sDkgTzSL0CLnGVd57E=
+github.com/dave/jennifer v1.4.1 h1:XyqG6cn5RQsTj3qlWQTKlRGAyrTcsk1kUmWdZBzRjDw=
+github.com/dave/jennifer v1.4.1/go.mod h1:7jEdnm+qBcxl8PC0zyp7vxcpSRnzXSt9r39tpTVGlwA=
github.com/davecgh/go-spew v0.0.0-20151105211317-5215b55f46b2/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
@@ -161,8 +177,15 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
+github.com/docker/distribution v2.7.1+incompatible h1:a5mlkVzth6W5A4fOsS3D2EO5BUmsJpcB+cRlLU7cSug=
+github.com/docker/distribution v2.7.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
github.com/docker/docker v0.7.3-0.20190327010347-be7ac8be2ae0/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
+github.com/docker/docker v17.12.0-ce-rc1.0.20200505174321-1655290016ac+incompatible h1:ZxJX4ZSNg1LORBsStUojbrLfkrE3Ut122XhzyZnN110=
+github.com/docker/docker v17.12.0-ce-rc1.0.20200505174321-1655290016ac+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
+github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ=
+github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
+github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw=
github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/docker/spdystream v0.0.0-20160310174837-449fdfce4d96/go.mod h1:Qh8CwZgvJUkLughtfhJv5dyTYa91l1fOUCrgjqmcifM=
github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
@@ -170,6 +193,9 @@ github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25Kn
github.com/elazarl/goproxy v0.0.0-20170405201442-c4fc26588b6e/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc=
github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs=
+github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
+github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
+github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
github.com/evanphx/json-patch v4.2.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
github.com/evanphx/json-patch v4.5.0+incompatible h1:ouOWdg56aJriqS0huScTkVXPC5IcNrDCXZ6OoTAWu7M=
github.com/evanphx/json-patch v4.5.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
@@ -178,10 +204,11 @@ github.com/fatih/color v1.9.0 h1:8xPHl4/q1VyqGIPif1F+1V3Y3lSmrq01EabUW3CoW5s=
github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU=
github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ=
github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
-github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV9I=
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
+github.com/fsouza/go-dockerclient v1.6.6 h1:9e3xkBrVkPb81gzYq23i7iDUEd6sx2ooeJA/gnYU6R4=
+github.com/fsouza/go-dockerclient v1.6.6/go.mod h1:3/oRIWoe7uT6bwtAayj/EmJmepBjeL4pYvt7ZxC7Rnk=
github.com/ghodss/yaml v0.0.0-20150909031657-73d445a93680/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk=
github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04=
@@ -238,11 +265,12 @@ github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh
github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4=
github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA=
github.com/go-openapi/validate v0.19.5/go.mod h1:8DJv2CVJQ6kGNpFW6eV9N3JviE1C85nY1c2z52x1Gk4=
-github.com/go-sql-driver/mysql v1.5.0 h1:ozyZYNQW3x3HtqT1jira07DN2PArx2v7/mN66gGcHOs=
-github.com/go-sql-driver/mysql v1.5.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
+github.com/go-sql-driver/mysql v1.4.0/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w=
+github.com/go-sql-driver/mysql v1.5.1-0.20210202043019-fe2230a8b20c h1:yUT3Ygm3yXBD2qLPxYRDBcnEz0MHgQ4TJ/87C/wKnWA=
+github.com/go-sql-driver/mysql v1.5.1-0.20210202043019-fe2230a8b20c/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg=
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
+github.com/godbus/dbus v0.0.0-20190422162347-ade71ed3457e/go.mod h1:bBOAhwG1umN6/6ZUMtDFBMQR8jRg9O75tm9K00oMsK4=
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
-github.com/gogo/protobuf v1.2.1 h1:/s5zKNz0uPFCZ5hddgPdo2TK2TVrUNMn0OOX8/aZMTE=
github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
github.com/gogo/protobuf v1.2.2-0.20190723190241-65acae22fc9d/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls=
@@ -260,21 +288,21 @@ github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFU
github.com/golang/protobuf v0.0.0-20161109072736-4bd1920723d7/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
-github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs=
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
+github.com/golang/protobuf v1.3.3 h1:gyjaxf+svBWX08ZjK86iN9geUJF0H6gp2IRKX6Nf6/I=
+github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4=
github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/btree v1.0.0 h1:0udJVsspx3VBr5FwtLhQQtuAsVc79tTq0ocGIPAU6qo=
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
-github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY=
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
-github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4=
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
+github.com/google/go-cmp v0.5.2 h1:X2ev0eStA3AbceY54o37/0PQ/UWqKEiiO2dKL5OPaFM=
+github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
github.com/google/go-github/v27 v27.0.4/go.mod h1:/0Gr8pJ55COkmv+S/yPKCczSkUPIM/LnFyubufRNIS0=
-github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk=
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
github.com/google/gofuzz v0.0.0-20161122191042-44d81051d367/go.mod h1:HP5RmnzzSNb993RKQDq4+1A4ia9nllfqcQFTQJedwGI=
github.com/google/gofuzz v1.0.0 h1:A8PeW59pxE9IoFRqBp37U+mSNaQoZ46F1f0f863XSXw=
@@ -286,7 +314,6 @@ github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OI
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
-github.com/google/uuid v1.0.0 h1:b4Gk+7WdP/d3HZH8EJsZpvV7EtDOgaZLtnaNGIu1adA=
github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
@@ -296,7 +323,6 @@ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5m
github.com/googleapis/gnostic v0.0.0-20170729233727-0c5108395e2d/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=
github.com/googleapis/gnostic v0.2.0 h1:l6N3VoaVzTncYYW+9yOz2LJJammFZGBO13sqgEhpy9g=
github.com/googleapis/gnostic v0.2.0/go.mod h1:sJBsCZ4ayReDTBIg8b9dl28c5xFWyhBTVRp3pOg5EKY=
-github.com/gophercloud/gophercloud v0.1.0 h1:P/nh25+rzXouhytV2pUHBb65fnds26Ghl8/391+sT5o=
github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8=
github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY=
github.com/gopherjs/gopherjs v0.0.0-20181103185306-d547d1d9531e h1:JKmoR8x90Iww1ks85zJ1lfDGgIiMDuIptTOhJq+zKyg=
@@ -306,7 +332,6 @@ github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv
github.com/gorilla/mux v1.8.0 h1:i40aqfkR1h2SlN9hojwV5ZA91wcXFOvkdNIeFDP5koI=
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
github.com/gorilla/websocket v0.0.0-20170926233335-4201258b820c/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
-github.com/gorilla/websocket v1.4.0 h1:WDFjx/TMzVgy9VdMMQi2K2Emtwi2QcUQsztZ/zLaH/Q=
github.com/gorilla/websocket v1.4.0/go.mod h1:E7qHFY5m1UJ88s3WnNqhKjPHQ0heANvMoAMk2YaljkQ=
github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
@@ -328,20 +353,17 @@ github.com/hashicorp/consul/sdk v0.5.0 h1:WC4594Wp/LkEeML/OdQKEC1yqBmEYkRp6i7X5u
github.com/hashicorp/consul/sdk v0.5.0/go.mod h1:fY08Y9z5SvJqevyZNy6WWPXiG3KwBPAvlcdx16zZ0fM=
github.com/hashicorp/errwrap v1.0.0 h1:hLrqtEDnRye3+sgx6z4qVLNuviH3MR5aQ0ykNJa/UYA=
github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4=
-github.com/hashicorp/go-cleanhttp v0.5.0 h1:wvCrVc9TjDls6+YGAF2hAifE1E5U1+b4tH6KdvN3Gig=
github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
github.com/hashicorp/go-cleanhttp v0.5.1 h1:dH3aiDG9Jvb5r5+bYHsikaOUIpcM0xvgMXVoDkXMzJM=
github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
github.com/hashicorp/go-hclog v0.12.0 h1:d4QkX8FRTYaKaCZBoXYY8zJX2BXjWxurN/GA2tkrmZM=
github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ=
-github.com/hashicorp/go-immutable-radix v1.0.0 h1:AKDB1HM5PWEA7i4nhcpwOrO2byshxBjXVn/J/3+z5/0=
github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
github.com/hashicorp/go-immutable-radix v1.1.0 h1:vN9wG1D6KG6YHRTWr8512cxGOVgTMEfgEdSj/hr8MPc=
github.com/hashicorp/go-immutable-radix v1.1.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60=
github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=
github.com/hashicorp/go-msgpack v0.5.5 h1:i9R9JSrqIz0QVLz3sz+i3YJdT7TTSLcfLLzJi9aZTuI=
github.com/hashicorp/go-msgpack v0.5.5/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM=
-github.com/hashicorp/go-multierror v1.0.0 h1:iVjPR7a6H0tWELX5NxNe7bYopibicUzc7uPribsnS6o=
github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk=
github.com/hashicorp/go-multierror v1.1.0 h1:B9UzwGQJehnUY1yNrnwREHc3fGbC2xefo8g4TbElacI=
github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA=
@@ -349,27 +371,21 @@ github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es
github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU=
github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc=
github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8=
-github.com/hashicorp/go-sockaddr v1.0.0 h1:GeH6tui99pF4NJgfnhp+L6+FfobzVW3Ah46sLo0ICXs=
github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU=
github.com/hashicorp/go-sockaddr v1.0.2 h1:ztczhD1jLxIRjVejw8gFomI1BQZOe2WoVOu0SyteCQc=
github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A=
-github.com/hashicorp/go-syslog v1.0.0 h1:KaodqZuhUoZereWVIYmpUgZysurB1kBLX2j0MwMrUAE=
github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4=
github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
-github.com/hashicorp/go-uuid v1.0.1 h1:fv1ep09latC32wFoVwnqcnKJGnMSdBanPczbHAYm1BE=
github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE=
github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90=
github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
+github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU=
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
-github.com/hashicorp/golang-lru v0.5.3 h1:YPkqC67at8FYaadspW/6uE0COsBxS2656RLEr8Bppgk=
-github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
-github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ=
-github.com/hashicorp/mdns v1.0.1 h1:XFSOubp8KWB+Jd2PDyaX5xUd5bhSP/+pTDZVDMzZJM8=
github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY=
github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=
github.com/hashicorp/memberlist v0.2.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE=
@@ -390,10 +406,11 @@ github.com/imdario/mergo v0.3.6 h1:xTNEAn+kxVO7dTZGu0CegyqKZmoWFI0rF8UxjlB2d28=
github.com/imdario/mergo v0.3.6/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA=
github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM=
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
-github.com/jessevdk/go-flags v1.4.0 h1:4IU2WS7AumrZ/40jfhf4QVDMsQwqA7VEHozFRrGARJA=
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af h1:pmfjZENx5imkbgOkpRUYLnmbU7UEFbjtDA2hxJ1ichM=
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
+github.com/jmoiron/sqlx v1.2.0 h1:41Ip0zITnmWNR/vHV+S4m+VoUivnWY5E4OJfLZjCJMA=
+github.com/jmoiron/sqlx v1.2.0/go.mod h1:1FEQNm3xlJgrMD+FBdI9+xvCksHtbpVBBw5dYhBSsks=
github.com/jonboulle/clockwork v0.1.0 h1:VKV+ZcuP6l3yW9doeqz6ziZGgcynBVQO+obU0+0hcPo=
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
github.com/json-iterator/go v0.0.0-20180612202835-f2b4162afba3/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
@@ -404,14 +421,12 @@ github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGn
github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024 h1:rBMNdlhTLzJjJSDIjNEXX1Pz3Hmwmz91v+zycvx9PJc=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
-github.com/jtolds/gls v4.2.1+incompatible h1:fSuqC+Gmlu6l/ZYAoZzx2pyucC8Xza35fpRVWLVmUEE=
github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo=
github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU=
github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w=
github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
-github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg=
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
github.com/klauspost/compress v1.4.1 h1:8VMb5+0wMgdBykOV96DwNwKFQ+WTI4pzYURP99CcB9E=
github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
@@ -421,10 +436,7 @@ github.com/klauspost/pgzip v1.2.4 h1:TQ7CNpYKovDOmqzRHKxJh0BeaBI7UdQZYc6p7pMQh1A
github.com/klauspost/pgzip v1.2.4/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
github.com/konsorten/go-windows-terminal-sequences v1.0.1 h1:mweAR1A6xJ3oS2pRaGiHgQ4OO8tzTaLawm8vnODuwDk=
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
-github.com/konsorten/go-windows-terminal-sequences v1.0.2 h1:DB17ag19krx9CFsz4o3enTrPXyIXCl+2iCXH/aMAp9s=
-github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
-github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI=
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs=
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
@@ -434,9 +446,9 @@ github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
github.com/krishicks/yaml-patch v0.0.10 h1:H4FcHpnNwVmw8u0MjPRjWyIXtco6zM2F78t+57oNM3E=
github.com/krishicks/yaml-patch v0.0.10/go.mod h1:Sm5TchwZS6sm7RJoyg87tzxm2ZcKzdRE4Q7TjNhPrME=
-github.com/looplab/fsm v0.2.0 h1:M8hf5EF4AYLcT1FNKVUX8nu7D0xfp291iGeuigSxfrw=
-github.com/looplab/fsm v0.2.0/go.mod h1:p+IElwgCnAByqr2DWMuNbPjgMwqcHvTRZZn3dvKEke0=
-github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY=
+github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
+github.com/lib/pq v1.2.0 h1:LXpIM/LZ5xGFhOpXAQUIMM1HdyqzVYM13zNdjCEEcA0=
+github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4=
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
@@ -452,7 +464,6 @@ github.com/martini-contrib/gzip v0.0.0-20151124214156-6c035326b43f h1:wVDxEVZP1e
github.com/martini-contrib/gzip v0.0.0-20151124214156-6c035326b43f/go.mod h1:jhUB0rZB2TPWqy0yGugKRRictO591eSO7If7O4MfCaA=
github.com/martini-contrib/render v0.0.0-20150707142108-ec18f8345a11 h1:YFh+sjyJTMQSYjKwM4dFKhJPJC/wfo98tPUc17HdoYw=
github.com/martini-contrib/render v0.0.0-20150707142108-ec18f8345a11/go.mod h1:Ah2dBMoxZEqk118as2T4u4fjfXarE0pPnMJaArZQZsI=
-github.com/mattn/go-colorable v0.0.9 h1:UVL0vNpWh04HeJXV0KLcaT7r06gOH2l4OW6ddYRUIY4=
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
github.com/mattn/go-colorable v0.1.6 h1:6Su7aK7lXmJ/U79bYtBjLNaha4Fs1Rg9plHpcH+vvnE=
@@ -460,37 +471,31 @@ github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope
github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d h1:oNAwILwmgWKFpuU+dXvI6dl9jG2mAWAZLX3r9s0PPiw=
github.com/mattn/go-ieproxy v0.0.0-20190702010315-6dee0af9227d/go.mod h1:31jz6HNzdxOmlERGGEc4v/dMssOfmp2p5bT/okiKFFc=
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
-github.com/mattn/go-isatty v0.0.4 h1:bnP0vzxcAdeI1zdubAl5PjU6zsERjGZb7raWodagDYs=
github.com/mattn/go-isatty v0.0.4/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84=
github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE=
github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
-github.com/mattn/go-runewidth v0.0.2 h1:UnlwIPBGaTZfPQ6T1IGzPI0EkYAQmT9fAEJ/poFC63o=
github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.7 h1:Ei8KR0497xHyKJPAv59M1dkC+rOZCMBJ+t3fZ+twI54=
github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
+github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
+github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc=
github.com/mattn/go-sqlite3 v1.14.0 h1:mLyGNKR8+Vv9CAU7PphKa2hkEqxxhn8i32J6FPj1/QA=
github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus=
github.com/matttproud/golang_protobuf_extensions v1.0.1 h1:4hp9jkHxhMHkqkrB3Ix0jegS5sx/RkqARlsWZ6pIwiU=
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
-github.com/mch1307/vaultlib v0.5.0 h1:+tI8YCG033aVI+kAKwo0fwrUylFs+wO6DB7DM5qXJzU=
-github.com/mch1307/vaultlib v0.5.0/go.mod h1:phFbO1oIDL1xTqUrNXbrAG0VdcYEKP8TNa9FJd7hFic=
-github.com/miekg/dns v1.0.14 h1:9jZdLNd/P4+SfEJ0TNyxYpsK8N4GtfylBLqtbYN1sbA=
github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
github.com/miekg/dns v1.1.26 h1:gPxPSwALAeHJSjarOs00QjVdV9QoBvc1D2ujQUr5BzU=
github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso=
github.com/minio/minio-go v0.0.0-20190131015406-c8a261de75c1 h1:jw16EimP5oAEM/2wt+SiEUov/YDyTCTDuPtIKgQIvk0=
github.com/minio/minio-go v0.0.0-20190131015406-c8a261de75c1/go.mod h1:vuvdOZLJuf5HmJAJrKV64MmozrSsk+or0PB5dzdfspg=
github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
-github.com/mitchellh/cli v1.1.0 h1:tEElEatulEHDeedTxwckzyYMA5c86fbmNIUL1hBIiTg=
github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI=
github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
-github.com/mitchellh/go-ps v1.0.0 h1:i6ampVEEF4wQFF+bkYfwYgY+F/uYJDktmvLPf7qIgjc=
-github.com/mitchellh/go-ps v1.0.0/go.mod h1:J4lOc8z8yJs6vUwklHw2XEIiT4z4C40KtWVN3nvg8Pg=
github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI=
github.com/mitchellh/go-testing-interface v1.14.0 h1:/x0XQ6h+3U3nAyk1yx+bHPURrKa9sVVvYbuqZ7pIAtI=
github.com/mitchellh/go-testing-interface v1.14.0/go.mod h1:gfgS7OtZj6MA4U1UrDRp04twqAjfvlZyCfX3sDjEym8=
@@ -498,10 +503,15 @@ github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUb
github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=
github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY=
github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
-github.com/mitchellh/mapstructure v1.1.2 h1:fmNYVwqnSfB9mZU6OS2O6GsXM+wcskZDuKQzvN1EDeE=
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
github.com/mitchellh/mapstructure v1.2.3 h1:f/MjBEBDLttYCGfRaKBbKSRVF5aV2O6fnBpzknuE3jU=
github.com/mitchellh/mapstructure v1.2.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
+github.com/moby/sys/mount v0.1.0 h1:Ytx78EatgFKtrqZ0BvJ0UtJE472ZvawVmil6pIfuCCU=
+github.com/moby/sys/mount v0.1.0/go.mod h1:FVQFLDRWwyBjDTBNQXDlWnSFREqOo3OKX9aqhmeoo74=
+github.com/moby/sys/mountinfo v0.1.0 h1:r8vMRbMAFEAfiNptYVokP+nfxPJzvRuia5e2vzXtENo=
+github.com/moby/sys/mountinfo v0.1.0/go.mod h1:w2t2Avltqx8vE7gX5l+QiBKxODu2TX0+Syr3h52Tw4o=
+github.com/moby/term v0.0.0-20200429084858-129dac9f73f6 h1:3Y9aosU6S5Bo8GYH0s+t1ej4m30GuUKvQ3c9ZLqdL28=
+github.com/moby/term v0.0.0-20200429084858-129dac9f73f6/go.mod h1:or9wGItza1sRcM4Wd3dIv8DsFHYQuFsMHEdxUIlUxms=
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -511,15 +521,17 @@ github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
github.com/montanaflynn/stats v0.6.3 h1:F8446DrvIF5V5smZfZ8K9nrmmix0AFgevPdLruGOmzk=
github.com/montanaflynn/stats v0.6.3/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc=
+github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
+github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
github.com/munnerz/goautoneg v0.0.0-20120707110453-a547fc61f48d/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw=
github.com/ngdinhtoan/glide-cleanup v0.2.0/go.mod h1:UQzsmiDOb8YV3nOsCxK/c9zPpCZVNoHScRE3EO9pVMM=
-github.com/nkovacs/streamquote v0.0.0-20170412213628-49af9bddb229 h1:E2B8qYyeSgv5MXpmzZXRNp8IAQ4vjxIjhpAf5hv/tAg=
github.com/nkovacs/streamquote v0.0.0-20170412213628-49af9bddb229/go.mod h1:0aYXnNPJ8l7uZxf45rWW1a/uME32OF0rhiYGNQ2oF2E=
+github.com/nozzle/throttler v0.0.0-20180817012639-2ea982251481 h1:Up6+btDp321ZG5/zdSLo48H9Iaq0UQGthrhWC6pCxzE=
+github.com/nozzle/throttler v0.0.0-20180817012639-2ea982251481/go.mod h1:yKZQO8QE2bHlgozqWDiRVqTFlLQSj30K/6SAK8EeYFw=
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
-github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5 h1:58+kh9C6jJVXYjt8IE48G2eWl6BjwU5Gj0gqY84fy78=
github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo=
github.com/olekukonko/tablewriter v0.0.5-0.20200416053754-163badb3bac6 h1:F721VBMijn0OBFZ5wUSuMVVLQj2IJiiupn6UNd7UbBE=
github.com/olekukonko/tablewriter v0.0.5-0.20200416053754-163badb3bac6/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA=
@@ -532,6 +544,15 @@ github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGV
github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
github.com/onsi/gomega v1.7.1 h1:K0jcRCwNQM3vFGh1ppMtDh/+7ApJrjldlX8fA0jDTLQ=
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
+github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s=
+github.com/opencontainers/go-digest v1.0.0-rc1 h1:WzifXhOVOEOuFYOJAW6aQqW0TooG2iki3E3Ii+WN7gQ=
+github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s=
+github.com/opencontainers/image-spec v1.0.1 h1:JMemWkRwHx4Zj+fVxWoMCFm/8sYGGrUVojFA6h/TRcI=
+github.com/opencontainers/image-spec v1.0.1/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0=
+github.com/opencontainers/runc v0.0.0-20190115041553-12f6a991201f/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U=
+github.com/opencontainers/runc v0.1.1 h1:GlxAyO6x8rfZYN9Tt0Kti5a/cP41iuiO2yYT0IJGY8Y=
+github.com/opencontainers/runc v0.1.1/go.mod h1:qT5XzbpPznkRYVz/mWwUaVBUv2rmF59PVA73FjuZG0U=
+github.com/opencontainers/runtime-spec v0.1.2-0.20190507144316-5b71a03e2700/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0=
github.com/opentracing-contrib/go-grpc v0.0.0-20180928155321-4b5a12d3ff02 h1:0R5mDLI66Qw13qN80TRz85zthQ2nf2+uDyiV23w6c3Q=
github.com/opentracing-contrib/go-grpc v0.0.0-20180928155321-4b5a12d3ff02/go.mod h1:JNdpVEzCpXBgIiv4ds+TzhN1hrtxq6ClLrTlT9OQRSc=
github.com/opentracing/opentracing-go v1.1.0 h1:pWlfV3Bxv7k65HYwkikxat0+s3pV4bsqf19k25Ur8rU=
@@ -545,7 +566,6 @@ github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaR
github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
github.com/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g=
github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k=
-github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc=
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
github.com/philhofer/fwd v1.0.0 h1:UbZqGr5Y38ApvM/V/jEljVxwocdweyH+vmYvRPBnbqQ=
@@ -553,38 +573,37 @@ github.com/philhofer/fwd v1.0.0/go.mod h1:gk3iGcWd9+svBvR0sR+KPcfE+RNWozjowpeBVG
github.com/pires/go-proxyproto v0.0.0-20191211124218-517ecdf5bb2b h1:JPLdtNmpXbWytipbGwYz7zXZzlQNASEiFw5aGAM75us=
github.com/pires/go-proxyproto v0.0.0-20191211124218-517ecdf5bb2b/go.mod h1:Odh9VFOZJCf9G8cLW5o435Xf1J95Jw9Gw5rnCjcwzAY=
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
-github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
+github.com/pkg/errors v0.8.1-0.20171018195549-f15c970de5b7/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/planetscale/tengo v0.9.6-ps.v1 h1:sVudRi2EKEJuPHchj8Ap6uFDGyybi0amP6OLc4Bao9s=
+github.com/planetscale/tengo v0.9.6-ps.v1/go.mod h1:zrvIPs4+lw2VBJ2XX/tQj+gPbFheMht4AZFKGEhihYI=
github.com/pmezard/go-difflib v0.0.0-20151028094244-d8ed2627bdf0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI=
-github.com/posener/complete v1.2.3 h1:NP0eAhjcjImqslEwo/1hq7gpajME0fTLTezBKDqfXqo=
github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s=
github.com/pquerna/cachecontrol v0.0.0-20171018203845-0dec1b30a021/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA=
github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw=
-github.com/prometheus/client_golang v0.9.2 h1:awm861/B8OKDd2I/6o1dy3ra4BamzKhYOiGItCeZ740=
github.com/prometheus/client_golang v0.9.2/go.mod h1:OsXs2jCmiKlQ1lTBmv21f2mNfw4xf/QclQDMrYNZzcM=
github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso=
github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo=
github.com/prometheus/client_golang v1.4.1 h1:FFSuS004yOQEtDdTq+TAOLP5xUq63KqAFYyOi8zA+Y8=
github.com/prometheus/client_golang v1.4.1/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU=
-github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910 h1:idejC8f05m9MGOsuEi1ATq9shN03HrxNkD/luQvxCv8=
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
+github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/client_model v0.2.0 h1:uq5h0d+GuxiXLJLNABMgp2qUWDPiLvgCzz2dUR+/W/M=
github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
-github.com/prometheus/common v0.0.0-20181126121408-4724e9255275 h1:PnBWHBf+6L0jOqq0gIVUe6Yk0/QMZ640k6NvkxcBf+8=
github.com/prometheus/common v0.0.0-20181126121408-4724e9255275/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro=
github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4=
github.com/prometheus/common v0.9.1 h1:KOMtN28tlbam3/7ZKEYKHhKoJZYYj3gMH4uc62x7X7U=
github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4=
+github.com/prometheus/procfs v0.0.0-20180125133057-cb4147076ac7/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
-github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a h1:9a8MnZMP0X2nLJdBg+pBmGgkJlSaKC2KaQmTCk1XDtE=
github.com/prometheus/procfs v0.0.0-20181204211112-1dc9a6cbc91a/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk=
github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA=
@@ -599,7 +618,6 @@ github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFR
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
-github.com/ryanuber/columnize v2.1.0+incompatible h1:j1Wcmh8OrK4Q7GXY+V7SVSY8nUWQxHW5TkBe7YUl+2s=
github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
github.com/samuel/go-zookeeper v0.0.0-20200724154423-2164a8ac840e h1:CGjiMQ0wMH4wtNWrlj6kiTbkPt2F3rbYnhGX6TWLfco=
github.com/samuel/go-zookeeper v0.0.0-20200724154423-2164a8ac840e/go.mod h1:gi+0XIa01GRL2eRQVjQkKGqKF3SF9vZR/HnPullcV2E=
@@ -609,7 +627,9 @@ github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUt
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo=
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
+github.com/sirupsen/logrus v1.0.4-0.20170822132746-89742aefa4b2/go.mod h1:pMByvHTf9Beacp5x1UXfOR9xyW/9antXMhjMPG0dEzc=
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
+github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q=
github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4=
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
github.com/sjmudd/stopwatch v0.0.0-20170613150411-f380bf8a9be1 h1:acClJNSOjUrAUKW+ZneCZymCFDWtSaJG5YQl8FoOlyI=
@@ -617,27 +637,23 @@ github.com/sjmudd/stopwatch v0.0.0-20170613150411-f380bf8a9be1/go.mod h1:Pgf1sZ2
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304 h1:Jpy1PXuP99tXNrhbq2BaPz9B+jNAvH1JPQQpG/9GCXY=
github.com/smartystreets/assertions v0.0.0-20190116191733-b6c0e53d7304/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
-github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c h1:Ho+uVpkel/udgjbwB5Lktg9BtvJSh2DT0Hi6LPSyI2w=
github.com/smartystreets/goconvey v0.0.0-20181108003508-044398e4856c/go.mod h1:XDJAKZRPZ1CvBcN2aX5YOUTYGHki24fSF0Iv48Ibg0s=
github.com/smartystreets/goconvey v1.6.4 h1:fv0U8FUIMPNf1L9lnHLvLhgicrIVChEkdzIKYqbNC9s=
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
github.com/soheilhy/cmux v0.1.4 h1:0HKaf1o97UwFjHH9o5XsHUOF+tqmdA7KEzXLpiyaw0E=
github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
-github.com/spf13/afero v1.1.2 h1:m8/z1t7/fwjysjQRYbP0RD+bUIF/8tJwPdEZsI83ACI=
github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
-github.com/spf13/afero v1.2.2 h1:5jhuqJyZCZf2JRofRvN/nIFgIWNzPa3/Vz8mYylgbWc=
github.com/spf13/afero v1.2.2/go.mod h1:9ZxEEn6pIJ8Rxe320qSDBk6AsU0r9pR7Q4OcevTdifk=
-github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8=
github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
+github.com/spf13/cobra v0.0.2-0.20171109065643-2da4a54c5cee/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ=
-github.com/spf13/cobra v0.0.5 h1:f0B+LkLX6DtmRH1isoNA9VTtNUK9K8xYd28JNNfOv/s=
github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU=
github.com/spf13/cobra v1.1.1 h1:KfztREH0tPxJJ+geloSLaAkaPkr4ki2Er5quFV1TDo4=
github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI=
-github.com/spf13/jwalterweatherman v1.0.0 h1:XHEdyB+EcvlqZamSM4ZOMGlc93t6AcsBEu9Gc1vn7yk=
github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
github.com/spf13/pflag v0.0.0-20170130214245-9ff6c6923cff/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
+github.com/spf13/pflag v1.0.1-0.20171106142849-4c012f6dcd95/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
@@ -646,10 +662,8 @@ github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DM
github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
github.com/spyzhov/ajson v0.4.2 h1:JMByd/jZApPKDvNsmO90X2WWGbmT2ahDFp73QhZbg3s=
github.com/spyzhov/ajson v0.4.2/go.mod h1:63V+CGM6f1Bu/p4nLIN8885ojBdt88TbLoSFzyqMuVA=
-github.com/stretchr/objx v0.1.0 h1:4G4v2dO3VZwixGIRoQ5Lfboy6nUhCyYzaqnIAPPhYs4=
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
-github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48=
github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
github.com/stretchr/testify v0.0.0-20151208002404-e3a8ff8ce365/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
@@ -667,7 +681,6 @@ github.com/tinylib/msgp v1.1.1/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDW
github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5 h1:LnC5Kc/wtumK+WB441p7ynQJzVuNRJiqddSIE3IlSEQ=
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
-github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926 h1:G3dpKMzFDjgEh2q1Z7zUUtKa8ViPtH+ocF0bE0g00O8=
github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
github.com/uber-go/atomic v1.4.0 h1:yOuPqEq4ovnhEjpHmfFwsqBXDYbQeT6Nb0bwD6XnD5o=
github.com/uber-go/atomic v1.4.0/go.mod h1:/Ct5t2lcmbJ4OSe/waGBoaVvVqtO0bmtfVNex1PFV8g=
@@ -676,10 +689,9 @@ github.com/uber/jaeger-client-go v2.16.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMW
github.com/uber/jaeger-lib v2.0.0+incompatible h1:iMSCV0rmXEogjNWPh2D0xk9YVKvrtGoHJNe9ebLu/pw=
github.com/uber/jaeger-lib v2.0.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U=
github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
+github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
-github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
-github.com/valyala/fasttemplate v1.0.1 h1:tY9CJiPnMXf1ERmG2EyK7gNUd+c6RKGD0IfU8WdUSz8=
github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8=
github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw=
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2 h1:eY9dn8+vbi4tKz5Qo6v2eYzo7kUS51QINcR5jNpbZS8=
@@ -705,6 +717,7 @@ go.uber.org/multierr v1.1.0 h1:HoEmRHQPVSqub6w2z2d2EOVs2fjyFRGyofhKuyDq0QI=
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
go.uber.org/zap v1.10.0 h1:ORx85nbTijNz8ljznvCMR1ZBIPKFn3jQrag10X2AsuM=
go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
+golang.org/x/crypto v0.0.0-20171113213409-9f005a07e0d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
@@ -718,10 +731,9 @@ golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8U
golang.org/x/crypto v0.0.0-20190617133340-57b3e21c3d56/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY=
-golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550 h1:ObdrDkeb4kJdCP557AjRjq69pTHfNouLtWZG7j9rPN8=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413 h1:ULYEB3JvPRE/IfO+9uO7vKV/xzVTO7XPAwm8xbf4w2g=
golang.org/x/crypto v0.0.0-20191206172530-e9b2fee46413/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.0.0-20200429183012-4b2356b1ed79/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9 h1:psW17arqaxU48Z5kZ0CQnkZWQJsqcURM6tKiBApRjXI=
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
@@ -738,7 +750,6 @@ golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTk
golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU=
golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE=
golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
-golang.org/x/lint v0.0.0-20190409202823-959b441ac422 h1:QzoH/1pFpZguR8NrRHLcO6jKqfv2zpuSqZLgdm7ZmjI=
golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs=
@@ -773,11 +784,8 @@ golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLL
golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20191004110552-13f9640d40b9 h1:rjwSpXsdiK0dV8/Naq3kAw9ymfAeJIyd0upUIElB+lI=
golang.org/x/net v0.0.0-20191004110552-13f9640d40b9/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200202094626-16171245cfb2 h1:CCH4IOTTfewWjGOlSp+zGcjutRKlBEZQ6wTn8ozI/nI=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e h1:3G+cUijn7XD+S4eJFddp53Pv7+slrESplyjG25HgL+k=
golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A=
golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI=
golang.org/x/net v0.0.0-20201021035429-f5854403a974 h1:IX6qOQeG5uLjB/hjjwjedwfjND0hgjPMMyO1RoIXQNI=
@@ -791,50 +799,15 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e h1:vcxGaoTs7kV8m5Np9uUNQin4BrLOthgV7252N8V+FwY=
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9 h1:SQFwaSi55rU7vdNs9Yr0Z324VNlrF+0wMqRXT4St8ck=
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190124100055-b90733256f2e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190209173611-3b5209105503/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
-golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190321052220-f7bb7a8bee54/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884=
-golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f h1:+Nyd8tzPX9R7BWHguqsrbFdRx3WQ/1ib8I44HXV5yTA=
-golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sync v0.0.0-20201207232520-09787c993a3a h1:DcqTD9SDLc+1P/r1EmRBwnVsrOwW+kk2vWf9n+1sGhs=
+golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6 h1:DvY3Zkh7KabQE/kfzMvYvKirSiguP9Q/veMtkYyf0o8=
+golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k=
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
@@ -862,6 +835,7 @@ golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgw
golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190624190245-7f2218787638/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
+golang.org/x/tools v0.0.0-20190624222133-a101b041ded4/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc=
golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
@@ -874,7 +848,6 @@ golang.org/x/tools v0.0.0-20201202200335-bef1c476418a h1:TYqOq/v+Ri5aADpldxXOj6P
golang.org/x/tools v0.0.0-20201202200335-bef1c476418a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
-golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -884,7 +857,6 @@ gonum.org/v1/netlib v0.0.0-20190331212654-76723241ea4e/go.mod h1:kS+toOQn6AQKjmK
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
-google.golang.org/api v0.9.0 h1:jbyannxz0XFD3zdjgrSUsaJbgpH4eTrkdhRChkHPfO8=
google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg=
google.golang.org/api v0.13.0 h1:Q3Ui3V3/CVinFWFiW39Iw0kMuVrRzYX0wN6OPFp0lTA=
google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI=
@@ -907,11 +879,14 @@ google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvx
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
+google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
google.golang.org/grpc v1.23.1/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
-google.golang.org/grpc v1.24.0 h1:vb/1TCsVn3DcJlQ0Gs1yB1pKI6Do2/QNwxdKqmc/b0s=
-google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA=
+google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
+google.golang.org/grpc v1.29.1 h1:EC2SB8S04d2r73uptxphDSUG+kTKVgjRPF+N3xpxRB4=
+google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk=
gopkg.in/DataDog/dd-trace-go.v1 v1.17.0 h1:j9vAp9Re9bbtA/QFehkJpNba/6W2IbJtNuXZophCa54=
gopkg.in/DataDog/dd-trace-go.v1 v1.17.0/go.mod h1:DVp8HmDh8PuTu2Z0fVVlBsyWaC++fzwVCaGWylTe3tg=
+gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U=
gopkg.in/alecthomas/kingpin.v2 v2.2.6 h1:jMFz6MfLP0/4fUyZle81rXUoxOBFi19VUFKVDOQfozc=
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d h1:TxyelI5cVkbREznMhfzycHdkp5cLA7DpE+GKjSslYhM=
@@ -926,6 +901,7 @@ gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
gopkg.in/gcfg.v1 v1.2.3 h1:m8OOJ4ccYHnx2f4gQwpno8nAX5OGOh7RLaaz0pj3Ogs=
gopkg.in/gcfg.v1 v1.2.3/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o=
+gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo=
gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc=
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
gopkg.in/ini.v1 v1.41.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
@@ -945,12 +921,13 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
-gopkg.in/yaml.v2 v2.2.8 h1:obN1ZagJSUGI0Ek/LBmuj4SNLPfIny3KsKFopxRdj10=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
gotest.tools v2.2.0+incompatible h1:VsBPFP1AI068pPrMxtb/S8Zkgf9xEmTLJjfM+P5UIEo=
gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw=
+gotest.tools/v3 v3.0.2 h1:kG1BFyqVHuQoVQiR1bWGnfz/fmHvvuiSPIV7rvl360E=
+gotest.tools/v3 v3.0.2/go.mod h1:3SzNCllyD9/Y+b5r9JIKQ474KzkZyqLqEfYqMsX94Bk=
honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
@@ -966,9 +943,11 @@ k8s.io/apimachinery v0.17.3/go.mod h1:gxLnyZcGNdZTCLnq3fgzyg2A5BVCHTNDFrw8AmuJ+0
k8s.io/apiserver v0.17.3/go.mod h1:iJtsPpu1ZpEnHaNawpSV0nYTGBhhX2dUlnn7/QS7QiY=
k8s.io/client-go v0.17.3 h1:deUna1Ksx05XeESH6XGCyONNFfiQmDdqeqUvicvP6nU=
k8s.io/client-go v0.17.3/go.mod h1:cLXlTMtWHkuK4tD360KpWz2gG2KtdWEr/OT02i3emRQ=
+k8s.io/code-generator v0.17.3 h1:q/hDMk2cvFzSxol7k/VA1qCssR7VSMXHQHhzuX29VJ8=
k8s.io/code-generator v0.17.3/go.mod h1:l8BLVwASXQZTo2xamW5mQNFCe1XPiAesVq7Y1t7PiQQ=
k8s.io/component-base v0.17.3/go.mod h1:GeQf4BrgelWm64PXkIXiPh/XS0hnO42d9gx9BtbZRp8=
k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
+k8s.io/gengo v0.0.0-20190822140433-26a664648505 h1:ZY6yclUKVbZ+SdWnkfY+Je5vrMpKOxmGeKRbsXVmqYM=
k8s.io/gengo v0.0.0-20190822140433-26a664648505/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk=
diff --git a/go/cache/cache.go b/go/cache/cache.go
new file mode 100644
index 00000000000..2bbf8011537
--- /dev/null
+++ b/go/cache/cache.go
@@ -0,0 +1,86 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package cache
+
+// Cache is a generic interface type for a data structure that keeps recently used
+// objects in memory and evicts them when it becomes full.
+type Cache interface {
+ Get(key string) (interface{}, bool)
+ Set(key string, val interface{}) bool
+ ForEach(callback func(interface{}) bool)
+
+ Delete(key string)
+ Clear()
+
+ // Wait waits for all pending operations on the cache to settle. Since cache writes
+ // are asynchronous, a write may not be immediately accessible unless the user
+ // manually calls Wait.
+ Wait()
+
+ Len() int
+ Evictions() int64
+ UsedCapacity() int64
+ MaxCapacity() int64
+ SetCapacity(int64)
+}
+
+type cachedObject interface {
+ CachedSize(alloc bool) int64
+}
+
+// NewDefaultCacheImpl returns the default cache implementation for Vitess. The options in the
+// Config struct control the memory and entry limits for the cache, and the underlying cache
+// implementation.
+func NewDefaultCacheImpl(cfg *Config) Cache {
+ switch {
+ case cfg == nil:
+ return &nullCache{}
+
+ case cfg.LFU:
+ if cfg.MaxEntries == 0 || cfg.MaxMemoryUsage == 0 {
+ return &nullCache{}
+ }
+ return NewRistrettoCache(cfg.MaxEntries, cfg.MaxMemoryUsage, func(val interface{}) int64 {
+ return val.(cachedObject).CachedSize(true)
+ })
+
+ default:
+ if cfg.MaxEntries == 0 {
+ return &nullCache{}
+ }
+ return NewLRUCache(cfg.MaxEntries, func(_ interface{}) int64 {
+ return 1
+ })
+ }
+}
+
+// Config is the configuration options for a cache instance
+type Config struct {
+ // MaxEntries is the estimated amount of entries that the cache will hold at capacity
+ MaxEntries int64
+ // MaxMemoryUsage is the maximum amount of memory the cache can handle
+ MaxMemoryUsage int64
+ // LFU toggles whether to use a new cache implementation with a TinyLFU admission policy
+ LFU bool
+}
+
+// DefaultConfig is the default configuration for a cache instance in Vitess
+var DefaultConfig = &Config{
+ MaxEntries: 5000,
+ MaxMemoryUsage: 32 * 1024 * 1024,
+ LFU: true,
+}
diff --git a/go/cache/cache_test.go b/go/cache/cache_test.go
new file mode 100644
index 00000000000..911a3bb207b
--- /dev/null
+++ b/go/cache/cache_test.go
@@ -0,0 +1,47 @@
+package cache
+
+import (
+ "fmt"
+ "testing"
+
+ "github.com/stretchr/testify/require"
+
+ "vitess.io/vitess/go/cache/ristretto"
+)
+
+func TestNewDefaultCacheImpl(t *testing.T) {
+ assertNullCache := func(t *testing.T, cache Cache) {
+ _, ok := cache.(*nullCache)
+ require.True(t, ok)
+ }
+
+ assertLFUCache := func(t *testing.T, cache Cache) {
+ _, ok := cache.(*ristretto.Cache)
+ require.True(t, ok)
+ }
+
+ assertLRUCache := func(t *testing.T, cache Cache) {
+ _, ok := cache.(*LRUCache)
+ require.True(t, ok)
+ }
+
+ tests := []struct {
+ cfg *Config
+ verify func(t *testing.T, cache Cache)
+ }{
+ {&Config{MaxEntries: 0, MaxMemoryUsage: 0, LFU: false}, assertNullCache},
+ {&Config{MaxEntries: 0, MaxMemoryUsage: 0, LFU: true}, assertNullCache},
+ {&Config{MaxEntries: 100, MaxMemoryUsage: 0, LFU: false}, assertLRUCache},
+ {&Config{MaxEntries: 0, MaxMemoryUsage: 1000, LFU: false}, assertNullCache},
+ {&Config{MaxEntries: 100, MaxMemoryUsage: 1000, LFU: false}, assertLRUCache},
+ {&Config{MaxEntries: 100, MaxMemoryUsage: 0, LFU: true}, assertNullCache},
+ {&Config{MaxEntries: 100, MaxMemoryUsage: 1000, LFU: true}, assertLFUCache},
+ {&Config{MaxEntries: 0, MaxMemoryUsage: 1000, LFU: true}, assertNullCache},
+ }
+ for _, tt := range tests {
+ t.Run(fmt.Sprintf("%d.%d.%v", tt.cfg.MaxEntries, tt.cfg.MaxMemoryUsage, tt.cfg.LFU), func(t *testing.T) {
+ cache := NewDefaultCacheImpl(tt.cfg)
+ tt.verify(t, cache)
+ })
+ }
+}
diff --git a/go/cache/lru_cache.go b/go/cache/lru_cache.go
index cf33235670a..9175f942e94 100644
--- a/go/cache/lru_cache.go
+++ b/go/cache/lru_cache.go
@@ -25,59 +25,55 @@ package cache
import (
"container/list"
- "fmt"
"sync"
"time"
)
+var _ Cache = &LRUCache{}
+
// LRUCache is a typical LRU cache implementation. If the cache
// reaches the capacity, the least recently used item is deleted from
// the cache. Note the capacity is not the number of items, but the
-// total sum of the Size() of each item.
+// total sum of the CachedSize() of each item.
type LRUCache struct {
mu sync.Mutex
// list & table contain *entry objects.
list *list.List
table map[string]*list.Element
+ cost func(interface{}) int64
size int64
capacity int64
evictions int64
}
-// Value is the interface values that go into LRUCache need to satisfy
-type Value interface {
- // Size returns how big this value is. If you want to just track
- // the cache by number of objects, you may return the size as 1.
- Size() int
-}
-
// Item is what is stored in the cache
type Item struct {
Key string
- Value Value
+ Value interface{}
}
type entry struct {
key string
- value Value
+ value interface{}
size int64
timeAccessed time.Time
}
// NewLRUCache creates a new empty cache with the given capacity.
-func NewLRUCache(capacity int64) *LRUCache {
+func NewLRUCache(capacity int64, cost func(interface{}) int64) *LRUCache {
return &LRUCache{
list: list.New(),
table: make(map[string]*list.Element),
capacity: capacity,
+ cost: cost,
}
}
// Get returns a value from the cache, and marks the entry as most
// recently used.
-func (lru *LRUCache) Get(key string) (v Value, ok bool) {
+func (lru *LRUCache) Get(key string) (v interface{}, ok bool) {
lru.mu.Lock()
defer lru.mu.Unlock()
@@ -89,20 +85,8 @@ func (lru *LRUCache) Get(key string) (v Value, ok bool) {
return element.Value.(*entry).value, true
}
-// Peek returns a value from the cache without changing the LRU order.
-func (lru *LRUCache) Peek(key string) (v Value, ok bool) {
- lru.mu.Lock()
- defer lru.mu.Unlock()
-
- element := lru.table[key]
- if element == nil {
- return nil, false
- }
- return element.Value.(*entry).value, true
-}
-
// Set sets a value in the cache.
-func (lru *LRUCache) Set(key string, value Value) {
+func (lru *LRUCache) Set(key string, value interface{}) bool {
lru.mu.Lock()
defer lru.mu.Unlock()
@@ -111,23 +95,12 @@ func (lru *LRUCache) Set(key string, value Value) {
} else {
lru.addNew(key, value)
}
-}
-
-// SetIfAbsent will set the value in the cache if not present. If the
-// value exists in the cache, we don't set it.
-func (lru *LRUCache) SetIfAbsent(key string, value Value) {
- lru.mu.Lock()
- defer lru.mu.Unlock()
-
- if element := lru.table[key]; element != nil {
- lru.moveToFront(element)
- } else {
- lru.addNew(key, value)
- }
+ // the LRU cache cannot fail to insert items; it always returns true
+ return true
}
// Delete removes an entry from the cache, and returns if the entry existed.
-func (lru *LRUCache) Delete(key string) bool {
+func (lru *LRUCache) delete(key string) bool {
lru.mu.Lock()
defer lru.mu.Unlock()
@@ -142,6 +115,11 @@ func (lru *LRUCache) Delete(key string) bool {
return true
}
+// Delete removes an entry from the cache
+func (lru *LRUCache) Delete(key string) {
+ lru.delete(key)
+}
+
// Clear will clear the entire cache.
func (lru *LRUCache) Clear() {
lru.mu.Lock()
@@ -152,6 +130,13 @@ func (lru *LRUCache) Clear() {
lru.size = 0
}
+// Len returns the size of the cache (in entries)
+func (lru *LRUCache) Len() int {
+ lru.mu.Lock()
+ defer lru.mu.Unlock()
+ return lru.list.Len()
+}
+
// SetCapacity will set the capacity of the cache. If the capacity is
// smaller, and the current cache size exceed that capacity, the cache
// will be shrank.
@@ -163,75 +148,40 @@ func (lru *LRUCache) SetCapacity(capacity int64) {
lru.checkCapacity()
}
-// Stats returns a few stats on the cache.
-func (lru *LRUCache) Stats() (length, size, capacity, evictions int64, oldest time.Time) {
- lru.mu.Lock()
- defer lru.mu.Unlock()
- if lastElem := lru.list.Back(); lastElem != nil {
- oldest = lastElem.Value.(*entry).timeAccessed
- }
- return int64(lru.list.Len()), lru.size, lru.capacity, lru.evictions, oldest
-}
-
-// StatsJSON returns stats as a JSON object in a string.
-func (lru *LRUCache) StatsJSON() string {
- if lru == nil {
- return "{}"
- }
- l, s, c, e, o := lru.Stats()
- return fmt.Sprintf("{\"Length\": %v, \"Size\": %v, \"Capacity\": %v, \"Evictions\": %v, \"OldestAccess\": \"%v\"}", l, s, c, e, o)
-}
-
-// Length returns how many elements are in the cache
-func (lru *LRUCache) Length() int64 {
- lru.mu.Lock()
- defer lru.mu.Unlock()
- return int64(lru.list.Len())
-}
+// Wait is a no-op in the LRU cache
+func (lru *LRUCache) Wait() {}
-// Size returns the sum of the objects' Size() method.
-func (lru *LRUCache) Size() int64 {
- lru.mu.Lock()
- defer lru.mu.Unlock()
+// UsedCapacity returns the size of the cache (in bytes)
+func (lru *LRUCache) UsedCapacity() int64 {
return lru.size
}
-// Capacity returns the cache maximum capacity.
-func (lru *LRUCache) Capacity() int64 {
+// MaxCapacity returns the cache maximum capacity.
+func (lru *LRUCache) MaxCapacity() int64 {
lru.mu.Lock()
defer lru.mu.Unlock()
return lru.capacity
}
-// Evictions returns the eviction count.
+// Evictions returns the number of evictions
func (lru *LRUCache) Evictions() int64 {
lru.mu.Lock()
defer lru.mu.Unlock()
return lru.evictions
}
-// Oldest returns the insertion time of the oldest element in the cache,
-// or a IsZero() time if cache is empty.
-func (lru *LRUCache) Oldest() (oldest time.Time) {
- lru.mu.Lock()
- defer lru.mu.Unlock()
- if lastElem := lru.list.Back(); lastElem != nil {
- oldest = lastElem.Value.(*entry).timeAccessed
- }
- return
-}
-
-// Keys returns all the keys for the cache, ordered from most recently
+// ForEach yields all the values for the cache, ordered from most recently
// used to least recently used.
-func (lru *LRUCache) Keys() []string {
+func (lru *LRUCache) ForEach(callback func(value interface{}) bool) {
lru.mu.Lock()
defer lru.mu.Unlock()
- keys := make([]string, 0, lru.list.Len())
for e := lru.list.Front(); e != nil; e = e.Next() {
- keys = append(keys, e.Value.(*entry).key)
+ v := e.Value.(*entry)
+ if !callback(v.value) {
+ break
+ }
}
- return keys
}
// Items returns all the values for the cache, ordered from most recently
@@ -248,8 +198,8 @@ func (lru *LRUCache) Items() []Item {
return items
}
-func (lru *LRUCache) updateInplace(element *list.Element, value Value) {
- valueSize := int64(value.Size())
+func (lru *LRUCache) updateInplace(element *list.Element, value interface{}) {
+ valueSize := lru.cost(value)
sizeDiff := valueSize - element.Value.(*entry).size
element.Value.(*entry).value = value
element.Value.(*entry).size = valueSize
@@ -263,8 +213,8 @@ func (lru *LRUCache) moveToFront(element *list.Element) {
element.Value.(*entry).timeAccessed = time.Now()
}
-func (lru *LRUCache) addNew(key string, value Value) {
- newEntry := &entry{key, value, int64(value.Size()), time.Now()}
+func (lru *LRUCache) addNew(key string, value interface{}) {
+ newEntry := &entry{key, value, lru.cost(value), time.Now()}
element := lru.list.PushFront(newEntry)
lru.table[key] = element
lru.size += newEntry.size
diff --git a/go/cache/lru_cache_test.go b/go/cache/lru_cache_test.go
index 9a7f09232e6..152ac17ab6f 100644
--- a/go/cache/lru_cache_test.go
+++ b/go/cache/lru_cache_test.go
@@ -17,22 +17,20 @@ limitations under the License.
package cache
import (
- "encoding/json"
"testing"
- "time"
)
type CacheValue struct {
- size int
+ size int64
}
-func (cv *CacheValue) Size() int {
- return cv.size
+func cacheValueSize(val interface{}) int64 {
+ return val.(*CacheValue).size
}
func TestInitialState(t *testing.T) {
- cache := NewLRUCache(5)
- l, sz, c, e, _ := cache.Stats()
+ cache := NewLRUCache(5, cacheValueSize)
+ l, sz, c, e := cache.Len(), cache.UsedCapacity(), cache.MaxCapacity(), cache.Evictions()
if l != 0 {
t.Errorf("length = %v, want 0", l)
}
@@ -48,7 +46,7 @@ func TestInitialState(t *testing.T) {
}
func TestSetInsertsValue(t *testing.T) {
- cache := NewLRUCache(100)
+ cache := NewLRUCache(100, cacheValueSize)
data := &CacheValue{0}
key := "key"
cache.Set(key, data)
@@ -58,37 +56,14 @@ func TestSetInsertsValue(t *testing.T) {
t.Errorf("Cache has incorrect value: %v != %v", data, v)
}
- k := cache.Keys()
- if len(k) != 1 || k[0] != key {
- t.Errorf("Cache.Keys() returned incorrect values: %v", k)
- }
values := cache.Items()
if len(values) != 1 || values[0].Key != key {
t.Errorf("Cache.Values() returned incorrect values: %v", values)
}
}
-func TestSetIfAbsent(t *testing.T) {
- cache := NewLRUCache(100)
- data := &CacheValue{0}
- key := "key"
- cache.SetIfAbsent(key, data)
-
- v, ok := cache.Get(key)
- if !ok || v.(*CacheValue) != data {
- t.Errorf("Cache has incorrect value: %v != %v", data, v)
- }
-
- cache.SetIfAbsent(key, &CacheValue{1})
-
- v, ok = cache.Get(key)
- if !ok || v.(*CacheValue) != data {
- t.Errorf("Cache has incorrect value: %v != %v", data, v)
- }
-}
-
func TestGetValueWithMultipleTypes(t *testing.T) {
- cache := NewLRUCache(100)
+ cache := NewLRUCache(100, cacheValueSize)
data := &CacheValue{0}
key := "key"
cache.Set(key, data)
@@ -105,23 +80,23 @@ func TestGetValueWithMultipleTypes(t *testing.T) {
}
func TestSetUpdatesSize(t *testing.T) {
- cache := NewLRUCache(100)
+ cache := NewLRUCache(100, cacheValueSize)
emptyValue := &CacheValue{0}
key := "key1"
cache.Set(key, emptyValue)
- if _, sz, _, _, _ := cache.Stats(); sz != 0 {
- t.Errorf("cache.Size() = %v, expected 0", sz)
+ if sz := cache.UsedCapacity(); sz != 0 {
+ t.Errorf("cache.UsedCapacity() = %v, expected 0", sz)
}
someValue := &CacheValue{20}
key = "key2"
cache.Set(key, someValue)
- if _, sz, _, _, _ := cache.Stats(); sz != 20 {
- t.Errorf("cache.Size() = %v, expected 20", sz)
+ if sz := cache.UsedCapacity(); sz != 20 {
+ t.Errorf("cache.UsedCapacity() = %v, expected 20", sz)
}
}
func TestSetWithOldKeyUpdatesValue(t *testing.T) {
- cache := NewLRUCache(100)
+ cache := NewLRUCache(100, cacheValueSize)
emptyValue := &CacheValue{0}
key := "key1"
cache.Set(key, emptyValue)
@@ -135,67 +110,42 @@ func TestSetWithOldKeyUpdatesValue(t *testing.T) {
}
func TestSetWithOldKeyUpdatesSize(t *testing.T) {
- cache := NewLRUCache(100)
+ cache := NewLRUCache(100, cacheValueSize)
emptyValue := &CacheValue{0}
key := "key1"
cache.Set(key, emptyValue)
- if _, sz, _, _, _ := cache.Stats(); sz != 0 {
- t.Errorf("cache.Size() = %v, expected %v", sz, 0)
+ if sz := cache.UsedCapacity(); sz != 0 {
+ t.Errorf("cache.UsedCapacity() = %v, expected %v", sz, 0)
}
someValue := &CacheValue{20}
cache.Set(key, someValue)
expected := int64(someValue.size)
- if _, sz, _, _, _ := cache.Stats(); sz != expected {
- t.Errorf("cache.Size() = %v, expected %v", sz, expected)
+ if sz := cache.UsedCapacity(); sz != expected {
+ t.Errorf("cache.UsedCapacity() = %v, expected %v", sz, expected)
}
}
func TestGetNonExistent(t *testing.T) {
- cache := NewLRUCache(100)
+ cache := NewLRUCache(100, cacheValueSize)
if _, ok := cache.Get("notthere"); ok {
t.Error("Cache returned a notthere value after no inserts.")
}
}
-func TestPeek(t *testing.T) {
- cache := NewLRUCache(2)
- val1 := &CacheValue{1}
- cache.Set("key1", val1)
- val2 := &CacheValue{1}
- cache.Set("key2", val2)
- // Make key1 the most recent.
- cache.Get("key1")
- // Peek key2.
- if v, ok := cache.Peek("key2"); ok && v.(*CacheValue) != val2 {
- t.Errorf("key2 received: %v, want %v", v, val2)
- }
- // Push key2 out
- cache.Set("key3", &CacheValue{1})
- if v, ok := cache.Peek("key2"); ok {
- t.Errorf("key2 received: %v, want absent", v)
- }
-}
-
func TestDelete(t *testing.T) {
- cache := NewLRUCache(100)
+ cache := NewLRUCache(100, cacheValueSize)
value := &CacheValue{1}
key := "key"
- if cache.Delete(key) {
- t.Error("Item unexpectedly already in cache.")
- }
-
+ cache.Delete(key)
cache.Set(key, value)
+ cache.Delete(key)
- if !cache.Delete(key) {
- t.Error("Expected item to be in cache.")
- }
-
- if _, sz, _, _, _ := cache.Stats(); sz != 0 {
- t.Errorf("cache.Size() = %v, expected 0", sz)
+ if sz := cache.UsedCapacity(); sz != 0 {
+ t.Errorf("cache.UsedCapacity() = %v, expected 0", sz)
}
if _, ok := cache.Get(key); ok {
@@ -204,21 +154,21 @@ func TestDelete(t *testing.T) {
}
func TestClear(t *testing.T) {
- cache := NewLRUCache(100)
+ cache := NewLRUCache(100, cacheValueSize)
value := &CacheValue{1}
key := "key"
cache.Set(key, value)
cache.Clear()
- if _, sz, _, _, _ := cache.Stats(); sz != 0 {
- t.Errorf("cache.Size() = %v, expected 0 after Clear()", sz)
+ if sz := cache.UsedCapacity(); sz != 0 {
+ t.Errorf("cache.UsedCapacity() = %v, expected 0 after Clear()", sz)
}
}
func TestCapacityIsObeyed(t *testing.T) {
size := int64(3)
- cache := NewLRUCache(100)
+ cache := NewLRUCache(100, cacheValueSize)
cache.SetCapacity(size)
value := &CacheValue{1}
@@ -226,50 +176,34 @@ func TestCapacityIsObeyed(t *testing.T) {
cache.Set("key1", value)
cache.Set("key2", value)
cache.Set("key3", value)
- if _, sz, _, _, _ := cache.Stats(); sz != size {
- t.Errorf("cache.Size() = %v, expected %v", sz, size)
+ if sz := cache.UsedCapacity(); sz != size {
+ t.Errorf("cache.UsedCapacity() = %v, expected %v", sz, size)
}
// Insert one more; something should be evicted to make room.
cache.Set("key4", value)
- _, sz, _, evictions, _ := cache.Stats()
+ sz, evictions := cache.UsedCapacity(), cache.Evictions()
if sz != size {
- t.Errorf("post-evict cache.Size() = %v, expected %v", sz, size)
+ t.Errorf("post-evict cache.UsedCapacity() = %v, expected %v", sz, size)
}
if evictions != 1 {
- t.Errorf("post-evict cache.evictions = %v, expected 1", evictions)
- }
-
- // Check json stats
- data := cache.StatsJSON()
- m := make(map[string]interface{})
- if err := json.Unmarshal([]byte(data), &m); err != nil {
- t.Errorf("cache.StatsJSON() returned bad json data: %v %v", data, err)
- }
- if m["Size"].(float64) != float64(size) {
- t.Errorf("cache.StatsJSON() returned bad size: %v", m)
+ t.Errorf("post-evict cache.Evictions() = %v, expected 1", evictions)
}
// Check various other stats
- if l := cache.Length(); l != size {
- t.Errorf("cache.StatsJSON() returned bad length: %v", l)
+ if l := cache.Len(); int64(l) != size {
+ t.Errorf("cache.Len() returned bad length: %v", l)
}
- if s := cache.Size(); s != size {
- t.Errorf("cache.StatsJSON() returned bad size: %v", s)
+ if s := cache.UsedCapacity(); s != size {
+ t.Errorf("cache.UsedCapacity() returned bad size: %v", s)
}
- if c := cache.Capacity(); c != size {
- t.Errorf("cache.StatsJSON() returned bad length: %v", c)
- }
-
- // checks StatsJSON on nil
- cache = nil
- if s := cache.StatsJSON(); s != "{}" {
- t.Errorf("cache.StatsJSON() on nil object returned %v", s)
+ if c := cache.MaxCapacity(); c != size {
+ t.Errorf("cache.UsedCapacity() returned bad length: %v", c)
}
}
func TestLRUIsEvicted(t *testing.T) {
size := int64(3)
- cache := NewLRUCache(size)
+ cache := NewLRUCache(size, cacheValueSize)
cache.Set("key1", &CacheValue{1})
cache.Set("key2", &CacheValue{1})
@@ -278,9 +212,7 @@ func TestLRUIsEvicted(t *testing.T) {
// Look up the elements. This will rearrange the LRU ordering.
cache.Get("key3")
- beforeKey2 := time.Now()
cache.Get("key2")
- afterKey2 := time.Now()
cache.Get("key1")
// lru: [key1, key2, key3]
@@ -292,11 +224,6 @@ func TestLRUIsEvicted(t *testing.T) {
t.Error("Least recently used element was not evicted.")
}
- // Check oldest
- if o := cache.Oldest(); o.Before(beforeKey2) || o.After(afterKey2) {
- t.Errorf("cache.Oldest returned an unexpected value: got %v, expected a value between %v and %v", o, beforeKey2, afterKey2)
- }
-
if e, want := cache.Evictions(), int64(1); e != want {
t.Errorf("evictions: %d, want: %d", e, want)
}
diff --git a/go/cache/null.go b/go/cache/null.go
new file mode 100644
index 00000000000..5ef0f13a8c7
--- /dev/null
+++ b/go/cache/null.go
@@ -0,0 +1,63 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package cache
+
+// nullCache is a no-op cache that does not store items
+type nullCache struct{}
+
+// Get never returns anything on the nullCache
+func (n *nullCache) Get(_ string) (interface{}, bool) {
+ return nil, false
+}
+
+// Set is a no-op in the nullCache
+func (n *nullCache) Set(_ string, _ interface{}) bool {
+ return false
+}
+
+// ForEach iterates the nullCache, which is always empty
+func (n *nullCache) ForEach(_ func(interface{}) bool) {}
+
+// Delete is a no-op in the nullCache
+func (n *nullCache) Delete(_ string) {}
+
+// Clear is a no-op in the nullCache
+func (n *nullCache) Clear() {}
+
+// Wait is a no-op in the nullcache
+func (n *nullCache) Wait() {}
+
+func (n *nullCache) Len() int {
+ return 0
+}
+
+// Capacity returns the capacity of the nullCache, which is always 0
+func (n *nullCache) UsedCapacity() int64 {
+ return 0
+}
+
+// Capacity returns the capacity of the nullCache, which is always 0
+func (n *nullCache) MaxCapacity() int64 {
+ return 0
+}
+
+// SetCapacity sets the capacity of the null cache, which is a no-op
+func (n *nullCache) SetCapacity(_ int64) {}
+
+func (n *nullCache) Evictions() int64 {
+ return 0
+}
diff --git a/go/cache/perf_test.go b/go/cache/perf_test.go
index b5c9a1a8b38..95546f66c06 100644
--- a/go/cache/perf_test.go
+++ b/go/cache/perf_test.go
@@ -20,15 +20,11 @@ import (
"testing"
)
-type MyValue []byte
-
-func (mv MyValue) Size() int {
- return cap(mv)
-}
-
func BenchmarkGet(b *testing.B) {
- cache := NewLRUCache(64 * 1024 * 1024)
- value := make(MyValue, 1000)
+ cache := NewLRUCache(64*1024*1024, func(val interface{}) int64 {
+ return int64(cap(val.([]byte)))
+ })
+ value := make([]byte, 1000)
cache.Set("stuff", value)
for i := 0; i < b.N; i++ {
val, ok := cache.Get("stuff")
diff --git a/go/cache/ristretto.go b/go/cache/ristretto.go
new file mode 100644
index 00000000000..29eb52fe692
--- /dev/null
+++ b/go/cache/ristretto.go
@@ -0,0 +1,28 @@
+package cache
+
+import (
+ "vitess.io/vitess/go/cache/ristretto"
+)
+
+var _ Cache = &ristretto.Cache{}
+
+// NewRistrettoCache returns a Cache implementation based on Ristretto
+func NewRistrettoCache(maxEntries, maxCost int64, cost func(interface{}) int64) *ristretto.Cache {
+ // The TinyLFU paper recommends to allocate 10x times the max entries amount as counters
+ // for the admission policy; since our caches are small and we're very interested on admission
+ // accuracy, we're a bit more greedy than 10x
+ const CounterRatio = 12
+
+ config := ristretto.Config{
+ NumCounters: maxEntries * CounterRatio,
+ MaxCost: maxCost,
+ BufferItems: 64,
+ Metrics: true,
+ Cost: cost,
+ }
+ cache, err := ristretto.NewCache(&config)
+ if err != nil {
+ panic(err)
+ }
+ return cache
+}
diff --git a/go/cache/ristretto/bloom/bbloom.go b/go/cache/ristretto/bloom/bbloom.go
new file mode 100644
index 00000000000..ce5daa6864d
--- /dev/null
+++ b/go/cache/ristretto/bloom/bbloom.go
@@ -0,0 +1,151 @@
+// The MIT License (MIT)
+// Copyright (c) 2014 Andreas Briese, eduToolbox@Bri-C GmbH, Sarstedt
+
+// Permission is hereby granted, free of charge, to any person obtaining a copy of
+// this software and associated documentation files (the "Software"), to deal in
+// the Software without restriction, including without limitation the rights to
+// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
+// the Software, and to permit persons to whom the Software is furnished to do so,
+// subject to the following conditions:
+
+// The above copyright notice and this permission notice shall be included in all
+// copies or substantial portions of the Software.
+
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
+// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
+// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+package bloom
+
+import (
+ "math"
+ "unsafe"
+)
+
+// helper
+var mask = []uint8{1, 2, 4, 8, 16, 32, 64, 128}
+
+func getSize(ui64 uint64) (size uint64, exponent uint64) {
+ if ui64 < uint64(512) {
+ ui64 = uint64(512)
+ }
+ size = uint64(1)
+ for size < ui64 {
+ size <<= 1
+ exponent++
+ }
+ return size, exponent
+}
+
+// NewBloomFilterWithErrorRate returns a new bloomfilter with optimal size for the given
+// error rate
+func NewBloomFilterWithErrorRate(numEntries uint64, wrongs float64) *Bloom {
+ size := -1 * float64(numEntries) * math.Log(wrongs) / math.Pow(0.69314718056, 2)
+ locs := math.Ceil(0.69314718056 * size / float64(numEntries))
+ return NewBloomFilter(uint64(size), uint64(locs))
+}
+
+// NewBloomFilter returns a new bloomfilter.
+func NewBloomFilter(entries, locs uint64) (bloomfilter *Bloom) {
+ size, exponent := getSize(entries)
+ bloomfilter = &Bloom{
+ sizeExp: exponent,
+ size: size - 1,
+ setLocs: locs,
+ shift: 64 - exponent,
+ }
+ bloomfilter.Size(size)
+ return bloomfilter
+}
+
+// Bloom filter
+type Bloom struct {
+ bitset []uint64
+ ElemNum uint64
+ sizeExp uint64
+ size uint64
+ setLocs uint64
+ shift uint64
+}
+
+// <--- http://www.cse.yorku.ca/~oz/hash.html
+// modified Berkeley DB Hash (32bit)
+// hash is casted to l, h = 16bit fragments
+// func (bl Bloom) absdbm(b *[]byte) (l, h uint64) {
+// hash := uint64(len(*b))
+// for _, c := range *b {
+// hash = uint64(c) + (hash << 6) + (hash << bl.sizeExp) - hash
+// }
+// h = hash >> bl.shift
+// l = hash << bl.shift >> bl.shift
+// return l, h
+// }
+
+// Add adds hash of a key to the bloomfilter.
+func (bl *Bloom) Add(hash uint64) {
+ h := hash >> bl.shift
+ l := hash << bl.shift >> bl.shift
+ for i := uint64(0); i < bl.setLocs; i++ {
+ bl.Set((h + i*l) & bl.size)
+ bl.ElemNum++
+ }
+}
+
+// Has checks if bit(s) for entry hash is/are set,
+// returns true if the hash was added to the Bloom Filter.
+func (bl Bloom) Has(hash uint64) bool {
+ h := hash >> bl.shift
+ l := hash << bl.shift >> bl.shift
+ for i := uint64(0); i < bl.setLocs; i++ {
+ if !bl.IsSet((h + i*l) & bl.size) {
+ return false
+ }
+ }
+ return true
+}
+
+// AddIfNotHas only Adds hash, if it's not present in the bloomfilter.
+// Returns true if hash was added.
+// Returns false if hash was already registered in the bloomfilter.
+func (bl *Bloom) AddIfNotHas(hash uint64) bool {
+ if bl.Has(hash) {
+ return false
+ }
+ bl.Add(hash)
+ return true
+}
+
+// TotalSize returns the total size of the bloom filter.
+func (bl *Bloom) TotalSize() int {
+ // The bl struct has 5 members and each one is 8 byte. The bitset is a
+ // uint64 byte slice.
+ return len(bl.bitset)*8 + 5*8
+}
+
+// Size makes Bloom filter with as bitset of size sz.
+func (bl *Bloom) Size(sz uint64) {
+ bl.bitset = make([]uint64, sz>>6)
+}
+
+// Clear resets the Bloom filter.
+func (bl *Bloom) Clear() {
+ for i := range bl.bitset {
+ bl.bitset[i] = 0
+ }
+}
+
+// Set sets the bit[idx] of bitset.
+func (bl *Bloom) Set(idx uint64) {
+ ptr := unsafe.Pointer(uintptr(unsafe.Pointer(&bl.bitset[idx>>6])) + uintptr((idx%64)>>3))
+ *(*uint8)(ptr) |= mask[idx%8]
+}
+
+// IsSet checks if bit[idx] of bitset is set, returns true/false.
+func (bl *Bloom) IsSet(idx uint64) bool {
+ ptr := unsafe.Pointer(uintptr(unsafe.Pointer(&bl.bitset[idx>>6])) + uintptr((idx%64)>>3))
+ r := ((*(*uint8)(ptr)) >> (idx % 8)) & 1
+ return r == 1
+}
diff --git a/go/cache/ristretto/bloom/bbloom_test.go b/go/cache/ristretto/bloom/bbloom_test.go
new file mode 100644
index 00000000000..960fb034e63
--- /dev/null
+++ b/go/cache/ristretto/bloom/bbloom_test.go
@@ -0,0 +1,83 @@
+package bloom
+
+import (
+ "crypto/rand"
+ "fmt"
+ "os"
+ "testing"
+
+ "vitess.io/vitess/go/hack"
+)
+
+var (
+ wordlist1 [][]byte
+ n = uint64(1 << 16)
+ bf *Bloom
+)
+
+func TestMain(m *testing.M) {
+ wordlist1 = make([][]byte, n)
+ for i := range wordlist1 {
+ b := make([]byte, 32)
+ rand.Read(b)
+ wordlist1[i] = b
+ }
+ fmt.Println("\n###############\nbbloom_test.go")
+ fmt.Print("Benchmarks relate to 2**16 OP. --> output/65536 op/ns\n###############\n\n")
+
+ os.Exit(m.Run())
+}
+
+func TestM_NumberOfWrongs(t *testing.T) {
+ bf = NewBloomFilter(n*10, 7)
+
+ cnt := 0
+ for i := range wordlist1 {
+ hash := hack.RuntimeMemhash(wordlist1[i], 0)
+ if !bf.AddIfNotHas(hash) {
+ cnt++
+ }
+ }
+ fmt.Printf("Bloomfilter New(7* 2**16, 7) (-> size=%v bit): \n Check for 'false positives': %v wrong positive 'Has' results on 2**16 entries => %v %%\n", len(bf.bitset)<<6, cnt, float64(cnt)/float64(n))
+
+}
+
+func BenchmarkM_New(b *testing.B) {
+ for r := 0; r < b.N; r++ {
+ _ = NewBloomFilter(n*10, 7)
+ }
+}
+
+func BenchmarkM_Clear(b *testing.B) {
+ bf = NewBloomFilter(n*10, 7)
+ for i := range wordlist1 {
+ hash := hack.RuntimeMemhash(wordlist1[i], 0)
+ bf.Add(hash)
+ }
+ b.ResetTimer()
+ for r := 0; r < b.N; r++ {
+ bf.Clear()
+ }
+}
+
+func BenchmarkM_Add(b *testing.B) {
+ bf = NewBloomFilter(n*10, 7)
+ b.ResetTimer()
+ for r := 0; r < b.N; r++ {
+ for i := range wordlist1 {
+ hash := hack.RuntimeMemhash(wordlist1[i], 0)
+ bf.Add(hash)
+ }
+ }
+
+}
+
+func BenchmarkM_Has(b *testing.B) {
+ b.ResetTimer()
+ for r := 0; r < b.N; r++ {
+ for i := range wordlist1 {
+ hash := hack.RuntimeMemhash(wordlist1[i], 0)
+ bf.Has(hash)
+ }
+ }
+}
diff --git a/go/cache/ristretto/cache.go b/go/cache/ristretto/cache.go
new file mode 100644
index 00000000000..bb39a3ff359
--- /dev/null
+++ b/go/cache/ristretto/cache.go
@@ -0,0 +1,681 @@
+/*
+ * Copyright 2019 Dgraph Labs, Inc. and Contributors
+ * Copyright 2021 The Vitess Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Package ristretto is a fast, fixed size, in-memory cache with a dual focus on
+// throughput and hit ratio performance. You can easily add Ristretto to an
+// existing system and keep the most valuable data where you need it.
+package ristretto
+
+import (
+ "bytes"
+ "errors"
+ "fmt"
+ "sync"
+ "sync/atomic"
+ "time"
+ "unsafe"
+
+ "vitess.io/vitess/go/hack"
+)
+
+var (
+ // TODO: find the optimal value for this or make it configurable
+ setBufSize = 32 * 1024
+)
+
+func defaultStringHash(key string) (uint64, uint64) {
+ const Seed1 = uint64(0x1122334455667788)
+ const Seed2 = uint64(0x8877665544332211)
+ return hack.RuntimeStrhash(key, Seed1), hack.RuntimeStrhash(key, Seed2)
+}
+
+type itemCallback func(*Item)
+
+// CacheItemSize is the overhead in bytes for every stored cache item
+const CacheItemSize = int64(unsafe.Sizeof(storeItem{}))
+
+// Cache is a thread-safe implementation of a hashmap with a TinyLFU admission
+// policy and a Sampled LFU eviction policy. You can use the same Cache instance
+// from as many goroutines as you want.
+type Cache struct {
+ // store is the central concurrent hashmap where key-value items are stored.
+ store store
+ // policy determines what gets let in to the cache and what gets kicked out.
+ policy policy
+ // getBuf is a custom ring buffer implementation that gets pushed to when
+ // keys are read.
+ getBuf *ringBuffer
+ // setBuf is a buffer allowing us to batch/drop Sets during times of high
+ // contention.
+ setBuf chan *Item
+ // onEvict is called for item evictions.
+ onEvict itemCallback
+ // onReject is called when an item is rejected via admission policy.
+ onReject itemCallback
+ // onExit is called whenever a value goes out of scope from the cache.
+ onExit func(interface{})
+ // KeyToHash function is used to customize the key hashing algorithm.
+ // Each key will be hashed using the provided function. If keyToHash value
+ // is not set, the default keyToHash function is used.
+ keyToHash func(string) (uint64, uint64)
+ // stop is used to stop the processItems goroutine.
+ stop chan struct{}
+ // indicates whether cache is closed.
+ isClosed bool
+ // cost calculates cost from a value.
+ cost func(value interface{}) int64
+ // ignoreInternalCost dictates whether to ignore the cost of internally storing
+ // the item in the cost calculation.
+ ignoreInternalCost bool
+ // Metrics contains a running log of important statistics like hits, misses,
+ // and dropped items.
+ Metrics *Metrics
+}
+
+// Config is passed to NewCache for creating new Cache instances.
+type Config struct {
+ // NumCounters determines the number of counters (keys) to keep that hold
+ // access frequency information. It's generally a good idea to have more
+ // counters than the max cache capacity, as this will improve eviction
+ // accuracy and subsequent hit ratios.
+ //
+ // For example, if you expect your cache to hold 1,000,000 items when full,
+ // NumCounters should be 10,000,000 (10x). Each counter takes up 4 bits, so
+ // keeping 10,000,000 counters would require 5MB of memory.
+ NumCounters int64
+ // MaxCost can be considered as the cache capacity, in whatever units you
+ // choose to use.
+ //
+ // For example, if you want the cache to have a max capacity of 100MB, you
+ // would set MaxCost to 100,000,000 and pass an item's number of bytes as
+ // the `cost` parameter for calls to Set. If new items are accepted, the
+ // eviction process will take care of making room for the new item and not
+ // overflowing the MaxCost value.
+ MaxCost int64
+ // BufferItems determines the size of Get buffers.
+ //
+ // Unless you have a rare use case, using `64` as the BufferItems value
+ // results in good performance.
+ BufferItems int64
+ // Metrics determines whether cache statistics are kept during the cache's
+ // lifetime. There *is* some overhead to keeping statistics, so you should
+ // only set this flag to true when testing or throughput performance isn't a
+ // major factor.
+ Metrics bool
+ // OnEvict is called for every eviction and passes the hashed key, value,
+ // and cost to the function.
+ OnEvict func(item *Item)
+ // OnReject is called for every rejection done via the policy.
+ OnReject func(item *Item)
+ // OnExit is called whenever a value is removed from cache. This can be
+ // used to do manual memory deallocation. Would also be called on eviction
+ // and rejection of the value.
+ OnExit func(val interface{})
+ // KeyToHash function is used to customize the key hashing algorithm.
+ // Each key will be hashed using the provided function. If keyToHash value
+ // is not set, the default keyToHash function is used.
+ KeyToHash func(string) (uint64, uint64)
+ // Cost evaluates a value and outputs a corresponding cost. This function
+ // is ran after Set is called for a new item or an item update with a cost
+ // param of 0.
+ Cost func(value interface{}) int64
+ // IgnoreInternalCost set to true indicates to the cache that the cost of
+ // internally storing the value should be ignored. This is useful when the
+ // cost passed to set is not using bytes as units. Keep in mind that setting
+ // this to true will increase the memory usage.
+ IgnoreInternalCost bool
+}
+
+type itemFlag byte
+
+const (
+ itemNew itemFlag = iota
+ itemDelete
+ itemUpdate
+)
+
+// Item is passed to setBuf so items can eventually be added to the cache.
+type Item struct {
+ flag itemFlag
+ Key uint64
+ Conflict uint64
+ Value interface{}
+ Cost int64
+ wg *sync.WaitGroup
+}
+
+// NewCache returns a new Cache instance and any configuration errors, if any.
+func NewCache(config *Config) (*Cache, error) {
+ switch {
+ case config.NumCounters == 0:
+ return nil, errors.New("NumCounters can't be zero")
+ case config.MaxCost == 0:
+ return nil, errors.New("Capacity can't be zero")
+ case config.BufferItems == 0:
+ return nil, errors.New("BufferItems can't be zero")
+ }
+ policy := newPolicy(config.NumCounters, config.MaxCost)
+ cache := &Cache{
+ store: newStore(),
+ policy: policy,
+ getBuf: newRingBuffer(policy, config.BufferItems),
+ setBuf: make(chan *Item, setBufSize),
+ keyToHash: config.KeyToHash,
+ stop: make(chan struct{}),
+ cost: config.Cost,
+ ignoreInternalCost: config.IgnoreInternalCost,
+ }
+ cache.onExit = func(val interface{}) {
+ if config.OnExit != nil && val != nil {
+ config.OnExit(val)
+ }
+ }
+ cache.onEvict = func(item *Item) {
+ if config.OnEvict != nil {
+ config.OnEvict(item)
+ }
+ cache.onExit(item.Value)
+ }
+ cache.onReject = func(item *Item) {
+ if config.OnReject != nil {
+ config.OnReject(item)
+ }
+ cache.onExit(item.Value)
+ }
+ if cache.keyToHash == nil {
+ cache.keyToHash = defaultStringHash
+ }
+ if config.Metrics {
+ cache.collectMetrics()
+ }
+ // NOTE: benchmarks seem to show that performance decreases the more
+ // goroutines we have running cache.processItems(), so 1 should
+ // usually be sufficient
+ go cache.processItems()
+ return cache, nil
+}
+
+// Wait blocks until all the current cache operations have been processed in the background
+func (c *Cache) Wait() {
+ if c == nil || c.isClosed {
+ return
+ }
+ wg := &sync.WaitGroup{}
+ wg.Add(1)
+ c.setBuf <- &Item{wg: wg}
+ wg.Wait()
+}
+
+// Get returns the value (if any) and a boolean representing whether the
+// value was found or not. The value can be nil and the boolean can be true at
+// the same time.
+func (c *Cache) Get(key string) (interface{}, bool) {
+ if c == nil || c.isClosed {
+ return nil, false
+ }
+ keyHash, conflictHash := c.keyToHash(key)
+ c.getBuf.Push(keyHash)
+ value, ok := c.store.Get(keyHash, conflictHash)
+ if ok {
+ c.Metrics.add(hit, keyHash, 1)
+ } else {
+ c.Metrics.add(miss, keyHash, 1)
+ }
+ return value, ok
+}
+
+// Set attempts to add the key-value item to the cache. If it returns false,
+// then the Set was dropped and the key-value item isn't added to the cache. If
+// it returns true, there's still a chance it could be dropped by the policy if
+// its determined that the key-value item isn't worth keeping, but otherwise the
+// item will be added and other items will be evicted in order to make room.
+//
+// The cost of the entry will be evaluated lazily by the cache's Cost function.
+func (c *Cache) Set(key string, value interface{}) bool {
+ return c.SetWithCost(key, value, 0)
+}
+
+// SetWithCost works like Set but adds a key-value pair to the cache with a specific
+// cost. The built-in Cost function will not be called to evaluate the object's cost
+// and instead the given value will be used.
+func (c *Cache) SetWithCost(key string, value interface{}, cost int64) bool {
+ if c == nil || c.isClosed {
+ return false
+ }
+
+ keyHash, conflictHash := c.keyToHash(key)
+ i := &Item{
+ flag: itemNew,
+ Key: keyHash,
+ Conflict: conflictHash,
+ Value: value,
+ Cost: cost,
+ }
+ // cost is eventually updated. The expiration must also be immediately updated
+ // to prevent items from being prematurely removed from the map.
+ if prev, ok := c.store.Update(i); ok {
+ c.onExit(prev)
+ i.flag = itemUpdate
+ }
+ // Attempt to send item to policy.
+ select {
+ case c.setBuf <- i:
+ return true
+ default:
+ if i.flag == itemUpdate {
+ // Return true if this was an update operation since we've already
+ // updated the store. For all the other operations (set/delete), we
+ // return false which means the item was not inserted.
+ return true
+ }
+ c.Metrics.add(dropSets, keyHash, 1)
+ return false
+ }
+}
+
+// Delete deletes the key-value item from the cache if it exists.
+func (c *Cache) Delete(key string) {
+ if c == nil || c.isClosed {
+ return
+ }
+ keyHash, conflictHash := c.keyToHash(key)
+ // Delete immediately.
+ _, prev := c.store.Del(keyHash, conflictHash)
+ c.onExit(prev)
+ // If we've set an item, it would be applied slightly later.
+ // So we must push the same item to `setBuf` with the deletion flag.
+ // This ensures that if a set is followed by a delete, it will be
+ // applied in the correct order.
+ c.setBuf <- &Item{
+ flag: itemDelete,
+ Key: keyHash,
+ Conflict: conflictHash,
+ }
+}
+
+// Close stops all goroutines and closes all channels.
+func (c *Cache) Close() {
+ if c == nil || c.isClosed {
+ return
+ }
+ c.Clear()
+
+ // Block until processItems goroutine is returned.
+ c.stop <- struct{}{}
+ close(c.stop)
+ close(c.setBuf)
+ c.policy.Close()
+ c.isClosed = true
+}
+
+// Clear empties the hashmap and zeroes all policy counters. Note that this is
+// not an atomic operation (but that shouldn't be a problem as it's assumed that
+// Set/Get calls won't be occurring until after this).
+func (c *Cache) Clear() {
+ if c == nil || c.isClosed {
+ return
+ }
+ // Block until processItems goroutine is returned.
+ c.stop <- struct{}{}
+
+ // Clear out the setBuf channel.
+loop:
+ for {
+ select {
+ case i := <-c.setBuf:
+ if i.wg != nil {
+ i.wg.Done()
+ continue
+ }
+ if i.flag != itemUpdate {
+ // In itemUpdate, the value is already set in the store. So, no need to call
+ // onEvict here.
+ c.onEvict(i)
+ }
+ default:
+ break loop
+ }
+ }
+
+ // Clear value hashmap and policy data.
+ c.policy.Clear()
+ c.store.Clear(c.onEvict)
+ // Only reset metrics if they're enabled.
+ if c.Metrics != nil {
+ c.Metrics.Clear()
+ }
+ // Restart processItems goroutine.
+ go c.processItems()
+}
+
+// Len returns the size of the cache (in entries)
+func (c *Cache) Len() int {
+ if c == nil {
+ return 0
+ }
+ return c.store.Len()
+}
+
+// UsedCapacity returns the size of the cache (in bytes)
+func (c *Cache) UsedCapacity() int64 {
+ if c == nil {
+ return 0
+ }
+ return c.policy.Used()
+}
+
+// MaxCapacity returns the max cost of the cache (in bytes)
+func (c *Cache) MaxCapacity() int64 {
+ if c == nil {
+ return 0
+ }
+ return c.policy.MaxCost()
+}
+
+// SetCapacity updates the maxCost of an existing cache.
+func (c *Cache) SetCapacity(maxCost int64) {
+ if c == nil {
+ return
+ }
+ c.policy.UpdateMaxCost(maxCost)
+}
+
+// Evictions returns the number of evictions
+func (c *Cache) Evictions() int64 {
+ // TODO
+ if c == nil || c.Metrics == nil {
+ return 0
+ }
+ return int64(c.Metrics.KeysEvicted())
+}
+
+// ForEach yields all the values currently stored in the cache to the given callback.
+// The callback may return `false` to stop the iteration early.
+func (c *Cache) ForEach(forEach func(interface{}) bool) {
+ if c == nil {
+ return
+ }
+ c.store.ForEach(forEach)
+}
+
+// processItems is ran by goroutines processing the Set buffer.
+func (c *Cache) processItems() {
+ startTs := make(map[uint64]time.Time)
+ numToKeep := 100000 // TODO: Make this configurable via options.
+
+ trackAdmission := func(key uint64) {
+ if c.Metrics == nil {
+ return
+ }
+ startTs[key] = time.Now()
+ if len(startTs) > numToKeep {
+ for k := range startTs {
+ if len(startTs) <= numToKeep {
+ break
+ }
+ delete(startTs, k)
+ }
+ }
+ }
+ onEvict := func(i *Item) {
+ delete(startTs, i.Key)
+ if c.onEvict != nil {
+ c.onEvict(i)
+ }
+ }
+
+ for {
+ select {
+ case i := <-c.setBuf:
+ if i.wg != nil {
+ i.wg.Done()
+ continue
+ }
+ // Calculate item cost value if new or update.
+ if i.Cost == 0 && c.cost != nil && i.flag != itemDelete {
+ i.Cost = c.cost(i.Value)
+ }
+ if !c.ignoreInternalCost {
+ // Add the cost of internally storing the object.
+ i.Cost += CacheItemSize
+ }
+
+ switch i.flag {
+ case itemNew:
+ victims, added := c.policy.Add(i.Key, i.Cost)
+ if added {
+ c.store.Set(i)
+ c.Metrics.add(keyAdd, i.Key, 1)
+ trackAdmission(i.Key)
+ } else {
+ c.onReject(i)
+ }
+ for _, victim := range victims {
+ victim.Conflict, victim.Value = c.store.Del(victim.Key, 0)
+ onEvict(victim)
+ }
+
+ case itemUpdate:
+ c.policy.Update(i.Key, i.Cost)
+
+ case itemDelete:
+ c.policy.Del(i.Key) // Deals with metrics updates.
+ _, val := c.store.Del(i.Key, i.Conflict)
+ c.onExit(val)
+ }
+ case <-c.stop:
+ return
+ }
+ }
+}
+
+// collectMetrics just creates a new *Metrics instance and adds the pointers
+// to the cache and policy instances.
+func (c *Cache) collectMetrics() {
+ c.Metrics = newMetrics()
+ c.policy.CollectMetrics(c.Metrics)
+}
+
+type metricType int
+
+const (
+ // The following 2 keep track of hits and misses.
+ hit = iota
+ miss
+ // The following 3 keep track of number of keys added, updated and evicted.
+ keyAdd
+ keyUpdate
+ keyEvict
+ // The following 2 keep track of cost of keys added and evicted.
+ costAdd
+ costEvict
+ // The following keep track of how many sets were dropped or rejected later.
+ dropSets
+ rejectSets
+ // The following 2 keep track of how many gets were kept and dropped on the
+ // floor.
+ dropGets
+ keepGets
+ // This should be the final enum. Other enums should be set before this.
+ doNotUse
+)
+
+func stringFor(t metricType) string {
+ switch t {
+ case hit:
+ return "hit"
+ case miss:
+ return "miss"
+ case keyAdd:
+ return "keys-added"
+ case keyUpdate:
+ return "keys-updated"
+ case keyEvict:
+ return "keys-evicted"
+ case costAdd:
+ return "cost-added"
+ case costEvict:
+ return "cost-evicted"
+ case dropSets:
+ return "sets-dropped"
+ case rejectSets:
+ return "sets-rejected" // by policy.
+ case dropGets:
+ return "gets-dropped"
+ case keepGets:
+ return "gets-kept"
+ default:
+ return "unidentified"
+ }
+}
+
+// Metrics is a snapshot of performance statistics for the lifetime of a cache instance.
+type Metrics struct {
+ all [doNotUse][]*uint64
+}
+
+func newMetrics() *Metrics {
+ s := &Metrics{}
+ for i := 0; i < doNotUse; i++ {
+ s.all[i] = make([]*uint64, 256)
+ slice := s.all[i]
+ for j := range slice {
+ slice[j] = new(uint64)
+ }
+ }
+ return s
+}
+
+func (p *Metrics) add(t metricType, hash, delta uint64) {
+ if p == nil {
+ return
+ }
+ valp := p.all[t]
+ // Avoid false sharing by padding at least 64 bytes of space between two
+ // atomic counters which would be incremented.
+ idx := (hash % 25) * 10
+ atomic.AddUint64(valp[idx], delta)
+}
+
+func (p *Metrics) get(t metricType) uint64 {
+ if p == nil {
+ return 0
+ }
+ valp := p.all[t]
+ var total uint64
+ for i := range valp {
+ total += atomic.LoadUint64(valp[i])
+ }
+ return total
+}
+
+// Hits is the number of Get calls where a value was found for the corresponding key.
+func (p *Metrics) Hits() uint64 {
+ return p.get(hit)
+}
+
+// Misses is the number of Get calls where a value was not found for the corresponding key.
+func (p *Metrics) Misses() uint64 {
+ return p.get(miss)
+}
+
+// KeysAdded is the total number of Set calls where a new key-value item was added.
+func (p *Metrics) KeysAdded() uint64 {
+ return p.get(keyAdd)
+}
+
+// KeysUpdated is the total number of Set calls where the value was updated.
+func (p *Metrics) KeysUpdated() uint64 {
+ return p.get(keyUpdate)
+}
+
+// KeysEvicted is the total number of keys evicted.
+func (p *Metrics) KeysEvicted() uint64 {
+ return p.get(keyEvict)
+}
+
+// CostAdded is the sum of costs that have been added (successful Set calls).
+func (p *Metrics) CostAdded() uint64 {
+ return p.get(costAdd)
+}
+
+// CostEvicted is the sum of all costs that have been evicted.
+func (p *Metrics) CostEvicted() uint64 {
+ return p.get(costEvict)
+}
+
+// SetsDropped is the number of Set calls that don't make it into internal
+// buffers (due to contention or some other reason).
+func (p *Metrics) SetsDropped() uint64 {
+ return p.get(dropSets)
+}
+
+// SetsRejected is the number of Set calls rejected by the policy (TinyLFU).
+func (p *Metrics) SetsRejected() uint64 {
+ return p.get(rejectSets)
+}
+
+// GetsDropped is the number of Get counter increments that are dropped
+// internally.
+func (p *Metrics) GetsDropped() uint64 {
+ return p.get(dropGets)
+}
+
+// GetsKept is the number of Get counter increments that are kept.
+func (p *Metrics) GetsKept() uint64 {
+ return p.get(keepGets)
+}
+
+// Ratio is the number of Hits over all accesses (Hits + Misses). This is the
+// percentage of successful Get calls.
+func (p *Metrics) Ratio() float64 {
+ if p == nil {
+ return 0.0
+ }
+ hits, misses := p.get(hit), p.get(miss)
+ if hits == 0 && misses == 0 {
+ return 0.0
+ }
+ return float64(hits) / float64(hits+misses)
+}
+
+// Clear resets all the metrics.
+func (p *Metrics) Clear() {
+ if p == nil {
+ return
+ }
+ for i := 0; i < doNotUse; i++ {
+ for j := range p.all[i] {
+ atomic.StoreUint64(p.all[i][j], 0)
+ }
+ }
+}
+
+// String returns a string representation of the metrics.
+func (p *Metrics) String() string {
+ if p == nil {
+ return ""
+ }
+ var buf bytes.Buffer
+ for i := 0; i < doNotUse; i++ {
+ t := metricType(i)
+ fmt.Fprintf(&buf, "%s: %d ", stringFor(t), p.get(t))
+ }
+ fmt.Fprintf(&buf, "gets-total: %d ", p.get(hit)+p.get(miss))
+ fmt.Fprintf(&buf, "hit-ratio: %.2f", p.Ratio())
+ return buf.String()
+}
diff --git a/go/cache/ristretto/cache_test.go b/go/cache/ristretto/cache_test.go
new file mode 100644
index 00000000000..a070c6f785a
--- /dev/null
+++ b/go/cache/ristretto/cache_test.go
@@ -0,0 +1,688 @@
+/*
+ * Copyright 2019 Dgraph Labs, Inc. and Contributors
+ * Copyright 2021 The Vitess Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ristretto
+
+import (
+ "fmt"
+ "math/rand"
+ "strconv"
+ "strings"
+ "sync"
+ "testing"
+ "time"
+
+ "github.com/stretchr/testify/require"
+)
+
+var wait = time.Millisecond * 10
+
+func TestCacheKeyToHash(t *testing.T) {
+ keyToHashCount := 0
+ c, err := NewCache(&Config{
+ NumCounters: 10,
+ MaxCost: 1000,
+ BufferItems: 64,
+ IgnoreInternalCost: true,
+ KeyToHash: func(key string) (uint64, uint64) {
+ keyToHashCount++
+ return defaultStringHash(key)
+ },
+ })
+ require.NoError(t, err)
+ if c.SetWithCost("1", 1, 1) {
+ time.Sleep(wait)
+ val, ok := c.Get("1")
+ require.True(t, ok)
+ require.NotNil(t, val)
+ c.Delete("1")
+ }
+ require.Equal(t, 3, keyToHashCount)
+}
+
+func TestCacheMaxCost(t *testing.T) {
+ charset := "abcdefghijklmnopqrstuvwxyz0123456789"
+ key := func() string {
+ k := make([]byte, 2)
+ for i := range k {
+ k[i] = charset[rand.Intn(len(charset))]
+ }
+ return string(k)
+ }
+ c, err := NewCache(&Config{
+ NumCounters: 12960, // 36^2 * 10
+ MaxCost: 1e6, // 1mb
+ BufferItems: 64,
+ Metrics: true,
+ })
+ require.NoError(t, err)
+ stop := make(chan struct{}, 8)
+ for i := 0; i < 8; i++ {
+ go func() {
+ for {
+ select {
+ case <-stop:
+ return
+ default:
+ time.Sleep(time.Millisecond)
+
+ k := key()
+ if _, ok := c.Get(k); !ok {
+ val := ""
+ if rand.Intn(100) < 10 {
+ val = "test"
+ } else {
+ val = strings.Repeat("a", 1000)
+ }
+ c.SetWithCost(key(), val, int64(2+len(val)))
+ }
+ }
+ }
+ }()
+ }
+ for i := 0; i < 20; i++ {
+ time.Sleep(time.Second)
+ cacheCost := c.Metrics.CostAdded() - c.Metrics.CostEvicted()
+ t.Logf("total cache cost: %d\n", cacheCost)
+ require.True(t, float64(cacheCost) <= float64(1e6*1.05))
+ }
+ for i := 0; i < 8; i++ {
+ stop <- struct{}{}
+ }
+}
+
+func TestUpdateMaxCost(t *testing.T) {
+ c, err := NewCache(&Config{
+ NumCounters: 10,
+ MaxCost: 10,
+ BufferItems: 64,
+ })
+ require.NoError(t, err)
+ require.Equal(t, int64(10), c.MaxCapacity())
+ require.True(t, c.SetWithCost("1", 1, 1))
+ time.Sleep(wait)
+ _, ok := c.Get("1")
+ // Set is rejected because the cost of the entry is too high
+ // when accounting for the internal cost of storing the entry.
+ require.False(t, ok)
+
+ // Update the max cost of the cache and retry.
+ c.SetCapacity(1000)
+ require.Equal(t, int64(1000), c.MaxCapacity())
+ require.True(t, c.SetWithCost("1", 1, 1))
+ time.Sleep(wait)
+ val, ok := c.Get("1")
+ require.True(t, ok)
+ require.NotNil(t, val)
+ c.Delete("1")
+}
+
+func TestNewCache(t *testing.T) {
+ _, err := NewCache(&Config{
+ NumCounters: 0,
+ })
+ require.Error(t, err)
+
+ _, err = NewCache(&Config{
+ NumCounters: 100,
+ MaxCost: 0,
+ })
+ require.Error(t, err)
+
+ _, err = NewCache(&Config{
+ NumCounters: 100,
+ MaxCost: 10,
+ BufferItems: 0,
+ })
+ require.Error(t, err)
+
+ c, err := NewCache(&Config{
+ NumCounters: 100,
+ MaxCost: 10,
+ BufferItems: 64,
+ Metrics: true,
+ })
+ require.NoError(t, err)
+ require.NotNil(t, c)
+}
+
+func TestNilCache(t *testing.T) {
+ var c *Cache
+ val, ok := c.Get("1")
+ require.False(t, ok)
+ require.Nil(t, val)
+
+ require.False(t, c.SetWithCost("1", 1, 1))
+ c.Delete("1")
+ c.Clear()
+ c.Close()
+}
+
+func TestMultipleClose(t *testing.T) {
+ var c *Cache
+ c.Close()
+
+ var err error
+ c, err = NewCache(&Config{
+ NumCounters: 100,
+ MaxCost: 10,
+ BufferItems: 64,
+ Metrics: true,
+ })
+ require.NoError(t, err)
+ c.Close()
+ c.Close()
+}
+
+func TestSetAfterClose(t *testing.T) {
+ c, err := newTestCache()
+ require.NoError(t, err)
+ require.NotNil(t, c)
+
+ c.Close()
+ require.False(t, c.SetWithCost("1", 1, 1))
+}
+
+func TestClearAfterClose(t *testing.T) {
+ c, err := newTestCache()
+ require.NoError(t, err)
+ require.NotNil(t, c)
+
+ c.Close()
+ c.Clear()
+}
+
+func TestGetAfterClose(t *testing.T) {
+ c, err := newTestCache()
+ require.NoError(t, err)
+ require.NotNil(t, c)
+
+ require.True(t, c.SetWithCost("1", 1, 1))
+ c.Close()
+
+ _, ok := c.Get("2")
+ require.False(t, ok)
+}
+
+func TestDelAfterClose(t *testing.T) {
+ c, err := newTestCache()
+ require.NoError(t, err)
+ require.NotNil(t, c)
+
+ require.True(t, c.SetWithCost("1", 1, 1))
+ c.Close()
+
+ c.Delete("1")
+}
+
+func TestCacheProcessItems(t *testing.T) {
+ m := &sync.Mutex{}
+ evicted := make(map[uint64]struct{})
+ c, err := NewCache(&Config{
+ NumCounters: 100,
+ MaxCost: 10,
+ BufferItems: 64,
+ IgnoreInternalCost: true,
+ Cost: func(value interface{}) int64 {
+ return int64(value.(int))
+ },
+ OnEvict: func(item *Item) {
+ m.Lock()
+ defer m.Unlock()
+ evicted[item.Key] = struct{}{}
+ },
+ })
+ require.NoError(t, err)
+
+ var key uint64
+ var conflict uint64
+
+ key, conflict = defaultStringHash("1")
+ c.setBuf <- &Item{
+ flag: itemNew,
+ Key: key,
+ Conflict: conflict,
+ Value: 1,
+ Cost: 0,
+ }
+ time.Sleep(wait)
+ require.True(t, c.policy.Has(key))
+ require.Equal(t, int64(1), c.policy.Cost(key))
+
+ key, conflict = defaultStringHash("1")
+ c.setBuf <- &Item{
+ flag: itemUpdate,
+ Key: key,
+ Conflict: conflict,
+ Value: 2,
+ Cost: 0,
+ }
+ time.Sleep(wait)
+ require.Equal(t, int64(2), c.policy.Cost(key))
+
+ key, conflict = defaultStringHash("1")
+ c.setBuf <- &Item{
+ flag: itemDelete,
+ Key: key,
+ Conflict: conflict,
+ }
+ time.Sleep(wait)
+ key, conflict = defaultStringHash("1")
+ val, ok := c.store.Get(key, conflict)
+ require.False(t, ok)
+ require.Nil(t, val)
+ require.False(t, c.policy.Has(1))
+
+ key, conflict = defaultStringHash("2")
+ c.setBuf <- &Item{
+ flag: itemNew,
+ Key: key,
+ Conflict: conflict,
+ Value: 2,
+ Cost: 3,
+ }
+ key, conflict = defaultStringHash("3")
+ c.setBuf <- &Item{
+ flag: itemNew,
+ Key: key,
+ Conflict: conflict,
+ Value: 3,
+ Cost: 3,
+ }
+ key, conflict = defaultStringHash("4")
+ c.setBuf <- &Item{
+ flag: itemNew,
+ Key: key,
+ Conflict: conflict,
+ Value: 3,
+ Cost: 3,
+ }
+ key, conflict = defaultStringHash("5")
+ c.setBuf <- &Item{
+ flag: itemNew,
+ Key: key,
+ Conflict: conflict,
+ Value: 3,
+ Cost: 5,
+ }
+ time.Sleep(wait)
+ m.Lock()
+ require.NotEqual(t, 0, len(evicted))
+ m.Unlock()
+
+ defer func() {
+ require.NotNil(t, recover())
+ }()
+ c.Close()
+ c.setBuf <- &Item{flag: itemNew}
+}
+
+func TestCacheGet(t *testing.T) {
+ c, err := NewCache(&Config{
+ NumCounters: 100,
+ MaxCost: 10,
+ BufferItems: 64,
+ IgnoreInternalCost: true,
+ Metrics: true,
+ })
+ require.NoError(t, err)
+
+ key, conflict := defaultStringHash("1")
+ i := Item{
+ Key: key,
+ Conflict: conflict,
+ Value: 1,
+ }
+ c.store.Set(&i)
+ val, ok := c.Get("1")
+ require.True(t, ok)
+ require.NotNil(t, val)
+
+ val, ok = c.Get("2")
+ require.False(t, ok)
+ require.Nil(t, val)
+
+ // 0.5 and not 1.0 because we tried Getting each item twice
+ require.Equal(t, 0.5, c.Metrics.Ratio())
+
+ c = nil
+ val, ok = c.Get("0")
+ require.False(t, ok)
+ require.Nil(t, val)
+}
+
+// retrySet calls SetWithCost until the item is accepted by the cache.
+func retrySet(t *testing.T, c *Cache, key string, value int, cost int64) {
+ for {
+ if set := c.SetWithCost(key, value, cost); !set {
+ time.Sleep(wait)
+ continue
+ }
+
+ time.Sleep(wait)
+ val, ok := c.Get(key)
+ require.True(t, ok)
+ require.NotNil(t, val)
+ require.Equal(t, value, val.(int))
+ return
+ }
+}
+
+func TestCacheSet(t *testing.T) {
+ c, err := NewCache(&Config{
+ NumCounters: 100,
+ MaxCost: 10,
+ IgnoreInternalCost: true,
+ BufferItems: 64,
+ Metrics: true,
+ })
+ require.NoError(t, err)
+
+ retrySet(t, c, "1", 1, 1)
+
+ c.SetWithCost("1", 2, 2)
+ val, ok := c.store.Get(defaultStringHash("1"))
+ require.True(t, ok)
+ require.Equal(t, 2, val.(int))
+
+ c.stop <- struct{}{}
+ for i := 0; i < setBufSize; i++ {
+ key, conflict := defaultStringHash("1")
+ c.setBuf <- &Item{
+ flag: itemUpdate,
+ Key: key,
+ Conflict: conflict,
+ Value: 1,
+ Cost: 1,
+ }
+ }
+ require.False(t, c.SetWithCost("2", 2, 1))
+ require.Equal(t, uint64(1), c.Metrics.SetsDropped())
+ close(c.setBuf)
+ close(c.stop)
+
+ c = nil
+ require.False(t, c.SetWithCost("1", 1, 1))
+}
+
+func TestCacheInternalCost(t *testing.T) {
+ c, err := NewCache(&Config{
+ NumCounters: 100,
+ MaxCost: 10,
+ BufferItems: 64,
+ Metrics: true,
+ })
+ require.NoError(t, err)
+
+ // Get should return false because the cache's cost is too small to store the item
+ // when accounting for the internal cost.
+ c.SetWithCost("1", 1, 1)
+ time.Sleep(wait)
+ _, ok := c.Get("1")
+ require.False(t, ok)
+}
+
+func TestCacheDel(t *testing.T) {
+ c, err := NewCache(&Config{
+ NumCounters: 100,
+ MaxCost: 10,
+ BufferItems: 64,
+ })
+ require.NoError(t, err)
+
+ c.SetWithCost("1", 1, 1)
+ c.Delete("1")
+ // The deletes and sets are pushed through the setbuf. It might be possible
+ // that the delete is not processed before the following get is called. So
+ // wait for a millisecond for things to be processed.
+ time.Sleep(time.Millisecond)
+ val, ok := c.Get("1")
+ require.False(t, ok)
+ require.Nil(t, val)
+
+ c = nil
+ defer func() {
+ require.Nil(t, recover())
+ }()
+ c.Delete("1")
+}
+
+func TestCacheClear(t *testing.T) {
+ c, err := NewCache(&Config{
+ NumCounters: 100,
+ MaxCost: 10,
+ IgnoreInternalCost: true,
+ BufferItems: 64,
+ Metrics: true,
+ })
+ require.NoError(t, err)
+
+ for i := 0; i < 10; i++ {
+ c.SetWithCost(strconv.Itoa(i), i, 1)
+ }
+ time.Sleep(wait)
+ require.Equal(t, uint64(10), c.Metrics.KeysAdded())
+
+ c.Clear()
+ require.Equal(t, uint64(0), c.Metrics.KeysAdded())
+
+ for i := 0; i < 10; i++ {
+ val, ok := c.Get(strconv.Itoa(i))
+ require.False(t, ok)
+ require.Nil(t, val)
+ }
+}
+
+func TestCacheMetrics(t *testing.T) {
+ c, err := NewCache(&Config{
+ NumCounters: 100,
+ MaxCost: 10,
+ IgnoreInternalCost: true,
+ BufferItems: 64,
+ Metrics: true,
+ })
+ require.NoError(t, err)
+
+ for i := 0; i < 10; i++ {
+ c.SetWithCost(strconv.Itoa(i), i, 1)
+ }
+ time.Sleep(wait)
+ m := c.Metrics
+ require.Equal(t, uint64(10), m.KeysAdded())
+}
+
+func TestMetrics(t *testing.T) {
+ newMetrics()
+}
+
+func TestNilMetrics(t *testing.T) {
+ var m *Metrics
+ for _, f := range []func() uint64{
+ m.Hits,
+ m.Misses,
+ m.KeysAdded,
+ m.KeysEvicted,
+ m.CostEvicted,
+ m.SetsDropped,
+ m.SetsRejected,
+ m.GetsDropped,
+ m.GetsKept,
+ } {
+ require.Equal(t, uint64(0), f())
+ }
+}
+
+func TestMetricsAddGet(t *testing.T) {
+ m := newMetrics()
+ m.add(hit, 1, 1)
+ m.add(hit, 2, 2)
+ m.add(hit, 3, 3)
+ require.Equal(t, uint64(6), m.Hits())
+
+ m = nil
+ m.add(hit, 1, 1)
+ require.Equal(t, uint64(0), m.Hits())
+}
+
+func TestMetricsRatio(t *testing.T) {
+ m := newMetrics()
+ require.Equal(t, float64(0), m.Ratio())
+
+ m.add(hit, 1, 1)
+ m.add(hit, 2, 2)
+ m.add(miss, 1, 1)
+ m.add(miss, 2, 2)
+ require.Equal(t, 0.5, m.Ratio())
+
+ m = nil
+ require.Equal(t, float64(0), m.Ratio())
+}
+
+func TestMetricsString(t *testing.T) {
+ m := newMetrics()
+ m.add(hit, 1, 1)
+ m.add(miss, 1, 1)
+ m.add(keyAdd, 1, 1)
+ m.add(keyUpdate, 1, 1)
+ m.add(keyEvict, 1, 1)
+ m.add(costAdd, 1, 1)
+ m.add(costEvict, 1, 1)
+ m.add(dropSets, 1, 1)
+ m.add(rejectSets, 1, 1)
+ m.add(dropGets, 1, 1)
+ m.add(keepGets, 1, 1)
+ require.Equal(t, uint64(1), m.Hits())
+ require.Equal(t, uint64(1), m.Misses())
+ require.Equal(t, 0.5, m.Ratio())
+ require.Equal(t, uint64(1), m.KeysAdded())
+ require.Equal(t, uint64(1), m.KeysUpdated())
+ require.Equal(t, uint64(1), m.KeysEvicted())
+ require.Equal(t, uint64(1), m.CostAdded())
+ require.Equal(t, uint64(1), m.CostEvicted())
+ require.Equal(t, uint64(1), m.SetsDropped())
+ require.Equal(t, uint64(1), m.SetsRejected())
+ require.Equal(t, uint64(1), m.GetsDropped())
+ require.Equal(t, uint64(1), m.GetsKept())
+
+ require.NotEqual(t, 0, len(m.String()))
+
+ m = nil
+ require.Equal(t, 0, len(m.String()))
+
+ require.Equal(t, "unidentified", stringFor(doNotUse))
+}
+
+func TestCacheMetricsClear(t *testing.T) {
+ c, err := NewCache(&Config{
+ NumCounters: 100,
+ MaxCost: 10,
+ BufferItems: 64,
+ Metrics: true,
+ })
+ require.NoError(t, err)
+
+ c.SetWithCost("1", 1, 1)
+ stop := make(chan struct{})
+ go func() {
+ for {
+ select {
+ case <-stop:
+ return
+ default:
+ c.Get("1")
+ }
+ }
+ }()
+ time.Sleep(wait)
+ c.Clear()
+ stop <- struct{}{}
+ c.Metrics = nil
+ c.Metrics.Clear()
+}
+
+// Regression test for bug https://github.com/dgraph-io/ristretto/issues/167
+func TestDropUpdates(t *testing.T) {
+ originalSetBugSize := setBufSize
+ defer func() { setBufSize = originalSetBugSize }()
+
+ test := func() {
+ // dropppedMap stores the items dropped from the cache.
+ droppedMap := make(map[int]struct{})
+ lastEvictedSet := int64(-1)
+
+ var err error
+ handler := func(_ interface{}, value interface{}) {
+ v := value.(string)
+ lastEvictedSet, err = strconv.ParseInt(string(v), 10, 32)
+ require.NoError(t, err)
+
+ _, ok := droppedMap[int(lastEvictedSet)]
+ if ok {
+ panic(fmt.Sprintf("val = %+v was dropped but it got evicted. Dropped items: %+v\n",
+ lastEvictedSet, droppedMap))
+ }
+ }
+
+ // This is important. The race condition shows up only when the setBuf
+ // is full and that's why we reduce the buf size here. The test will
+ // try to fill up the setbuf to it's capacity and then perform an
+ // update on a key.
+ setBufSize = 10
+
+ c, err := NewCache(&Config{
+ NumCounters: 100,
+ MaxCost: 10,
+ BufferItems: 64,
+ Metrics: true,
+ OnEvict: func(item *Item) {
+ if item.Value != nil {
+ handler(nil, item.Value)
+ }
+ },
+ })
+ require.NoError(t, err)
+
+ for i := 0; i < 5*setBufSize; i++ {
+ v := fmt.Sprintf("%0100d", i)
+ // We're updating the same key.
+ if !c.SetWithCost("0", v, 1) {
+ // The race condition doesn't show up without this sleep.
+ time.Sleep(time.Microsecond)
+ droppedMap[i] = struct{}{}
+ }
+ }
+ // Wait for all the items to be processed.
+ c.Wait()
+ // This will cause eviction from the cache.
+ require.True(t, c.SetWithCost("1", nil, 10))
+ c.Close()
+ }
+
+ // Run the test 100 times since it's not reliable.
+ for i := 0; i < 100; i++ {
+ test()
+ }
+}
+
+func newTestCache() (*Cache, error) {
+ return NewCache(&Config{
+ NumCounters: 100,
+ MaxCost: 10,
+ BufferItems: 64,
+ Metrics: true,
+ })
+}
diff --git a/go/cache/ristretto/policy.go b/go/cache/ristretto/policy.go
new file mode 100644
index 00000000000..38ffbf6d3d6
--- /dev/null
+++ b/go/cache/ristretto/policy.go
@@ -0,0 +1,422 @@
+/*
+ * Copyright 2020 Dgraph Labs, Inc. and Contributors
+ * Copyright 2021 The Vitess Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ristretto
+
+import (
+ "math"
+ "sync"
+ "sync/atomic"
+
+ "vitess.io/vitess/go/cache/ristretto/bloom"
+)
+
+const (
+ // lfuSample is the number of items to sample when looking at eviction
+ // candidates. 5 seems to be the most optimal number [citation needed].
+ lfuSample = 5
+)
+
+// policy is the interface encapsulating eviction/admission behavior.
+//
+// TODO: remove this interface and just rename defaultPolicy to policy, as we
+// are probably only going to use/implement/maintain one policy.
+type policy interface {
+ ringConsumer
+ // Add attempts to Add the key-cost pair to the Policy. It returns a slice
+ // of evicted keys and a bool denoting whether or not the key-cost pair
+ // was added. If it returns true, the key should be stored in cache.
+ Add(uint64, int64) ([]*Item, bool)
+ // Has returns true if the key exists in the Policy.
+ Has(uint64) bool
+ // Del deletes the key from the Policy.
+ Del(uint64)
+ // Cap returns the amount of used capacity.
+ Used() int64
+ // Close stops all goroutines and closes all channels.
+ Close()
+ // Update updates the cost value for the key.
+ Update(uint64, int64)
+ // Cost returns the cost value of a key or -1 if missing.
+ Cost(uint64) int64
+ // Optionally, set stats object to track how policy is performing.
+ CollectMetrics(*Metrics)
+ // Clear zeroes out all counters and clears hashmaps.
+ Clear()
+ // MaxCost returns the current max cost of the cache policy.
+ MaxCost() int64
+ // UpdateMaxCost updates the max cost of the cache policy.
+ UpdateMaxCost(int64)
+}
+
+func newPolicy(numCounters, maxCost int64) policy {
+ return newDefaultPolicy(numCounters, maxCost)
+}
+
+type defaultPolicy struct {
+ sync.Mutex
+ admit *tinyLFU
+ evict *sampledLFU
+ itemsCh chan []uint64
+ stop chan struct{}
+ isClosed bool
+ metrics *Metrics
+ numCounters int64
+ maxCost int64
+}
+
+func newDefaultPolicy(numCounters, maxCost int64) *defaultPolicy {
+ p := &defaultPolicy{
+ admit: newTinyLFU(numCounters),
+ evict: newSampledLFU(maxCost),
+ itemsCh: make(chan []uint64, 3),
+ stop: make(chan struct{}),
+ numCounters: numCounters,
+ maxCost: maxCost,
+ }
+ go p.processItems()
+ return p
+}
+
+func (p *defaultPolicy) CollectMetrics(metrics *Metrics) {
+ p.metrics = metrics
+ p.evict.metrics = metrics
+}
+
+type policyPair struct {
+ key uint64
+ cost int64
+}
+
+func (p *defaultPolicy) processItems() {
+ for {
+ select {
+ case items := <-p.itemsCh:
+ p.Lock()
+ p.admit.Push(items)
+ p.Unlock()
+ case <-p.stop:
+ return
+ }
+ }
+}
+
+func (p *defaultPolicy) Push(keys []uint64) bool {
+ if p.isClosed {
+ return false
+ }
+
+ if len(keys) == 0 {
+ return true
+ }
+
+ select {
+ case p.itemsCh <- keys:
+ p.metrics.add(keepGets, keys[0], uint64(len(keys)))
+ return true
+ default:
+ p.metrics.add(dropGets, keys[0], uint64(len(keys)))
+ return false
+ }
+}
+
+// Add decides whether the item with the given key and cost should be accepted by
+// the policy. It returns the list of victims that have been evicted and a boolean
+// indicating whether the incoming item should be accepted.
+func (p *defaultPolicy) Add(key uint64, cost int64) ([]*Item, bool) {
+ p.Lock()
+ defer p.Unlock()
+
+ // Cannot add an item bigger than entire cache.
+ if cost > p.evict.getMaxCost() {
+ return nil, false
+ }
+
+ // No need to go any further if the item is already in the cache.
+ if has := p.evict.updateIfHas(key, cost); has {
+ // An update does not count as an addition, so return false.
+ return nil, false
+ }
+
+ // If the execution reaches this point, the key doesn't exist in the cache.
+ // Calculate the remaining room in the cache (usually bytes).
+ room := p.evict.roomLeft(cost)
+ if room >= 0 {
+ // There's enough room in the cache to store the new item without
+ // overflowing. Do that now and stop here.
+ p.evict.add(key, cost)
+ p.metrics.add(costAdd, key, uint64(cost))
+ return nil, true
+ }
+
+ // incHits is the hit count for the incoming item.
+ incHits := p.admit.Estimate(key)
+ // sample is the eviction candidate pool to be filled via random sampling.
+ // TODO: perhaps we should use a min heap here. Right now our time
+ // complexity is N for finding the min. Min heap should bring it down to
+ // O(lg N).
+ sample := make([]*policyPair, 0, lfuSample)
+ // As items are evicted they will be appended to victims.
+ victims := make([]*Item, 0)
+
+ // Delete victims until there's enough space or a minKey is found that has
+ // more hits than incoming item.
+ for ; room < 0; room = p.evict.roomLeft(cost) {
+ // Fill up empty slots in sample.
+ sample = p.evict.fillSample(sample)
+
+ // Find minimally used item in sample.
+ minKey, minHits, minID, minCost := uint64(0), int64(math.MaxInt64), 0, int64(0)
+ for i, pair := range sample {
+ // Look up hit count for sample key.
+ if hits := p.admit.Estimate(pair.key); hits < minHits {
+ minKey, minHits, minID, minCost = pair.key, hits, i, pair.cost
+ }
+ }
+
+ // If the incoming item isn't worth keeping in the policy, reject.
+ if incHits < minHits {
+ p.metrics.add(rejectSets, key, 1)
+ return victims, false
+ }
+
+ // Delete the victim from metadata.
+ p.evict.del(minKey)
+
+ // Delete the victim from sample.
+ sample[minID] = sample[len(sample)-1]
+ sample = sample[:len(sample)-1]
+ // Store victim in evicted victims slice.
+ victims = append(victims, &Item{
+ Key: minKey,
+ Conflict: 0,
+ Cost: minCost,
+ })
+ }
+
+ p.evict.add(key, cost)
+ p.metrics.add(costAdd, key, uint64(cost))
+ return victims, true
+}
+
+func (p *defaultPolicy) Has(key uint64) bool {
+ p.Lock()
+ _, exists := p.evict.keyCosts[key]
+ p.Unlock()
+ return exists
+}
+
+func (p *defaultPolicy) Del(key uint64) {
+ p.Lock()
+ p.evict.del(key)
+ p.Unlock()
+}
+
+func (p *defaultPolicy) Used() int64 {
+ p.Lock()
+ used := p.evict.used
+ p.Unlock()
+ return used
+}
+
+func (p *defaultPolicy) Update(key uint64, cost int64) {
+ p.Lock()
+ p.evict.updateIfHas(key, cost)
+ p.Unlock()
+}
+
+func (p *defaultPolicy) Cost(key uint64) int64 {
+ p.Lock()
+ if cost, found := p.evict.keyCosts[key]; found {
+ p.Unlock()
+ return cost
+ }
+ p.Unlock()
+ return -1
+}
+
+func (p *defaultPolicy) Clear() {
+ p.Lock()
+ p.admit = newTinyLFU(p.numCounters)
+ p.evict = newSampledLFU(p.maxCost)
+ p.Unlock()
+}
+
+func (p *defaultPolicy) Close() {
+ if p.isClosed {
+ return
+ }
+
+ // Block until the p.processItems goroutine returns.
+ p.stop <- struct{}{}
+ close(p.stop)
+ close(p.itemsCh)
+ p.isClosed = true
+}
+
+func (p *defaultPolicy) MaxCost() int64 {
+ if p == nil || p.evict == nil {
+ return 0
+ }
+ return p.evict.getMaxCost()
+}
+
+func (p *defaultPolicy) UpdateMaxCost(maxCost int64) {
+ if p == nil || p.evict == nil {
+ return
+ }
+ p.evict.updateMaxCost(maxCost)
+}
+
+// sampledLFU is an eviction helper storing key-cost pairs.
+type sampledLFU struct {
+ keyCosts map[uint64]int64
+ maxCost int64
+ used int64
+ metrics *Metrics
+}
+
+func newSampledLFU(maxCost int64) *sampledLFU {
+ return &sampledLFU{
+ keyCosts: make(map[uint64]int64),
+ maxCost: maxCost,
+ }
+}
+
+func (p *sampledLFU) getMaxCost() int64 {
+ return atomic.LoadInt64(&p.maxCost)
+}
+
+func (p *sampledLFU) updateMaxCost(maxCost int64) {
+ atomic.StoreInt64(&p.maxCost, maxCost)
+}
+
+func (p *sampledLFU) roomLeft(cost int64) int64 {
+ return p.getMaxCost() - (p.used + cost)
+}
+
+func (p *sampledLFU) fillSample(in []*policyPair) []*policyPair {
+ if len(in) >= lfuSample {
+ return in
+ }
+ for key, cost := range p.keyCosts {
+ in = append(in, &policyPair{key, cost})
+ if len(in) >= lfuSample {
+ return in
+ }
+ }
+ return in
+}
+
+func (p *sampledLFU) del(key uint64) {
+ cost, ok := p.keyCosts[key]
+ if !ok {
+ return
+ }
+ p.used -= cost
+ delete(p.keyCosts, key)
+ p.metrics.add(costEvict, key, uint64(cost))
+ p.metrics.add(keyEvict, key, 1)
+}
+
+func (p *sampledLFU) add(key uint64, cost int64) {
+ p.keyCosts[key] = cost
+ p.used += cost
+}
+
+func (p *sampledLFU) updateIfHas(key uint64, cost int64) bool {
+ if prev, found := p.keyCosts[key]; found {
+ // Update the cost of an existing key, but don't worry about evicting.
+ // Evictions will be handled the next time a new item is added.
+ p.metrics.add(keyUpdate, key, 1)
+ if prev > cost {
+ diff := prev - cost
+ p.metrics.add(costAdd, key, ^uint64(uint64(diff)-1))
+ } else if cost > prev {
+ diff := cost - prev
+ p.metrics.add(costAdd, key, uint64(diff))
+ }
+ p.used += cost - prev
+ p.keyCosts[key] = cost
+ return true
+ }
+ return false
+}
+
+func (p *sampledLFU) clear() {
+ p.used = 0
+ p.keyCosts = make(map[uint64]int64)
+}
+
+// tinyLFU is an admission helper that keeps track of access frequency using
+// tiny (4-bit) counters in the form of a count-min sketch.
+// tinyLFU is NOT thread safe.
+type tinyLFU struct {
+ freq *cmSketch
+ door *bloom.Bloom
+ incrs int64
+ resetAt int64
+}
+
+func newTinyLFU(numCounters int64) *tinyLFU {
+ return &tinyLFU{
+ freq: newCmSketch(numCounters),
+ door: bloom.NewBloomFilterWithErrorRate(uint64(numCounters), 0.01),
+ resetAt: numCounters,
+ }
+}
+
+func (p *tinyLFU) Push(keys []uint64) {
+ for _, key := range keys {
+ p.Increment(key)
+ }
+}
+
+func (p *tinyLFU) Estimate(key uint64) int64 {
+ hits := p.freq.Estimate(key)
+ if p.door.Has(key) {
+ hits++
+ }
+ return hits
+}
+
+func (p *tinyLFU) Increment(key uint64) {
+ // Flip doorkeeper bit if not already done.
+ if added := p.door.AddIfNotHas(key); !added {
+ // Increment count-min counter if doorkeeper bit is already set.
+ p.freq.Increment(key)
+ }
+ p.incrs++
+ if p.incrs >= p.resetAt {
+ p.reset()
+ }
+}
+
+func (p *tinyLFU) reset() {
+ // Zero out incrs.
+ p.incrs = 0
+ // clears doorkeeper bits
+ p.door.Clear()
+ // halves count-min counters
+ p.freq.Reset()
+}
+
+func (p *tinyLFU) clear() {
+ p.incrs = 0
+ p.freq.Clear()
+ p.door.Clear()
+}
diff --git a/go/cache/ristretto/policy_test.go b/go/cache/ristretto/policy_test.go
new file mode 100644
index 00000000000..c864b6c74d0
--- /dev/null
+++ b/go/cache/ristretto/policy_test.go
@@ -0,0 +1,276 @@
+/*
+ * Copyright 2020 Dgraph Labs, Inc. and Contributors
+ * Copyright 2021 The Vitess Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ristretto
+
+import (
+ "testing"
+ "time"
+
+ "github.com/stretchr/testify/require"
+)
+
+func TestPolicy(t *testing.T) {
+ defer func() {
+ require.Nil(t, recover())
+ }()
+ newPolicy(100, 10)
+}
+
+func TestPolicyMetrics(t *testing.T) {
+ p := newDefaultPolicy(100, 10)
+ p.CollectMetrics(newMetrics())
+ require.NotNil(t, p.metrics)
+ require.NotNil(t, p.evict.metrics)
+}
+
+func TestPolicyProcessItems(t *testing.T) {
+ p := newDefaultPolicy(100, 10)
+ p.itemsCh <- []uint64{1, 2, 2}
+ time.Sleep(wait)
+ p.Lock()
+ require.Equal(t, int64(2), p.admit.Estimate(2))
+ require.Equal(t, int64(1), p.admit.Estimate(1))
+ p.Unlock()
+
+ p.stop <- struct{}{}
+ p.itemsCh <- []uint64{3, 3, 3}
+ time.Sleep(wait)
+ p.Lock()
+ require.Equal(t, int64(0), p.admit.Estimate(3))
+ p.Unlock()
+}
+
+func TestPolicyPush(t *testing.T) {
+ p := newDefaultPolicy(100, 10)
+ require.True(t, p.Push([]uint64{}))
+
+ keepCount := 0
+ for i := 0; i < 10; i++ {
+ if p.Push([]uint64{1, 2, 3, 4, 5}) {
+ keepCount++
+ }
+ }
+ require.NotEqual(t, 0, keepCount)
+}
+
+func TestPolicyAdd(t *testing.T) {
+ p := newDefaultPolicy(1000, 100)
+ if victims, added := p.Add(1, 101); victims != nil || added {
+ t.Fatal("can't add an item bigger than entire cache")
+ }
+ p.Lock()
+ p.evict.add(1, 1)
+ p.admit.Increment(1)
+ p.admit.Increment(2)
+ p.admit.Increment(3)
+ p.Unlock()
+
+ victims, added := p.Add(1, 1)
+ require.Nil(t, victims)
+ require.False(t, added)
+
+ victims, added = p.Add(2, 20)
+ require.Nil(t, victims)
+ require.True(t, added)
+
+ victims, added = p.Add(3, 90)
+ require.NotNil(t, victims)
+ require.True(t, added)
+
+ victims, added = p.Add(4, 20)
+ require.NotNil(t, victims)
+ require.False(t, added)
+}
+
+func TestPolicyHas(t *testing.T) {
+ p := newDefaultPolicy(100, 10)
+ p.Add(1, 1)
+ require.True(t, p.Has(1))
+ require.False(t, p.Has(2))
+}
+
+func TestPolicyDel(t *testing.T) {
+ p := newDefaultPolicy(100, 10)
+ p.Add(1, 1)
+ p.Del(1)
+ p.Del(2)
+ require.False(t, p.Has(1))
+ require.False(t, p.Has(2))
+}
+
+func TestPolicyCap(t *testing.T) {
+ p := newDefaultPolicy(100, 10)
+ p.Add(1, 1)
+ require.Equal(t, int64(9), p.MaxCost()-p.Used())
+}
+
+func TestPolicyUpdate(t *testing.T) {
+ p := newDefaultPolicy(100, 10)
+ p.Add(1, 1)
+ p.Update(1, 2)
+ p.Lock()
+ require.Equal(t, int64(2), p.evict.keyCosts[1])
+ p.Unlock()
+}
+
+func TestPolicyCost(t *testing.T) {
+ p := newDefaultPolicy(100, 10)
+ p.Add(1, 2)
+ require.Equal(t, int64(2), p.Cost(1))
+ require.Equal(t, int64(-1), p.Cost(2))
+}
+
+func TestPolicyClear(t *testing.T) {
+ p := newDefaultPolicy(100, 10)
+ p.Add(1, 1)
+ p.Add(2, 2)
+ p.Add(3, 3)
+ p.Clear()
+ require.Equal(t, int64(10), p.MaxCost()-p.Used())
+ require.False(t, p.Has(1))
+ require.False(t, p.Has(2))
+ require.False(t, p.Has(3))
+}
+
+func TestPolicyClose(t *testing.T) {
+ defer func() {
+ require.NotNil(t, recover())
+ }()
+
+ p := newDefaultPolicy(100, 10)
+ p.Add(1, 1)
+ p.Close()
+ p.itemsCh <- []uint64{1}
+}
+
+func TestPushAfterClose(t *testing.T) {
+ p := newDefaultPolicy(100, 10)
+ p.Close()
+ require.False(t, p.Push([]uint64{1, 2}))
+}
+
+func TestAddAfterClose(t *testing.T) {
+ p := newDefaultPolicy(100, 10)
+ p.Close()
+ p.Add(1, 1)
+}
+
+func TestSampledLFUAdd(t *testing.T) {
+ e := newSampledLFU(4)
+ e.add(1, 1)
+ e.add(2, 2)
+ e.add(3, 1)
+ require.Equal(t, int64(4), e.used)
+ require.Equal(t, int64(2), e.keyCosts[2])
+}
+
+func TestSampledLFUDel(t *testing.T) {
+ e := newSampledLFU(4)
+ e.add(1, 1)
+ e.add(2, 2)
+ e.del(2)
+ require.Equal(t, int64(1), e.used)
+ _, ok := e.keyCosts[2]
+ require.False(t, ok)
+ e.del(4)
+}
+
+func TestSampledLFUUpdate(t *testing.T) {
+ e := newSampledLFU(4)
+ e.add(1, 1)
+ require.True(t, e.updateIfHas(1, 2))
+ require.Equal(t, int64(2), e.used)
+ require.False(t, e.updateIfHas(2, 2))
+}
+
+func TestSampledLFUClear(t *testing.T) {
+ e := newSampledLFU(4)
+ e.add(1, 1)
+ e.add(2, 2)
+ e.add(3, 1)
+ e.clear()
+ require.Equal(t, 0, len(e.keyCosts))
+ require.Equal(t, int64(0), e.used)
+}
+
+func TestSampledLFURoom(t *testing.T) {
+ e := newSampledLFU(16)
+ e.add(1, 1)
+ e.add(2, 2)
+ e.add(3, 3)
+ require.Equal(t, int64(6), e.roomLeft(4))
+}
+
+func TestSampledLFUSample(t *testing.T) {
+ e := newSampledLFU(16)
+ e.add(4, 4)
+ e.add(5, 5)
+ sample := e.fillSample([]*policyPair{
+ {1, 1},
+ {2, 2},
+ {3, 3},
+ })
+ k := sample[len(sample)-1].key
+ require.Equal(t, 5, len(sample))
+ require.NotEqual(t, 1, k)
+ require.NotEqual(t, 2, k)
+ require.NotEqual(t, 3, k)
+ require.Equal(t, len(sample), len(e.fillSample(sample)))
+ e.del(5)
+ sample = e.fillSample(sample[:len(sample)-2])
+ require.Equal(t, 4, len(sample))
+}
+
+func TestTinyLFUIncrement(t *testing.T) {
+ a := newTinyLFU(4)
+ a.Increment(1)
+ a.Increment(1)
+ a.Increment(1)
+ require.True(t, a.door.Has(1))
+ require.Equal(t, int64(2), a.freq.Estimate(1))
+
+ a.Increment(1)
+ require.False(t, a.door.Has(1))
+ require.Equal(t, int64(1), a.freq.Estimate(1))
+}
+
+func TestTinyLFUEstimate(t *testing.T) {
+ a := newTinyLFU(8)
+ a.Increment(1)
+ a.Increment(1)
+ a.Increment(1)
+ require.Equal(t, int64(3), a.Estimate(1))
+ require.Equal(t, int64(0), a.Estimate(2))
+}
+
+func TestTinyLFUPush(t *testing.T) {
+ a := newTinyLFU(16)
+ a.Push([]uint64{1, 2, 2, 3, 3, 3})
+ require.Equal(t, int64(1), a.Estimate(1))
+ require.Equal(t, int64(2), a.Estimate(2))
+ require.Equal(t, int64(3), a.Estimate(3))
+ require.Equal(t, int64(6), a.incrs)
+}
+
+func TestTinyLFUClear(t *testing.T) {
+ a := newTinyLFU(16)
+ a.Push([]uint64{1, 3, 3, 3})
+ a.clear()
+ require.Equal(t, int64(0), a.incrs)
+ require.Equal(t, int64(0), a.Estimate(3))
+}
diff --git a/go/cache/ristretto/ring.go b/go/cache/ristretto/ring.go
new file mode 100644
index 00000000000..afc2c1559f8
--- /dev/null
+++ b/go/cache/ristretto/ring.go
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2019 Dgraph Labs, Inc. and Contributors
+ * Copyright 2021 The Vitess Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ristretto
+
+import (
+ "sync"
+)
+
+// ringConsumer is the user-defined object responsible for receiving and
+// processing items in batches when buffers are drained.
+type ringConsumer interface {
+ Push([]uint64) bool
+}
+
+// ringStripe is a singular ring buffer that is not concurrent safe.
+type ringStripe struct {
+ cons ringConsumer
+ data []uint64
+ capa int
+}
+
+func newRingStripe(cons ringConsumer, capa int64) *ringStripe {
+ return &ringStripe{
+ cons: cons,
+ data: make([]uint64, 0, capa),
+ capa: int(capa),
+ }
+}
+
+// Push appends an item in the ring buffer and drains (copies items and
+// sends to Consumer) if full.
+func (s *ringStripe) Push(item uint64) {
+ s.data = append(s.data, item)
+ // Decide if the ring buffer should be drained.
+ if len(s.data) >= s.capa {
+ // Send elements to consumer and create a new ring stripe.
+ if s.cons.Push(s.data) {
+ s.data = make([]uint64, 0, s.capa)
+ } else {
+ s.data = s.data[:0]
+ }
+ }
+}
+
+// ringBuffer stores multiple buffers (stripes) and distributes Pushed items
+// between them to lower contention.
+//
+// This implements the "batching" process described in the BP-Wrapper paper
+// (section III part A).
+type ringBuffer struct {
+ pool *sync.Pool
+}
+
+// newRingBuffer returns a striped ring buffer. The Consumer in ringConfig will
+// be called when individual stripes are full and need to drain their elements.
+func newRingBuffer(cons ringConsumer, capa int64) *ringBuffer {
+ // LOSSY buffers use a very simple sync.Pool for concurrently reusing
+ // stripes. We do lose some stripes due to GC (unheld items in sync.Pool
+ // are cleared), but the performance gains generally outweigh the small
+ // percentage of elements lost. The performance primarily comes from
+ // low-level runtime functions used in the standard library that aren't
+ // available to us (such as runtime_procPin()).
+ return &ringBuffer{
+ pool: &sync.Pool{
+ New: func() interface{} { return newRingStripe(cons, capa) },
+ },
+ }
+}
+
+// Push adds an element to one of the internal stripes and possibly drains if
+// the stripe becomes full.
+func (b *ringBuffer) Push(item uint64) {
+ // Reuse or create a new stripe.
+ stripe := b.pool.Get().(*ringStripe)
+ stripe.Push(item)
+ b.pool.Put(stripe)
+}
diff --git a/go/cache/ristretto/ring_test.go b/go/cache/ristretto/ring_test.go
new file mode 100644
index 00000000000..0dbe962ccc6
--- /dev/null
+++ b/go/cache/ristretto/ring_test.go
@@ -0,0 +1,87 @@
+/*
+ * Copyright 2020 Dgraph Labs, Inc. and Contributors
+ * Copyright 2021 The Vitess Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ristretto
+
+import (
+ "sync"
+ "testing"
+
+ "github.com/stretchr/testify/require"
+)
+
+type testConsumer struct {
+ push func([]uint64)
+ save bool
+}
+
+func (c *testConsumer) Push(items []uint64) bool {
+ if c.save {
+ c.push(items)
+ return true
+ }
+ return false
+}
+
+func TestRingDrain(t *testing.T) {
+ drains := 0
+ r := newRingBuffer(&testConsumer{
+ push: func(items []uint64) {
+ drains++
+ },
+ save: true,
+ }, 1)
+ for i := 0; i < 100; i++ {
+ r.Push(uint64(i))
+ }
+ require.Equal(t, 100, drains, "buffers shouldn't be dropped with BufferItems == 1")
+}
+
+func TestRingReset(t *testing.T) {
+ drains := 0
+ r := newRingBuffer(&testConsumer{
+ push: func(items []uint64) {
+ drains++
+ },
+ save: false,
+ }, 4)
+ for i := 0; i < 100; i++ {
+ r.Push(uint64(i))
+ }
+ require.Equal(t, 0, drains, "testConsumer shouldn't be draining")
+}
+
+func TestRingConsumer(t *testing.T) {
+ mu := &sync.Mutex{}
+ drainItems := make(map[uint64]struct{})
+ r := newRingBuffer(&testConsumer{
+ push: func(items []uint64) {
+ mu.Lock()
+ defer mu.Unlock()
+ for i := range items {
+ drainItems[items[i]] = struct{}{}
+ }
+ },
+ save: true,
+ }, 4)
+ for i := 0; i < 100; i++ {
+ r.Push(uint64(i))
+ }
+ l := len(drainItems)
+ require.NotEqual(t, 0, l)
+ require.True(t, l <= 100)
+}
diff --git a/go/cache/ristretto/sketch.go b/go/cache/ristretto/sketch.go
new file mode 100644
index 00000000000..ce0504a2a83
--- /dev/null
+++ b/go/cache/ristretto/sketch.go
@@ -0,0 +1,156 @@
+/*
+ * Copyright 2019 Dgraph Labs, Inc. and Contributors
+ * Copyright 2021 The Vitess Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// Package ristretto includes multiple probabalistic data structures needed for
+// admission/eviction metadata. Most are Counting Bloom Filter variations, but
+// a caching-specific feature that is also required is a "freshness" mechanism,
+// which basically serves as a "lifetime" process. This freshness mechanism
+// was described in the original TinyLFU paper [1], but other mechanisms may
+// be better suited for certain data distributions.
+//
+// [1]: https://arxiv.org/abs/1512.00727
+package ristretto
+
+import (
+ "fmt"
+ "math/rand"
+ "time"
+)
+
+// cmSketch is a Count-Min sketch implementation with 4-bit counters, heavily
+// based on Damian Gryski's CM4 [1].
+//
+// [1]: https://github.com/dgryski/go-tinylfu/blob/master/cm4.go
+type cmSketch struct {
+ rows [cmDepth]cmRow
+ seed [cmDepth]uint64
+ mask uint64
+}
+
+const (
+ // cmDepth is the number of counter copies to store (think of it as rows).
+ cmDepth = 4
+)
+
+func newCmSketch(numCounters int64) *cmSketch {
+ if numCounters == 0 {
+ panic("cmSketch: bad numCounters")
+ }
+ // Get the next power of 2 for better cache performance.
+ numCounters = next2Power(numCounters)
+ sketch := &cmSketch{mask: uint64(numCounters - 1)}
+ // Initialize rows of counters and seeds.
+ source := rand.New(rand.NewSource(time.Now().UnixNano()))
+ for i := 0; i < cmDepth; i++ {
+ sketch.seed[i] = source.Uint64()
+ sketch.rows[i] = newCmRow(numCounters)
+ }
+ return sketch
+}
+
+// Increment increments the count(ers) for the specified key.
+func (s *cmSketch) Increment(hashed uint64) {
+ for i := range s.rows {
+ s.rows[i].increment((hashed ^ s.seed[i]) & s.mask)
+ }
+}
+
+// Estimate returns the value of the specified key.
+func (s *cmSketch) Estimate(hashed uint64) int64 {
+ min := byte(255)
+ for i := range s.rows {
+ val := s.rows[i].get((hashed ^ s.seed[i]) & s.mask)
+ if val < min {
+ min = val
+ }
+ }
+ return int64(min)
+}
+
+// Reset halves all counter values.
+func (s *cmSketch) Reset() {
+ for _, r := range s.rows {
+ r.reset()
+ }
+}
+
+// Clear zeroes all counters.
+func (s *cmSketch) Clear() {
+ for _, r := range s.rows {
+ r.clear()
+ }
+}
+
+// cmRow is a row of bytes, with each byte holding two counters.
+type cmRow []byte
+
+func newCmRow(numCounters int64) cmRow {
+ return make(cmRow, numCounters/2)
+}
+
+func (r cmRow) get(n uint64) byte {
+ return byte(r[n/2]>>((n&1)*4)) & 0x0f
+}
+
+func (r cmRow) increment(n uint64) {
+ // Index of the counter.
+ i := n / 2
+ // Shift distance (even 0, odd 4).
+ s := (n & 1) * 4
+ // Counter value.
+ v := (r[i] >> s) & 0x0f
+ // Only increment if not max value (overflow wrap is bad for LFU).
+ if v < 15 {
+ r[i] += 1 << s
+ }
+}
+
+func (r cmRow) reset() {
+ // Halve each counter.
+ for i := range r {
+ r[i] = (r[i] >> 1) & 0x77
+ }
+}
+
+func (r cmRow) clear() {
+ // Zero each counter.
+ for i := range r {
+ r[i] = 0
+ }
+}
+
+func (r cmRow) string() string {
+ s := ""
+ for i := uint64(0); i < uint64(len(r)*2); i++ {
+ s += fmt.Sprintf("%02d ", (r[(i/2)]>>((i&1)*4))&0x0f)
+ }
+ s = s[:len(s)-1]
+ return s
+}
+
+// next2Power rounds x up to the next power of 2, if it's not already one.
+func next2Power(x int64) int64 {
+ x--
+ x |= x >> 1
+ x |= x >> 2
+ x |= x >> 4
+ x |= x >> 8
+ x |= x >> 16
+ x |= x >> 32
+ x++
+ return x
+}
diff --git a/go/cache/ristretto/sketch_test.go b/go/cache/ristretto/sketch_test.go
new file mode 100644
index 00000000000..f0d523df559
--- /dev/null
+++ b/go/cache/ristretto/sketch_test.go
@@ -0,0 +1,102 @@
+/*
+ * Copyright 2020 Dgraph Labs, Inc. and Contributors
+ * Copyright 2021 The Vitess Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ristretto
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/require"
+)
+
+func TestSketch(t *testing.T) {
+ defer func() {
+ require.NotNil(t, recover())
+ }()
+
+ s := newCmSketch(5)
+ require.Equal(t, uint64(7), s.mask)
+ newCmSketch(0)
+}
+
+func TestSketchIncrement(t *testing.T) {
+ s := newCmSketch(16)
+ s.Increment(1)
+ s.Increment(5)
+ s.Increment(9)
+ for i := 0; i < cmDepth; i++ {
+ if s.rows[i].string() != s.rows[0].string() {
+ break
+ }
+ require.False(t, i == cmDepth-1, "identical rows, bad seeding")
+ }
+}
+
+func TestSketchEstimate(t *testing.T) {
+ s := newCmSketch(16)
+ s.Increment(1)
+ s.Increment(1)
+ require.Equal(t, int64(2), s.Estimate(1))
+ require.Equal(t, int64(0), s.Estimate(0))
+}
+
+func TestSketchReset(t *testing.T) {
+ s := newCmSketch(16)
+ s.Increment(1)
+ s.Increment(1)
+ s.Increment(1)
+ s.Increment(1)
+ s.Reset()
+ require.Equal(t, int64(2), s.Estimate(1))
+}
+
+func TestSketchClear(t *testing.T) {
+ s := newCmSketch(16)
+ for i := 0; i < 16; i++ {
+ s.Increment(uint64(i))
+ }
+ s.Clear()
+ for i := 0; i < 16; i++ {
+ require.Equal(t, int64(0), s.Estimate(uint64(i)))
+ }
+}
+
+func TestNext2Power(t *testing.T) {
+ sz := 12 << 30
+ szf := float64(sz) * 0.01
+ val := int64(szf)
+ t.Logf("szf = %.2f val = %d\n", szf, val)
+ pow := next2Power(val)
+ t.Logf("pow = %d. mult 4 = %d\n", pow, pow*4)
+}
+
+func BenchmarkSketchIncrement(b *testing.B) {
+ s := newCmSketch(16)
+ b.SetBytes(1)
+ for n := 0; n < b.N; n++ {
+ s.Increment(1)
+ }
+}
+
+func BenchmarkSketchEstimate(b *testing.B) {
+ s := newCmSketch(16)
+ s.Increment(1)
+ b.SetBytes(1)
+ for n := 0; n < b.N; n++ {
+ s.Estimate(1)
+ }
+}
diff --git a/go/cache/ristretto/store.go b/go/cache/ristretto/store.go
new file mode 100644
index 00000000000..44e5ad8b147
--- /dev/null
+++ b/go/cache/ristretto/store.go
@@ -0,0 +1,240 @@
+/*
+ * Copyright 2019 Dgraph Labs, Inc. and Contributors
+ * Copyright 2021 The Vitess Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ristretto
+
+import (
+ "sync"
+)
+
+// TODO: Do we need this to be a separate struct from Item?
+type storeItem struct {
+ key uint64
+ conflict uint64
+ value interface{}
+}
+
+// store is the interface fulfilled by all hash map implementations in this
+// file. Some hash map implementations are better suited for certain data
+// distributions than others, so this allows us to abstract that out for use
+// in Ristretto.
+//
+// Every store is safe for concurrent usage.
+type store interface {
+ // Get returns the value associated with the key parameter.
+ Get(uint64, uint64) (interface{}, bool)
+ // Set adds the key-value pair to the Map or updates the value if it's
+ // already present. The key-value pair is passed as a pointer to an
+ // item object.
+ Set(*Item)
+ // Del deletes the key-value pair from the Map.
+ Del(uint64, uint64) (uint64, interface{})
+ // Update attempts to update the key with a new value and returns true if
+ // successful.
+ Update(*Item) (interface{}, bool)
+ // Clear clears all contents of the store.
+ Clear(onEvict itemCallback)
+ // ForEach yields all the values in the store
+ ForEach(forEach func(interface{}) bool)
+ // Len returns the number of entries in the store
+ Len() int
+}
+
+// newStore returns the default store implementation.
+func newStore() store {
+ return newShardedMap()
+}
+
+const numShards uint64 = 256
+
+type shardedMap struct {
+ shards []*lockedMap
+}
+
+func newShardedMap() *shardedMap {
+ sm := &shardedMap{
+ shards: make([]*lockedMap, int(numShards)),
+ }
+ for i := range sm.shards {
+ sm.shards[i] = newLockedMap()
+ }
+ return sm
+}
+
+func (sm *shardedMap) Get(key, conflict uint64) (interface{}, bool) {
+ return sm.shards[key%numShards].get(key, conflict)
+}
+
+func (sm *shardedMap) Set(i *Item) {
+ if i == nil {
+ // If item is nil make this Set a no-op.
+ return
+ }
+
+ sm.shards[i.Key%numShards].Set(i)
+}
+
+func (sm *shardedMap) Del(key, conflict uint64) (uint64, interface{}) {
+ return sm.shards[key%numShards].Del(key, conflict)
+}
+
+func (sm *shardedMap) Update(newItem *Item) (interface{}, bool) {
+ return sm.shards[newItem.Key%numShards].Update(newItem)
+}
+
+func (sm *shardedMap) ForEach(forEach func(interface{}) bool) {
+ for _, shard := range sm.shards {
+ if !shard.foreach(forEach) {
+ break
+ }
+ }
+}
+
+func (sm *shardedMap) Len() int {
+ l := 0
+ for _, shard := range sm.shards {
+ l += shard.Len()
+ }
+ return l
+}
+
+func (sm *shardedMap) Clear(onEvict itemCallback) {
+ for i := uint64(0); i < numShards; i++ {
+ sm.shards[i].Clear(onEvict)
+ }
+}
+
+type lockedMap struct {
+ sync.RWMutex
+ data map[uint64]storeItem
+}
+
+func newLockedMap() *lockedMap {
+ return &lockedMap{
+ data: make(map[uint64]storeItem),
+ }
+}
+
+func (m *lockedMap) get(key, conflict uint64) (interface{}, bool) {
+ m.RLock()
+ item, ok := m.data[key]
+ m.RUnlock()
+ if !ok {
+ return nil, false
+ }
+ if conflict != 0 && (conflict != item.conflict) {
+ return nil, false
+ }
+ return item.value, true
+}
+
+func (m *lockedMap) Set(i *Item) {
+ if i == nil {
+ // If the item is nil make this Set a no-op.
+ return
+ }
+
+ m.Lock()
+ defer m.Unlock()
+ item, ok := m.data[i.Key]
+
+ if ok {
+ // The item existed already. We need to check the conflict key and reject the
+ // update if they do not match. Only after that the expiration map is updated.
+ if i.Conflict != 0 && (i.Conflict != item.conflict) {
+ return
+ }
+ }
+
+ m.data[i.Key] = storeItem{
+ key: i.Key,
+ conflict: i.Conflict,
+ value: i.Value,
+ }
+}
+
+func (m *lockedMap) Del(key, conflict uint64) (uint64, interface{}) {
+ m.Lock()
+ item, ok := m.data[key]
+ if !ok {
+ m.Unlock()
+ return 0, nil
+ }
+ if conflict != 0 && (conflict != item.conflict) {
+ m.Unlock()
+ return 0, nil
+ }
+
+ delete(m.data, key)
+ m.Unlock()
+ return item.conflict, item.value
+}
+
+func (m *lockedMap) Update(newItem *Item) (interface{}, bool) {
+ m.Lock()
+ item, ok := m.data[newItem.Key]
+ if !ok {
+ m.Unlock()
+ return nil, false
+ }
+ if newItem.Conflict != 0 && (newItem.Conflict != item.conflict) {
+ m.Unlock()
+ return nil, false
+ }
+
+ m.data[newItem.Key] = storeItem{
+ key: newItem.Key,
+ conflict: newItem.Conflict,
+ value: newItem.Value,
+ }
+
+ m.Unlock()
+ return item.value, true
+}
+
+func (m *lockedMap) Len() int {
+ m.RLock()
+ l := len(m.data)
+ m.RUnlock()
+ return l
+}
+
+func (m *lockedMap) Clear(onEvict itemCallback) {
+ m.Lock()
+ i := &Item{}
+ if onEvict != nil {
+ for _, si := range m.data {
+ i.Key = si.key
+ i.Conflict = si.conflict
+ i.Value = si.value
+ onEvict(i)
+ }
+ }
+ m.data = make(map[uint64]storeItem)
+ m.Unlock()
+}
+
+func (m *lockedMap) foreach(forEach func(interface{}) bool) bool {
+ m.RLock()
+ defer m.RUnlock()
+ for _, si := range m.data {
+ if !forEach(si.value) {
+ return false
+ }
+ }
+ return true
+}
diff --git a/go/cache/ristretto/store_test.go b/go/cache/ristretto/store_test.go
new file mode 100644
index 00000000000..54634736a72
--- /dev/null
+++ b/go/cache/ristretto/store_test.go
@@ -0,0 +1,224 @@
+/*
+ * Copyright 2020 Dgraph Labs, Inc. and Contributors
+ * Copyright 2021 The Vitess Authors.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package ristretto
+
+import (
+ "strconv"
+ "testing"
+
+ "github.com/stretchr/testify/require"
+)
+
+func TestStoreSetGet(t *testing.T) {
+ s := newStore()
+ key, conflict := defaultStringHash("1")
+ i := Item{
+ Key: key,
+ Conflict: conflict,
+ Value: 2,
+ }
+ s.Set(&i)
+ val, ok := s.Get(key, conflict)
+ require.True(t, ok)
+ require.Equal(t, 2, val.(int))
+
+ i.Value = 3
+ s.Set(&i)
+ val, ok = s.Get(key, conflict)
+ require.True(t, ok)
+ require.Equal(t, 3, val.(int))
+
+ key, conflict = defaultStringHash("2")
+ i = Item{
+ Key: key,
+ Conflict: conflict,
+ Value: 2,
+ }
+ s.Set(&i)
+ val, ok = s.Get(key, conflict)
+ require.True(t, ok)
+ require.Equal(t, 2, val.(int))
+}
+
+func TestStoreDel(t *testing.T) {
+ s := newStore()
+ key, conflict := defaultStringHash("1")
+ i := Item{
+ Key: key,
+ Conflict: conflict,
+ Value: 1,
+ }
+ s.Set(&i)
+ s.Del(key, conflict)
+ val, ok := s.Get(key, conflict)
+ require.False(t, ok)
+ require.Nil(t, val)
+
+ s.Del(2, 0)
+}
+
+func TestStoreClear(t *testing.T) {
+ s := newStore()
+ for i := 0; i < 1000; i++ {
+ key, conflict := defaultStringHash(strconv.Itoa(i))
+ it := Item{
+ Key: key,
+ Conflict: conflict,
+ Value: i,
+ }
+ s.Set(&it)
+ }
+ s.Clear(nil)
+ for i := 0; i < 1000; i++ {
+ key, conflict := defaultStringHash(strconv.Itoa(i))
+ val, ok := s.Get(key, conflict)
+ require.False(t, ok)
+ require.Nil(t, val)
+ }
+}
+
+func TestStoreUpdate(t *testing.T) {
+ s := newStore()
+ key, conflict := defaultStringHash("1")
+ i := Item{
+ Key: key,
+ Conflict: conflict,
+ Value: 1,
+ }
+ s.Set(&i)
+ i.Value = 2
+ _, ok := s.Update(&i)
+ require.True(t, ok)
+
+ val, ok := s.Get(key, conflict)
+ require.True(t, ok)
+ require.NotNil(t, val)
+
+ val, ok = s.Get(key, conflict)
+ require.True(t, ok)
+ require.Equal(t, 2, val.(int))
+
+ i.Value = 3
+ _, ok = s.Update(&i)
+ require.True(t, ok)
+
+ val, ok = s.Get(key, conflict)
+ require.True(t, ok)
+ require.Equal(t, 3, val.(int))
+
+ key, conflict = defaultStringHash("2")
+ i = Item{
+ Key: key,
+ Conflict: conflict,
+ Value: 2,
+ }
+ _, ok = s.Update(&i)
+ require.False(t, ok)
+ val, ok = s.Get(key, conflict)
+ require.False(t, ok)
+ require.Nil(t, val)
+}
+
+func TestStoreCollision(t *testing.T) {
+ s := newShardedMap()
+ s.shards[1].Lock()
+ s.shards[1].data[1] = storeItem{
+ key: 1,
+ conflict: 0,
+ value: 1,
+ }
+ s.shards[1].Unlock()
+ val, ok := s.Get(1, 1)
+ require.False(t, ok)
+ require.Nil(t, val)
+
+ i := Item{
+ Key: 1,
+ Conflict: 1,
+ Value: 2,
+ }
+ s.Set(&i)
+ val, ok = s.Get(1, 0)
+ require.True(t, ok)
+ require.NotEqual(t, 2, val.(int))
+
+ _, ok = s.Update(&i)
+ require.False(t, ok)
+ val, ok = s.Get(1, 0)
+ require.True(t, ok)
+ require.NotEqual(t, 2, val.(int))
+
+ s.Del(1, 1)
+ val, ok = s.Get(1, 0)
+ require.True(t, ok)
+ require.NotNil(t, val)
+}
+
+func BenchmarkStoreGet(b *testing.B) {
+ s := newStore()
+ key, conflict := defaultStringHash("1")
+ i := Item{
+ Key: key,
+ Conflict: conflict,
+ Value: 1,
+ }
+ s.Set(&i)
+ b.SetBytes(1)
+ b.RunParallel(func(pb *testing.PB) {
+ for pb.Next() {
+ s.Get(key, conflict)
+ }
+ })
+}
+
+func BenchmarkStoreSet(b *testing.B) {
+ s := newStore()
+ key, conflict := defaultStringHash("1")
+ b.SetBytes(1)
+ b.RunParallel(func(pb *testing.PB) {
+ for pb.Next() {
+ i := Item{
+ Key: key,
+ Conflict: conflict,
+ Value: 1,
+ }
+ s.Set(&i)
+ }
+ })
+}
+
+func BenchmarkStoreUpdate(b *testing.B) {
+ s := newStore()
+ key, conflict := defaultStringHash("1")
+ i := Item{
+ Key: key,
+ Conflict: conflict,
+ Value: 1,
+ }
+ s.Set(&i)
+ b.SetBytes(1)
+ b.RunParallel(func(pb *testing.PB) {
+ for pb.Next() {
+ s.Update(&Item{
+ Key: key,
+ Conflict: conflict,
+ Value: 2,
+ })
+ }
+ })
+}
diff --git a/go/cmd/vtctldclient/cli/awk.go b/go/cmd/vtctldclient/cli/awk.go
new file mode 100644
index 00000000000..2789fec2e6d
--- /dev/null
+++ b/go/cmd/vtctldclient/cli/awk.go
@@ -0,0 +1,73 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package cli
+
+import (
+ "fmt"
+ "sort"
+ "strings"
+ "time"
+
+ "vitess.io/vitess/go/vt/logutil"
+ "vitess.io/vitess/go/vt/topo"
+ "vitess.io/vitess/go/vt/topo/topoproto"
+
+ topodatapb "vitess.io/vitess/go/vt/proto/topodata"
+)
+
+// MarshalMapAWK returns a string representation of a string->string map in an
+// AWK-friendly format.
+func MarshalMapAWK(m map[string]string) string {
+ pairs := make([]string, len(m))
+ i := 0
+
+ for k, v := range m {
+ pairs[i] = fmt.Sprintf("%v: %q", k, v)
+
+ i++
+ }
+
+ sort.Strings(pairs)
+
+ return "[" + strings.Join(pairs, " ") + "]"
+}
+
+// MarshalTabletAWK marshals a tablet into an AWK-friendly line.
+func MarshalTabletAWK(t *topodatapb.Tablet) string {
+ ti := topo.TabletInfo{
+ Tablet: t,
+ }
+
+ keyspace := t.Keyspace
+ if keyspace == "" {
+ keyspace = "
"
+ }
+
+ shard := t.Shard
+ if shard == "" {
+ shard = ""
+ }
+
+ mtst := ""
+ // special case for old primary that hasn't been updated in the topo
+ // yet.
+ if t.MasterTermStartTime != nil && t.MasterTermStartTime.Seconds > 0 {
+ mtst = logutil.ProtoToTime(t.MasterTermStartTime).Format(time.RFC3339)
+ }
+
+ return fmt.Sprintf("%v %v %v %v %v %v %v %v", topoproto.TabletAliasString(t.Alias), keyspace, shard, topoproto.TabletTypeLString(t.Type), ti.Addr(), ti.MysqlAddr(), MarshalMapAWK(t.Tags), mtst)
+}
diff --git a/go/cmd/vtctldclient/cli/cobra.go b/go/cmd/vtctldclient/cli/cobra.go
new file mode 100644
index 00000000000..d3f43bddbfb
--- /dev/null
+++ b/go/cmd/vtctldclient/cli/cobra.go
@@ -0,0 +1,32 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package cli
+
+import "github.com/spf13/cobra"
+
+// FinishedParsing transitions a cobra.Command from treating RunE errors as
+// usage errors to treating them just as normal runtime errors that should be
+// propagated up to the root command's Execute method without also printing the
+// subcommand's usage text on stderr. A subcommand should call this function
+// from its RunE function when it has finished processing its flags and is
+// moving into the pure "business logic" of its entrypoint.
+//
+// Package vitess.io/vitess/go/cmd/vtctldclient/internal/command has more
+// details on why this exists.
+func FinishedParsing(cmd *cobra.Command) {
+ cmd.SilenceUsage = true
+}
diff --git a/go/cmd/vtctldclient/cli/json.go b/go/cmd/vtctldclient/cli/json.go
new file mode 100644
index 00000000000..903ca905b3e
--- /dev/null
+++ b/go/cmd/vtctldclient/cli/json.go
@@ -0,0 +1,61 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package cli
+
+import (
+ "bytes"
+ "encoding/json"
+ "fmt"
+
+ "github.com/golang/protobuf/jsonpb"
+ "github.com/golang/protobuf/proto"
+)
+
+// MarshalJSON marshals obj to a JSON string. It uses the jsonpb marshaler for
+// proto.Message types, with some sensible defaults, and falls back to the
+// standard Go marshaler otherwise. In both cases, the marshaled JSON is
+// indented with two spaces for readability.
+//
+// Unfortunately jsonpb only works for types that implement proto.Message,
+// either by being a proto message type or by anonymously embedding one, so for
+// other types that may have nested struct fields, we still use the standard Go
+// marshaler, which will result in different formattings.
+func MarshalJSON(obj interface{}) ([]byte, error) {
+ switch obj := obj.(type) {
+ case proto.Message:
+ b := bytes.NewBuffer(nil)
+ m := jsonpb.Marshaler{
+ EnumsAsInts: false,
+ EmitDefaults: true,
+ Indent: " ",
+ OrigName: true,
+ }
+
+ if err := m.Marshal(b, obj); err != nil {
+ return nil, fmt.Errorf("jsonpb.Marshal = %v", err)
+ }
+
+ return b.Bytes(), nil
+ default:
+ data, err := json.MarshalIndent(obj, "", " ")
+ if err != nil {
+ return nil, fmt.Errorf("json.Marshal = %v", err)
+ }
+
+ return data, nil
+ }
+}
diff --git a/go/cmd/vtctldclient/cli/pflag.go b/go/cmd/vtctldclient/cli/pflag.go
new file mode 100644
index 00000000000..8a364be8d86
--- /dev/null
+++ b/go/cmd/vtctldclient/cli/pflag.go
@@ -0,0 +1,93 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package cli
+
+import (
+ "github.com/spf13/pflag"
+
+ "vitess.io/vitess/go/flagutil"
+ "vitess.io/vitess/go/vt/key"
+ "vitess.io/vitess/go/vt/topo/topoproto"
+
+ topodatapb "vitess.io/vitess/go/vt/proto/topodata"
+)
+
+// StringMapValue augments flagutil.StringMapValue so it can be used as a
+// pflag.Value.
+type StringMapValue struct {
+ flagutil.StringMapValue
+}
+
+// Type is part of the pflag.Value interface.
+func (v *StringMapValue) Type() string {
+ return "cli.StringMapValue"
+}
+
+// KeyspaceIDTypeFlag adds the pflag.Value interface to a
+// topodatapb.KeyspaceIdType.
+type KeyspaceIDTypeFlag topodatapb.KeyspaceIdType
+
+var _ pflag.Value = (*KeyspaceIDTypeFlag)(nil)
+
+// Set is part of the pflag.Value interface.
+func (v *KeyspaceIDTypeFlag) Set(arg string) error {
+ t, err := key.ParseKeyspaceIDType(arg)
+ if err != nil {
+ return err
+ }
+
+ *v = KeyspaceIDTypeFlag(t)
+
+ return nil
+}
+
+// String is part of the pflag.Value interface.
+func (v *KeyspaceIDTypeFlag) String() string {
+ return key.KeyspaceIDTypeString(topodatapb.KeyspaceIdType(*v))
+}
+
+// Type is part of the pflag.Value interface.
+func (v *KeyspaceIDTypeFlag) Type() string {
+ return "cli.KeyspaceIdTypeFlag"
+}
+
+// KeyspaceTypeFlag adds the pflag.Value interface to a topodatapb.KeyspaceType.
+type KeyspaceTypeFlag topodatapb.KeyspaceType
+
+var _ pflag.Value = (*KeyspaceTypeFlag)(nil)
+
+// Set is part of the pflag.Value interface.
+func (v *KeyspaceTypeFlag) Set(arg string) error {
+ kt, err := topoproto.ParseKeyspaceType(arg)
+ if err != nil {
+ return err
+ }
+
+ *v = KeyspaceTypeFlag(kt)
+
+ return nil
+}
+
+// String is part of the pflag.Value interface.
+func (v *KeyspaceTypeFlag) String() string {
+ return topoproto.KeyspaceTypeString(topodatapb.KeyspaceType(*v))
+}
+
+// Type is part of the pflag.Value interface.
+func (v *KeyspaceTypeFlag) Type() string {
+ return "cli.KeyspaceTypeFlag"
+}
diff --git a/go/cmd/vtctldclient/cli/shards.go b/go/cmd/vtctldclient/cli/shards.go
new file mode 100644
index 00000000000..f45b8324c00
--- /dev/null
+++ b/go/cmd/vtctldclient/cli/shards.go
@@ -0,0 +1,123 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package cli
+
+import (
+ "sort"
+
+ "vitess.io/vitess/go/mysql"
+ "vitess.io/vitess/go/vt/topo/topoproto"
+
+ replicationdatapb "vitess.io/vitess/go/vt/proto/replicationdata"
+ topodatapb "vitess.io/vitess/go/vt/proto/topodata"
+ vtctldatapb "vitess.io/vitess/go/vt/proto/vtctldata"
+)
+
+// ParseKeyspaceShards takes a list of positional arguments and converts them to
+// vtctldatapb.Shard objects.
+func ParseKeyspaceShards(args []string) ([]*vtctldatapb.Shard, error) {
+ shards := make([]*vtctldatapb.Shard, 0, len(args))
+
+ for _, arg := range args {
+ keyspace, shard, err := topoproto.ParseKeyspaceShard(arg)
+ if err != nil {
+ return nil, err
+ }
+
+ shards = append(shards, &vtctldatapb.Shard{
+ Keyspace: keyspace,
+ Name: shard,
+ })
+ }
+
+ return shards, nil
+}
+
+// ReplicatingTablet is a struct to group a Tablet together with its replication
+// Status.
+type ReplicatingTablet struct {
+ *replicationdatapb.Status
+ *topodatapb.Tablet
+}
+
+type rTablets []*ReplicatingTablet
+
+func (rts rTablets) Len() int { return len(rts) }
+func (rts rTablets) Swap(i, j int) { rts[i], rts[j] = rts[j], rts[i] }
+func (rts rTablets) Less(i, j int) bool {
+ l, r := rts[i], rts[j]
+
+ // l or r ReplicationStatus would be nil if we failed to get
+ // the position (put them at the beginning of the list)
+ if l.Status == nil {
+ return r.Status != nil
+ }
+
+ if r.Status == nil {
+ return false
+ }
+
+ // the type proto has MASTER first, so sort by that. Will show
+ // the MASTER first, then each replica type sorted by
+ // replication position.
+ if l.Tablet.Type < r.Tablet.Type {
+ return true
+ }
+
+ if l.Tablet.Type > r.Tablet.Type {
+ return false
+ }
+
+ // then compare replication positions
+ lpos, err := mysql.DecodePosition(l.Status.Position)
+ if err != nil {
+ return true
+ }
+
+ rpos, err := mysql.DecodePosition(r.Status.Position)
+ if err != nil {
+ return false
+ }
+
+ return !lpos.AtLeast(rpos)
+}
+
+// SortedReplicatingTablets returns a sorted list of replicating tablets (which
+// is a struct grouping a Tablet together with its replication Status).
+//
+// The sorting order is:
+// 1. Tablets that do not have a replication Status.
+// 2. Any tablets of type MASTER.
+// 3. Remaining tablets sorted by comparing replication positions.
+func SortedReplicatingTablets(tabletMap map[string]*topodatapb.Tablet, replicationStatuses map[string]*replicationdatapb.Status) []*ReplicatingTablet {
+ rtablets := make([]*ReplicatingTablet, 0, len(tabletMap))
+
+ for alias, tablet := range tabletMap {
+ if status, ok := replicationStatuses[alias]; ok {
+ rtablets = append(rtablets, &ReplicatingTablet{
+ Status: status,
+ Tablet: tablet,
+ })
+ } else {
+ rtablets = append(rtablets, &ReplicatingTablet{Tablet: tablet})
+ }
+ }
+
+ sort.Sort(rTablets(rtablets))
+
+ return rtablets
+}
diff --git a/go/cmd/vtctldclient/cli/tablets.go b/go/cmd/vtctldclient/cli/tablets.go
new file mode 100644
index 00000000000..a2962c42b45
--- /dev/null
+++ b/go/cmd/vtctldclient/cli/tablets.go
@@ -0,0 +1,40 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package cli
+
+import (
+ "vitess.io/vitess/go/vt/topo/topoproto"
+
+ topodatapb "vitess.io/vitess/go/vt/proto/topodata"
+)
+
+// TabletAliasesFromPosArgs takes a list of positional (non-flag) arguments and
+// converts them to tablet aliases.
+func TabletAliasesFromPosArgs(args []string) ([]*topodatapb.TabletAlias, error) {
+ aliases := make([]*topodatapb.TabletAlias, 0, len(args))
+
+ for _, arg := range args {
+ alias, err := topoproto.ParseTabletAlias(arg)
+ if err != nil {
+ return nil, err
+ }
+
+ aliases = append(aliases, alias)
+ }
+
+ return aliases, nil
+}
diff --git a/go/cmd/vtctldclient/commands.go b/go/cmd/vtctldclient/commands.go
deleted file mode 100644
index 951b04f8679..00000000000
--- a/go/cmd/vtctldclient/commands.go
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
-Copyright 2020 The Vitess Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package main
-
-import (
- "encoding/json"
- "fmt"
-
- "github.com/spf13/cobra"
-
- vtctldatapb "vitess.io/vitess/go/vt/proto/vtctldata"
-)
-
-var (
- findAllShardsInKeyspaceCmd = &cobra.Command{
- Use: "FindAllShardsInKeyspace keyspace",
- Aliases: []string{"findallshardsinkeyspace"},
- Args: cobra.ExactArgs(1),
- RunE: commandFindAllShardsInKeyspace,
- }
- getKeyspaceCmd = &cobra.Command{
- Use: "GetKeyspace keyspace",
- Aliases: []string{"getkeyspace"},
- Args: cobra.ExactArgs(1),
- RunE: commandGetKeyspace,
- }
- getKeyspacesCmd = &cobra.Command{
- Use: "GetKeyspaces",
- Aliases: []string{"getkeyspaces"},
- Args: cobra.NoArgs,
- RunE: commandGetKeyspaces,
- }
-)
-
-func commandFindAllShardsInKeyspace(cmd *cobra.Command, args []string) error {
- ks := cmd.Flags().Arg(0)
- resp, err := client.FindAllShardsInKeyspace(commandCtx, &vtctldatapb.FindAllShardsInKeyspaceRequest{
- Keyspace: ks,
- })
-
- if err != nil {
- return err
- }
-
- data, err := json.Marshal(&resp)
- if err != nil {
- return err
- }
-
- fmt.Printf("%s\n", data)
- return nil
-}
-
-func commandGetKeyspace(cmd *cobra.Command, args []string) error {
- ks := cmd.Flags().Arg(0)
- resp, err := client.GetKeyspace(commandCtx, &vtctldatapb.GetKeyspaceRequest{
- Keyspace: ks,
- })
-
- if err != nil {
- return err
- }
-
- fmt.Printf("%+v\n", resp.Keyspace)
-
- return nil
-}
-
-func commandGetKeyspaces(cmd *cobra.Command, args []string) error {
- resp, err := client.GetKeyspaces(commandCtx, &vtctldatapb.GetKeyspacesRequest{})
- if err != nil {
- return err
- }
-
- fmt.Printf("%+v\n", resp.Keyspaces)
-
- return nil
-}
-
-func init() {
- rootCmd.AddCommand(findAllShardsInKeyspaceCmd)
- rootCmd.AddCommand(getKeyspaceCmd)
- rootCmd.AddCommand(getKeyspacesCmd)
-}
diff --git a/go/cmd/vtctldclient/internal/command/backups.go b/go/cmd/vtctldclient/internal/command/backups.go
new file mode 100644
index 00000000000..21d5673ef34
--- /dev/null
+++ b/go/cmd/vtctldclient/internal/command/backups.go
@@ -0,0 +1,62 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package command
+
+import (
+ "fmt"
+ "strings"
+
+ "github.com/spf13/cobra"
+
+ "vitess.io/vitess/go/cmd/vtctldclient/cli"
+ vtctldatapb "vitess.io/vitess/go/vt/proto/vtctldata"
+)
+
+// GetBackups makes a GetBackups gRPC call to a vtctld.
+var GetBackups = &cobra.Command{
+ Use: "GetBackups keyspace shard",
+ Args: cobra.ExactArgs(2),
+ RunE: commandGetBackups,
+}
+
+func commandGetBackups(cmd *cobra.Command, args []string) error {
+ cli.FinishedParsing(cmd)
+
+ keyspace := cmd.Flags().Arg(0)
+ shard := cmd.Flags().Arg(1)
+
+ resp, err := client.GetBackups(commandCtx, &vtctldatapb.GetBackupsRequest{
+ Keyspace: keyspace,
+ Shard: shard,
+ })
+ if err != nil {
+ return err
+ }
+
+ names := make([]string, len(resp.Backups))
+ for i, b := range resp.Backups {
+ names[i] = b.Name
+ }
+
+ fmt.Printf("%s\n", strings.Join(names, "\n"))
+
+ return nil
+}
+
+func init() {
+ Root.AddCommand(GetBackups)
+}
diff --git a/go/cmd/vtctldclient/internal/command/cells.go b/go/cmd/vtctldclient/internal/command/cells.go
new file mode 100644
index 00000000000..e04984f761b
--- /dev/null
+++ b/go/cmd/vtctldclient/internal/command/cells.go
@@ -0,0 +1,106 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package command
+
+import (
+ "fmt"
+ "strings"
+
+ "github.com/spf13/cobra"
+
+ "vitess.io/vitess/go/cmd/vtctldclient/cli"
+
+ vtctldatapb "vitess.io/vitess/go/vt/proto/vtctldata"
+)
+
+var (
+ // GetCellInfoNames makes a GetCellInfoNames gRPC call to a vtctld.
+ GetCellInfoNames = &cobra.Command{
+ Use: "GetCellInfoNames",
+ Args: cobra.NoArgs,
+ RunE: commandGetCellInfoNames,
+ }
+ // GetCellInfo makes a GetCellInfo gRPC call to a vtctld.
+ GetCellInfo = &cobra.Command{
+ Use: "GetCellInfo cell",
+ Args: cobra.ExactArgs(1),
+ RunE: commandGetCellInfo,
+ }
+ // GetCellsAliases makes a GetCellsAliases gRPC call to a vtctld.
+ GetCellsAliases = &cobra.Command{
+ Use: "GetCellsAliases",
+ Args: cobra.NoArgs,
+ RunE: commandGetCellsAliases,
+ }
+)
+
+func commandGetCellInfoNames(cmd *cobra.Command, args []string) error {
+ cli.FinishedParsing(cmd)
+
+ resp, err := client.GetCellInfoNames(commandCtx, &vtctldatapb.GetCellInfoNamesRequest{})
+ if err != nil {
+ return err
+ }
+
+ fmt.Printf("%s\n", strings.Join(resp.Names, "\n"))
+
+ return nil
+}
+
+func commandGetCellInfo(cmd *cobra.Command, args []string) error {
+ cli.FinishedParsing(cmd)
+
+ cell := cmd.Flags().Arg(0)
+
+ resp, err := client.GetCellInfo(commandCtx, &vtctldatapb.GetCellInfoRequest{Cell: cell})
+ if err != nil {
+ return err
+ }
+
+ data, err := cli.MarshalJSON(resp.CellInfo)
+ if err != nil {
+ return err
+ }
+
+ fmt.Printf("%s\n", data)
+
+ return nil
+}
+
+func commandGetCellsAliases(cmd *cobra.Command, args []string) error {
+ cli.FinishedParsing(cmd)
+
+ resp, err := client.GetCellsAliases(commandCtx, &vtctldatapb.GetCellsAliasesRequest{})
+ if err != nil {
+ return err
+ }
+
+ data, err := cli.MarshalJSON(resp.Aliases)
+ if err != nil {
+ return err
+ }
+
+ fmt.Printf("%s\n", data)
+
+ return nil
+}
+
+func init() {
+ Root.AddCommand(GetCellInfoNames)
+ Root.AddCommand(GetCellInfo)
+ Root.AddCommand(GetCellsAliases)
+}
diff --git a/go/cmd/vtctldclient/internal/command/doc.go b/go/cmd/vtctldclient/internal/command/doc.go
new file mode 100644
index 00000000000..b83db0ef0a4
--- /dev/null
+++ b/go/cmd/vtctldclient/internal/command/doc.go
@@ -0,0 +1,144 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+/*
+Package command contains the commands used by vtctldclient. It is intended only
+for use in vtctldclient's main package and entrypoint. The rest of this
+documentation is intended for maintainers.
+
+Commands are grouped into files by the types of resources they interact with (
+e.g. GetTablet, CreateTablet, DeleteTablet, GetTablets) or by what they do (e.g.
+PlannedReparentShard, EmergencyReparentShard, InitShardPrimary). Please add the
+command to the appropriate existing file, alphabetically, or create a new
+grouping if one does not exist.
+
+The root command lives in root.go, and commands must attach themselves to this
+during an init function in order to be reachable from the CLI. root.go also
+contains the global variables available to any subcommand that are managed by
+the root command's pre- and post-run functions. Commands must not attempt to
+manage these, as that may conflict with Root's post-run cleanup actions. All
+commands should, at a minimum, use the commandCtx rather than creating their own
+context.Background to start, as it contains root tracing spans that would be
+lost.
+
+Commands should not keep their logic in an anonymous function on the
+cobra.Command struct, but instead in a separate function that is assigned to
+RunE. Commands should strive to keep declaration, function definition, and flag
+initialization located as closely together as possible, to make the code easier
+to follow and understand (the global variables declared near Root are the
+exception here, not the rule). Commands should also prevent individual flag
+names from polluting the package namespace.
+
+A good pattern we have found is to do the following:
+ package command
+
+ // (imports ...)
+
+ var (
+ CreateTablet = &cobra.Command{
+ Use: "CreateTablet [options] --keyspace= --shard= ",
+ Args: cobra.ExactArgs(2),
+ RunE: commandCreateTablet,
+ }
+ GetTablet = &cobra.Command{
+ Use: "GetTablet ",
+ Args: cobra.ExactArgs(1),
+ RunE: commandGetTablet,
+ }
+ )
+
+ var createTabletOptions = struct {
+ Opt1 string
+ Opt2 bool
+ Keyspace string
+ Shard string
+ }{}
+
+ func commandCreateTablet(cmd *cobra.Command, args []string) error {
+ aliasStr := cmd.Flags().Args(0)
+ tabletTypeStr := cmd.Flags().Args(1)
+
+ // do stuff with:
+ // - client
+ // - commandCtx
+ // - createTabletOptions
+ // - aliasStr
+ // - tabletTypeStr
+
+ return nil
+ }
+
+ // GetTablet takes no flags, so it needs no anonymous struct to store them
+ func commandGetTablet(cmd *cobra.Command, args []string) error {
+ aliasStr := cmd.Flags().Arg(0)
+
+ // do stuff with:
+ // - client
+ // - commandCtx
+ // - aliasStr
+
+ return nil
+ }
+
+ // finally, hook up all the commands in this file to Root, and add any flags
+ // to each of those commands
+
+ func init() {
+ CreateTablet.Flags().StringVar(&createTabletOptions.Opt1, "opt1", "default", "help")
+ CreateTablet.Flags().BoolVar(&createTabletOptions.Opt2, "opt2", false, "help")
+ CreateTablet.Flags().StringVarP(&createTabletOptions.Keyspace, "keyspace", "k", "keyspace of tablet")
+ CreateTablet.MarkFlagRequired("keyspace")
+ CreateTablet.Flags().StringVarP(&createTabletOptions.Shard, "shard", "s", "shard range of tablet")
+ CreateTablet.MarkFlagRequired("shard")
+ Root.AddCommand(CreateTablet)
+
+ Root.AddCommand(GetTablet)
+ }
+
+A note on RunE and SilenceUsage:
+
+We prefer using RunE over Run for the entrypoint to our subcommands, because it
+allows us return errors back up to the vtctldclient main function and do error
+handling, logging, and exit-code management once, in one place, rather than on a
+per-command basis. However, cobra treats errors returned from a command's RunE
+as usage errors, and therefore will print the command's full usage text to
+stderr when RunE returns non-nil, in addition to propagating that error back up
+to the result of the root command's Execute() method. This is decidedly not what
+we want. There is no plan to address this in cobra v1. [1]
+
+The suggested workaround for this issue is to set SilenceUsage: true, either on
+the root command or on every subcommand individually. This also does not work
+for vtctldclient, because not every flag can be parsed during pflag.Parse time,
+and for certain flags (mutually exclusive options, optional flags that require
+other flags to be set with them, etc) we do additional parsing and validation of
+flags in an individual subcommand. We want errors during this phase to be
+treated as usage errors, so setting SilenceUsage=true before this point would
+not cause usage text to be printed for us.
+
+So, for us, we want to individually set cmd.SilenceUsage = true at *particular
+points* in each command, dependending on whether that command needs to do
+an additional parse & validation pass. In most cases, the command does not need
+to post-validate its options, and can set cmd.SilencUsage = true as their first
+line. We feel, though, that a line that reads "SilenceUsage = true" to be
+potentially confusing in how it reads. A maintainer without sufficient context
+may read this and say "Silence usage? We don't want that" and remove the lines,
+so we provide a wrapper function that communicates intent, cli.FinishedParsing,
+that each subcommand should call when they have transitioned from the parsing &
+validation phase of their entrypoint to the actual logic.
+
+[1]: https://github.com/spf13/cobra/issues/340
+*/
+package command
diff --git a/go/cmd/vtctldclient/internal/command/keyspaces.go b/go/cmd/vtctldclient/internal/command/keyspaces.go
new file mode 100644
index 00000000000..c9e779358a1
--- /dev/null
+++ b/go/cmd/vtctldclient/internal/command/keyspaces.go
@@ -0,0 +1,290 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package command
+
+import (
+ "errors"
+ "fmt"
+ "time"
+
+ "github.com/spf13/cobra"
+
+ "vitess.io/vitess/go/cmd/vtctldclient/cli"
+ "vitess.io/vitess/go/vt/logutil"
+ "vitess.io/vitess/go/vt/topo"
+
+ topodatapb "vitess.io/vitess/go/vt/proto/topodata"
+ vtctldatapb "vitess.io/vitess/go/vt/proto/vtctldata"
+ "vitess.io/vitess/go/vt/proto/vttime"
+)
+
+var (
+ // CreateKeyspace makes a CreateKeyspace gRPC call to a vtctld.
+ CreateKeyspace = &cobra.Command{
+ Use: "CreateKeyspace KEYSPACE_NAME [--force] [--sharding-column-name NAME --sharding-column-type TYPE] [--base-keyspace KEYSPACE --snapshot-timestamp TIME] [--served-from DB_TYPE:KEYSPACE ...]",
+ Args: cobra.ExactArgs(1),
+ RunE: commandCreateKeyspace,
+ }
+ // DeleteKeyspace makes a DeleteKeyspace gRPC call to a vtctld.
+ DeleteKeyspace = &cobra.Command{
+ Use: "DeleteKeyspace KEYSPACE_NAME",
+ Args: cobra.ExactArgs(1),
+ RunE: commandDeleteKeyspace,
+ }
+ // FindAllShardsInKeyspace makes a FindAllShardsInKeyspace gRPC call to a vtctld.
+ FindAllShardsInKeyspace = &cobra.Command{
+ Use: "FindAllShardsInKeyspace keyspace",
+ Aliases: []string{"findallshardsinkeyspace"},
+ Args: cobra.ExactArgs(1),
+ RunE: commandFindAllShardsInKeyspace,
+ }
+ // GetKeyspace makes a GetKeyspace gRPC call to a vtctld.
+ GetKeyspace = &cobra.Command{
+ Use: "GetKeyspace keyspace",
+ Aliases: []string{"getkeyspace"},
+ Args: cobra.ExactArgs(1),
+ RunE: commandGetKeyspace,
+ }
+ // GetKeyspaces makes a GetKeyspaces gRPC call to a vtctld.
+ GetKeyspaces = &cobra.Command{
+ Use: "GetKeyspaces",
+ Aliases: []string{"getkeyspaces"},
+ Args: cobra.NoArgs,
+ RunE: commandGetKeyspaces,
+ }
+ // RemoveKeyspaceCell makes a RemoveKeyspaceCell gRPC call to a vtctld.
+ RemoveKeyspaceCell = &cobra.Command{
+ Use: "RemoveKeyspaceCell ",
+ Args: cobra.ExactArgs(2),
+ RunE: commandRemoveKeyspaceCell,
+ }
+)
+
+var createKeyspaceOptions = struct {
+ Force bool
+ AllowEmptyVSchema bool
+
+ ShardingColumnName string
+ ShardingColumnType cli.KeyspaceIDTypeFlag
+
+ ServedFromsMap cli.StringMapValue
+
+ KeyspaceType cli.KeyspaceTypeFlag
+ BaseKeyspace string
+ SnapshotTimestamp string
+}{
+ KeyspaceType: cli.KeyspaceTypeFlag(topodatapb.KeyspaceType_NORMAL),
+}
+
+func commandCreateKeyspace(cmd *cobra.Command, args []string) error {
+ name := cmd.Flags().Arg(0)
+
+ switch topodatapb.KeyspaceType(createKeyspaceOptions.KeyspaceType) {
+ case topodatapb.KeyspaceType_NORMAL, topodatapb.KeyspaceType_SNAPSHOT:
+ default:
+ return fmt.Errorf("invalid keyspace type passed to --type: %v", createKeyspaceOptions.KeyspaceType)
+ }
+
+ var snapshotTime *vttime.Time
+ if topodatapb.KeyspaceType(createKeyspaceOptions.KeyspaceType) == topodatapb.KeyspaceType_SNAPSHOT {
+ if createKeyspaceOptions.BaseKeyspace == "" {
+ return errors.New("--base-keyspace is required for a snapshot keyspace")
+ }
+
+ if createKeyspaceOptions.SnapshotTimestamp == "" {
+ return errors.New("--snapshot-timestamp is required for a snapshot keyspace")
+ }
+
+ t, err := time.Parse(time.RFC3339, createKeyspaceOptions.SnapshotTimestamp)
+ if err != nil {
+ return fmt.Errorf("cannot parse --snapshot-timestamp as RFC3339: %w", err)
+ }
+
+ if now := time.Now(); t.After(now) {
+ return fmt.Errorf("--snapshot-time cannot be in the future; snapshot = %v, now = %v", t, now)
+ }
+
+ snapshotTime = logutil.TimeToProto(t)
+ }
+
+ cli.FinishedParsing(cmd)
+
+ req := &vtctldatapb.CreateKeyspaceRequest{
+ Name: name,
+ Force: createKeyspaceOptions.Force,
+ AllowEmptyVSchema: createKeyspaceOptions.AllowEmptyVSchema,
+ ShardingColumnName: createKeyspaceOptions.ShardingColumnName,
+ ShardingColumnType: topodatapb.KeyspaceIdType(createKeyspaceOptions.ShardingColumnType),
+ Type: topodatapb.KeyspaceType(createKeyspaceOptions.KeyspaceType),
+ BaseKeyspace: createKeyspaceOptions.BaseKeyspace,
+ SnapshotTime: snapshotTime,
+ }
+
+ for n, v := range createKeyspaceOptions.ServedFromsMap.StringMapValue {
+ tt, err := topo.ParseServingTabletType(n)
+ if err != nil {
+ return err
+ }
+
+ req.ServedFroms = append(req.ServedFroms, &topodatapb.Keyspace_ServedFrom{
+ TabletType: tt,
+ Keyspace: v,
+ })
+ }
+
+ resp, err := client.CreateKeyspace(commandCtx, req)
+ if err != nil {
+ return err
+ }
+
+ data, err := cli.MarshalJSON(resp.Keyspace)
+ if err != nil {
+ return err
+ }
+
+ fmt.Printf("Successfully created keyspace %s. Result:\n%s\n", name, data)
+
+ return nil
+}
+
+var deleteKeyspaceOptions = struct {
+ Recursive bool
+}{}
+
+func commandDeleteKeyspace(cmd *cobra.Command, args []string) error {
+ cli.FinishedParsing(cmd)
+
+ ks := cmd.Flags().Arg(0)
+ _, err := client.DeleteKeyspace(commandCtx, &vtctldatapb.DeleteKeyspaceRequest{
+ Keyspace: ks,
+ Recursive: deleteKeyspaceOptions.Recursive,
+ })
+
+ if err != nil {
+ return fmt.Errorf("DeleteKeyspace(%v) error: %w; please check the topo", ks, err)
+ }
+
+ fmt.Printf("Successfully deleted keyspace %v.\n", ks)
+
+ return nil
+}
+
+func commandFindAllShardsInKeyspace(cmd *cobra.Command, args []string) error {
+ cli.FinishedParsing(cmd)
+
+ ks := cmd.Flags().Arg(0)
+ resp, err := client.FindAllShardsInKeyspace(commandCtx, &vtctldatapb.FindAllShardsInKeyspaceRequest{
+ Keyspace: ks,
+ })
+
+ if err != nil {
+ return err
+ }
+
+ data, err := cli.MarshalJSON(resp)
+ if err != nil {
+ return err
+ }
+
+ fmt.Printf("%s\n", data)
+ return nil
+}
+
+func commandGetKeyspace(cmd *cobra.Command, args []string) error {
+ cli.FinishedParsing(cmd)
+
+ ks := cmd.Flags().Arg(0)
+ resp, err := client.GetKeyspace(commandCtx, &vtctldatapb.GetKeyspaceRequest{
+ Keyspace: ks,
+ })
+
+ if err != nil {
+ return err
+ }
+
+ fmt.Printf("%+v\n", resp.Keyspace)
+
+ return nil
+}
+
+func commandGetKeyspaces(cmd *cobra.Command, args []string) error {
+ cli.FinishedParsing(cmd)
+
+ resp, err := client.GetKeyspaces(commandCtx, &vtctldatapb.GetKeyspacesRequest{})
+ if err != nil {
+ return err
+ }
+
+ data, err := cli.MarshalJSON(resp.Keyspaces)
+ if err != nil {
+ return err
+ }
+
+ fmt.Printf("%s\n", data)
+
+ return nil
+}
+
+var removeKeyspaceCellOptions = struct {
+ Force bool
+ Recursive bool
+}{}
+
+func commandRemoveKeyspaceCell(cmd *cobra.Command, args []string) error {
+ cli.FinishedParsing(cmd)
+
+ keyspace := cmd.Flags().Arg(0)
+ cell := cmd.Flags().Arg(1)
+
+ _, err := client.RemoveKeyspaceCell(commandCtx, &vtctldatapb.RemoveKeyspaceCellRequest{
+ Keyspace: keyspace,
+ Cell: cell,
+ Force: removeKeyspaceCellOptions.Force,
+ Recursive: removeKeyspaceCellOptions.Recursive,
+ })
+
+ if err != nil {
+ return err
+ }
+
+ fmt.Printf("Successfully removed keyspace %s from cell %s\n", keyspace, cell)
+
+ return nil
+}
+
+func init() {
+ CreateKeyspace.Flags().BoolVarP(&createKeyspaceOptions.Force, "force", "f", false, "Proceeds even if the keyspace already exists. Does not overwrite the existing keyspace record")
+ CreateKeyspace.Flags().BoolVarP(&createKeyspaceOptions.AllowEmptyVSchema, "allow-empty-vschema", "e", false, "Allows a new keyspace to have no vschema")
+ CreateKeyspace.Flags().StringVar(&createKeyspaceOptions.ShardingColumnName, "sharding-column-name", "", "The column name to use for sharding operations")
+ CreateKeyspace.Flags().Var(&createKeyspaceOptions.ShardingColumnType, "sharding-column-type", "The type of the column to use for sharding operations")
+ CreateKeyspace.Flags().Var(&createKeyspaceOptions.ServedFromsMap, "served-from", "TODO")
+ CreateKeyspace.Flags().Var(&createKeyspaceOptions.KeyspaceType, "type", "The type of the keyspace")
+ CreateKeyspace.Flags().StringVar(&createKeyspaceOptions.BaseKeyspace, "base-keyspace", "", "The base keyspace for a snapshot keyspace.")
+ CreateKeyspace.Flags().StringVar(&createKeyspaceOptions.SnapshotTimestamp, "snapshot-timestamp", "", "The snapshot time for a snapshot keyspace, as a timestamp in RFC3339 format.")
+ Root.AddCommand(CreateKeyspace)
+
+ DeleteKeyspace.Flags().BoolVarP(&deleteKeyspaceOptions.Recursive, "recursive", "r", false, "Recursively delete all shards in the keyspace, and all tablets in those shards.")
+ Root.AddCommand(DeleteKeyspace)
+
+ Root.AddCommand(FindAllShardsInKeyspace)
+ Root.AddCommand(GetKeyspace)
+ Root.AddCommand(GetKeyspaces)
+
+ RemoveKeyspaceCell.Flags().BoolVarP(&removeKeyspaceCellOptions.Force, "force", "f", false, "Proceed even if the cell's topology server cannot be reached. The assumption is that you turned down the entire cell, and just need to update the global topo data.")
+ RemoveKeyspaceCell.Flags().BoolVarP(&removeKeyspaceCellOptions.Recursive, "recursive", "r", false, "Also delete all tablets in that cell beloning to the specified keyspace.")
+ Root.AddCommand(RemoveKeyspaceCell)
+}
diff --git a/go/cmd/vtctldclient/internal/command/reparents.go b/go/cmd/vtctldclient/internal/command/reparents.go
new file mode 100644
index 00000000000..dbd621e021a
--- /dev/null
+++ b/go/cmd/vtctldclient/internal/command/reparents.go
@@ -0,0 +1,278 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package command
+
+import (
+ "fmt"
+ "time"
+
+ "github.com/spf13/cobra"
+
+ "vitess.io/vitess/go/cmd/vtctldclient/cli"
+ "vitess.io/vitess/go/protoutil"
+ "vitess.io/vitess/go/vt/log"
+ "vitess.io/vitess/go/vt/logutil"
+ "vitess.io/vitess/go/vt/topo"
+ "vitess.io/vitess/go/vt/topo/topoproto"
+
+ topodatapb "vitess.io/vitess/go/vt/proto/topodata"
+ vtctldatapb "vitess.io/vitess/go/vt/proto/vtctldata"
+)
+
+var (
+ // EmergencyReparentShard makes an EmergencyReparent gRPC call to a vtctld.
+ EmergencyReparentShard = &cobra.Command{
+ Use: "EmergencyReparentShard ",
+ Args: cobra.ExactArgs(1),
+ Long: "Reparents the shard to the new primary. Assumes the old primary is dead and not responding",
+ RunE: commandEmergencyReparentShard,
+ }
+ // InitShardPrimary makes an InitShardPrimary gRPC call to a vtctld.
+ InitShardPrimary = &cobra.Command{
+ Use: "InitShardPrimary ",
+ Args: cobra.ExactArgs(2),
+ RunE: commandInitShardPrimary,
+ }
+ // PlannedReparentShard makes a PlannedReparentShard gRPC call to a vtctld.
+ PlannedReparentShard = &cobra.Command{
+ Use: "PlannedReparentShard ",
+ Args: cobra.ExactArgs(1),
+ Long: "string",
+ RunE: commandPlannedReparentShard,
+ }
+ // ReparentTablet makes a ReparentTablet gRPC call to a vtctld.
+ ReparentTablet = &cobra.Command{
+ Use: "ReparentTablet ",
+ Long: "Reparent a tablet to the current primary in the shard. This only works if the current replica position " +
+ "matches the last known reparent action.",
+ Args: cobra.ExactArgs(1),
+ RunE: commandReparentTablet,
+ }
+ // TabletExternallyReparented makes a TabletExternallyReparented gRPC call
+ // to a vtctld.
+ TabletExternallyReparented = &cobra.Command{
+ Use: "TabletExternallyReparented ",
+ Args: cobra.ExactArgs(1),
+ RunE: commandTabletExternallyReparented,
+ }
+)
+
+var emergencyReparentShardOptions = struct {
+ Force bool
+ WaitReplicasTimeout time.Duration
+ NewPrimaryAliasStr string
+ IgnoreReplicaAliasStrList []string
+}{}
+
+func commandEmergencyReparentShard(cmd *cobra.Command, args []string) error {
+ keyspace, shard, err := topoproto.ParseKeyspaceShard(cmd.Flags().Arg(0))
+ if err != nil {
+ return err
+ }
+
+ var (
+ newPrimaryAlias *topodatapb.TabletAlias
+ ignoreReplicaAliases = make([]*topodatapb.TabletAlias, len(emergencyReparentShardOptions.IgnoreReplicaAliasStrList))
+ )
+
+ if emergencyReparentShardOptions.NewPrimaryAliasStr != "" {
+ newPrimaryAlias, err = topoproto.ParseTabletAlias(emergencyReparentShardOptions.NewPrimaryAliasStr)
+ if err != nil {
+ return err
+ }
+ }
+
+ for i, aliasStr := range emergencyReparentShardOptions.IgnoreReplicaAliasStrList {
+ alias, err := topoproto.ParseTabletAlias(aliasStr)
+ if err != nil {
+ return err
+ }
+
+ ignoreReplicaAliases[i] = alias
+ }
+
+ cli.FinishedParsing(cmd)
+
+ resp, err := client.EmergencyReparentShard(commandCtx, &vtctldatapb.EmergencyReparentShardRequest{
+ Keyspace: keyspace,
+ Shard: shard,
+ NewPrimary: newPrimaryAlias,
+ IgnoreReplicas: ignoreReplicaAliases,
+ WaitReplicasTimeout: protoutil.DurationToProto(emergencyReparentShardOptions.WaitReplicasTimeout),
+ })
+ if err != nil {
+ return err
+ }
+
+ for _, event := range resp.Events {
+ fmt.Println(logutil.EventString(event))
+ }
+
+ return nil
+}
+
+var initShardPrimaryOptions = struct {
+ WaitReplicasTimeout time.Duration
+ Force bool
+}{}
+
+func commandInitShardPrimary(cmd *cobra.Command, args []string) error {
+ keyspace, shard, err := topoproto.ParseKeyspaceShard(cmd.Flags().Arg(0))
+ if err != nil {
+ return err
+ }
+
+ tabletAlias, err := topoproto.ParseTabletAlias(cmd.Flags().Arg(1))
+ if err != nil {
+ return err
+ }
+
+ cli.FinishedParsing(cmd)
+
+ resp, err := client.InitShardPrimary(commandCtx, &vtctldatapb.InitShardPrimaryRequest{
+ Keyspace: keyspace,
+ Shard: shard,
+ PrimaryElectTabletAlias: tabletAlias,
+ WaitReplicasTimeout: protoutil.DurationToProto(initShardPrimaryOptions.WaitReplicasTimeout),
+ Force: initShardPrimaryOptions.Force,
+ })
+ if err != nil {
+ return err
+ }
+
+ for _, event := range resp.Events {
+ log.Infof("%v", event)
+ }
+
+ return err
+}
+
+var plannedReparentShardOptions = struct {
+ NewPrimaryAliasStr string
+ AvoidPrimaryAliasStr string
+ WaitReplicasTimeout time.Duration
+}{}
+
+func commandPlannedReparentShard(cmd *cobra.Command, args []string) error {
+ keyspace, shard, err := topoproto.ParseKeyspaceShard(cmd.Flags().Arg(0))
+ if err != nil {
+ return err
+ }
+
+ var (
+ newPrimaryAlias *topodatapb.TabletAlias
+ avoidPrimaryAlias *topodatapb.TabletAlias
+ )
+
+ if plannedReparentShardOptions.NewPrimaryAliasStr != "" {
+ newPrimaryAlias, err = topoproto.ParseTabletAlias(plannedReparentShardOptions.NewPrimaryAliasStr)
+ if err != nil {
+ return err
+ }
+ }
+
+ if plannedReparentShardOptions.AvoidPrimaryAliasStr != "" {
+ avoidPrimaryAlias, err = topoproto.ParseTabletAlias(plannedReparentShardOptions.AvoidPrimaryAliasStr)
+ if err != nil {
+ return err
+ }
+ }
+
+ cli.FinishedParsing(cmd)
+
+ resp, err := client.PlannedReparentShard(commandCtx, &vtctldatapb.PlannedReparentShardRequest{
+ Keyspace: keyspace,
+ Shard: shard,
+ NewPrimary: newPrimaryAlias,
+ AvoidPrimary: avoidPrimaryAlias,
+ WaitReplicasTimeout: protoutil.DurationToProto(plannedReparentShardOptions.WaitReplicasTimeout),
+ })
+ if err != nil {
+ return err
+ }
+
+ for _, event := range resp.Events {
+ fmt.Println(logutil.EventString(event))
+ }
+
+ return nil
+}
+
+func commandReparentTablet(cmd *cobra.Command, args []string) error {
+ alias, err := topoproto.ParseTabletAlias(cmd.Flags().Arg(0))
+ if err != nil {
+ return err
+ }
+
+ resp, err := client.ReparentTablet(commandCtx, &vtctldatapb.ReparentTabletRequest{
+ Tablet: alias,
+ })
+ if err != nil {
+ return err
+ }
+
+ data, err := cli.MarshalJSON(resp)
+ if err != nil {
+ return err
+ }
+
+ fmt.Printf("%s\n", data)
+
+ return nil
+}
+
+func commandTabletExternallyReparented(cmd *cobra.Command, args []string) error {
+ alias, err := topoproto.ParseTabletAlias(cmd.Flags().Arg(0))
+ if err != nil {
+ return err
+ }
+
+ resp, err := client.TabletExternallyReparented(commandCtx, &vtctldatapb.TabletExternallyReparentedRequest{
+ Tablet: alias,
+ })
+ if err != nil {
+ return err
+ }
+
+ data, err := cli.MarshalJSON(resp)
+ if err != nil {
+ return err
+ }
+
+ fmt.Printf("%s\n", data)
+
+ return nil
+}
+
+func init() {
+ EmergencyReparentShard.Flags().DurationVar(&emergencyReparentShardOptions.WaitReplicasTimeout, "wait-replicas-timeout", *topo.RemoteOperationTimeout, "Time to wait for replicas to catch up in reparenting.")
+ EmergencyReparentShard.Flags().StringVar(&emergencyReparentShardOptions.NewPrimaryAliasStr, "new-primary", "", "Alias of a tablet that should be the new primary. If not specified, the vtctld will select the best candidate to promote.")
+ EmergencyReparentShard.Flags().StringSliceVarP(&emergencyReparentShardOptions.IgnoreReplicaAliasStrList, "ignore-replicas", "i", nil, "Comma-separated, repeated list of replica tablet aliases to ignore during the emergency reparent.")
+ Root.AddCommand(EmergencyReparentShard)
+
+ InitShardPrimary.Flags().DurationVar(&initShardPrimaryOptions.WaitReplicasTimeout, "wait-replicas-timeout", 30*time.Second, "time to wait for replicas to catch up in reparenting")
+ InitShardPrimary.Flags().BoolVar(&initShardPrimaryOptions.Force, "force", false, "will force the reparent even if the provided tablet is not a master or the shard master")
+ Root.AddCommand(InitShardPrimary)
+
+ PlannedReparentShard.Flags().DurationVar(&plannedReparentShardOptions.WaitReplicasTimeout, "wait-replicas-timeout", *topo.RemoteOperationTimeout, "Time to wait for replicas to catch up on replication both before and after reparenting.")
+ PlannedReparentShard.Flags().StringVar(&plannedReparentShardOptions.NewPrimaryAliasStr, "new-primary", "", "Alias of a tablet that should be the new primary.")
+ PlannedReparentShard.Flags().StringVar(&plannedReparentShardOptions.AvoidPrimaryAliasStr, "avoid-primary", "", "Alias of a tablet that should not be the primary; i.e. \"reparent to any other tablet if this one is the primary\".")
+ Root.AddCommand(PlannedReparentShard)
+
+ Root.AddCommand(ReparentTablet)
+ Root.AddCommand(TabletExternallyReparented)
+}
diff --git a/go/cmd/vtctldclient/internal/command/root.go b/go/cmd/vtctldclient/internal/command/root.go
new file mode 100644
index 00000000000..7243c8836e5
--- /dev/null
+++ b/go/cmd/vtctldclient/internal/command/root.go
@@ -0,0 +1,81 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package command
+
+import (
+ "context"
+ "errors"
+ "io"
+ "time"
+
+ "github.com/spf13/cobra"
+
+ "vitess.io/vitess/go/trace"
+ "vitess.io/vitess/go/vt/log"
+ "vitess.io/vitess/go/vt/vtctl/vtctldclient"
+)
+
+var (
+ client vtctldclient.VtctldClient
+ traceCloser io.Closer
+ commandCtx context.Context
+ commandCancel func()
+
+ server string
+ actionTimeout time.Duration
+
+ // Root is the main entrypoint to the vtctldclient CLI.
+ Root = &cobra.Command{
+ // We use PersistentPreRun to set up the tracer, grpc client, and
+ // command context for every command.
+ PersistentPreRunE: func(cmd *cobra.Command, args []string) (err error) {
+ traceCloser = trace.StartTracing("vtctldclient")
+ if server == "" {
+ err = errors.New("please specify -server to specify the vtctld server to connect to")
+ log.Error(err)
+ return err
+ }
+
+ client, err = vtctldclient.New("grpc", server)
+
+ commandCtx, commandCancel = context.WithTimeout(context.Background(), actionTimeout)
+ return err
+ },
+ // Similarly, PersistentPostRun cleans up the resources spawned by
+ // PersistentPreRun.
+ PersistentPostRunE: func(cmd *cobra.Command, args []string) error {
+ commandCancel()
+ err := client.Close()
+ trace.LogErrorsWhenClosing(traceCloser)
+ return err
+ },
+ TraverseChildren: true,
+ // By default, cobra will print any error returned by a child command to
+ // stderr, and then return that error back up the call chain. Since we
+ // use vitess's log package to log any error we get back from
+ // Root.Execute() (in ../../main.go) this actually results in duplicate
+ // stderr lines. So, somewhat counterintuitively, we actually "silence"
+ // all errors in cobra (just from being output, they still get
+ // propagated).
+ SilenceErrors: true,
+ }
+)
+
+func init() {
+ Root.PersistentFlags().StringVar(&server, "server", "", "server to use for connection")
+ Root.PersistentFlags().DurationVar(&actionTimeout, "action_timeout", time.Hour, "timeout for the total command")
+}
diff --git a/go/cmd/vtctldclient/internal/command/schema.go b/go/cmd/vtctldclient/internal/command/schema.go
new file mode 100644
index 00000000000..f1e438df308
--- /dev/null
+++ b/go/cmd/vtctldclient/internal/command/schema.go
@@ -0,0 +1,101 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package command
+
+import (
+ "errors"
+ "fmt"
+ "strings"
+
+ "github.com/spf13/cobra"
+
+ "vitess.io/vitess/go/cmd/vtctldclient/cli"
+ "vitess.io/vitess/go/vt/topo/topoproto"
+
+ vtctldatapb "vitess.io/vitess/go/vt/proto/vtctldata"
+)
+
+// GetSchema makes a GetSchema gRPC call to a vtctld.
+var GetSchema = &cobra.Command{
+ Use: "GetSchema [--tables TABLES ...] [--exclude-tables EXCLUDE_TABLES ...] [{--table-names-only | --table-sizes-only}] [--include-views] alias",
+ Args: cobra.ExactArgs(1),
+ RunE: commandGetSchema,
+}
+
+var getSchemaOptions = struct {
+ Tables []string
+ ExcludeTables []string
+ IncludeViews bool
+ TableNamesOnly bool
+ TableSizesOnly bool
+}{}
+
+func commandGetSchema(cmd *cobra.Command, args []string) error {
+ if getSchemaOptions.TableNamesOnly && getSchemaOptions.TableSizesOnly {
+ return errors.New("can only pass one of --table-names-only and --table-sizes-only")
+ }
+
+ alias, err := topoproto.ParseTabletAlias(cmd.Flags().Arg(0))
+ if err != nil {
+ return err
+ }
+
+ cli.FinishedParsing(cmd)
+
+ resp, err := client.GetSchema(commandCtx, &vtctldatapb.GetSchemaRequest{
+ TabletAlias: alias,
+ Tables: getSchemaOptions.Tables,
+ ExcludeTables: getSchemaOptions.ExcludeTables,
+ IncludeViews: getSchemaOptions.IncludeViews,
+ TableNamesOnly: getSchemaOptions.TableNamesOnly,
+ TableSizesOnly: getSchemaOptions.TableSizesOnly,
+ })
+ if err != nil {
+ return err
+ }
+
+ if getSchemaOptions.TableNamesOnly {
+ names := make([]string, len(resp.Schema.TableDefinitions))
+
+ for i, td := range resp.Schema.TableDefinitions {
+ names[i] = td.Name
+ }
+
+ fmt.Printf("%s\n", strings.Join(names, "\n"))
+
+ return nil
+ }
+
+ data, err := cli.MarshalJSON(resp.Schema)
+ if err != nil {
+ return err
+ }
+
+ fmt.Printf("%s\n", data)
+
+ return nil
+}
+
+func init() {
+ GetSchema.Flags().StringSliceVar(&getSchemaOptions.Tables, "tables", nil, "TODO")
+ GetSchema.Flags().StringSliceVar(&getSchemaOptions.ExcludeTables, "exclude-tables", nil, "TODO")
+ GetSchema.Flags().BoolVar(&getSchemaOptions.IncludeViews, "include-views", false, "TODO")
+ GetSchema.Flags().BoolVarP(&getSchemaOptions.TableNamesOnly, "table-names-only", "n", false, "TODO")
+ GetSchema.Flags().BoolVarP(&getSchemaOptions.TableSizesOnly, "table-sizes-only", "s", false, "TODO")
+
+ Root.AddCommand(GetSchema)
+}
diff --git a/go/cmd/vtctldclient/internal/command/serving_graph.go b/go/cmd/vtctldclient/internal/command/serving_graph.go
new file mode 100644
index 00000000000..18a5d04ec37
--- /dev/null
+++ b/go/cmd/vtctldclient/internal/command/serving_graph.go
@@ -0,0 +1,93 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package command
+
+import (
+ "fmt"
+
+ "github.com/spf13/cobra"
+
+ "vitess.io/vitess/go/cmd/vtctldclient/cli"
+
+ vtctldatapb "vitess.io/vitess/go/vt/proto/vtctldata"
+)
+
+var (
+ // GetSrvKeyspaces makes a GetSrvKeyspaces gRPC call to a vtctld.
+ GetSrvKeyspaces = &cobra.Command{
+ Use: "GetSrvKeyspaces [ ...]",
+ Args: cobra.MinimumNArgs(1),
+ RunE: commandGetSrvKeyspaces,
+ }
+ // GetSrvVSchema makes a GetSrvVSchema gRPC call to a vtctld.
+ GetSrvVSchema = &cobra.Command{
+ Use: "GetSrvVSchema cell",
+ Args: cobra.ExactArgs(1),
+ RunE: commandGetSrvVSchema,
+ }
+)
+
+func commandGetSrvKeyspaces(cmd *cobra.Command, args []string) error {
+ cli.FinishedParsing(cmd)
+
+ keyspace := cmd.Flags().Arg(0)
+ cells := cmd.Flags().Args()[1:]
+
+ resp, err := client.GetSrvKeyspaces(commandCtx, &vtctldatapb.GetSrvKeyspacesRequest{
+ Keyspace: keyspace,
+ Cells: cells,
+ })
+ if err != nil {
+ return err
+ }
+
+ data, err := cli.MarshalJSON(resp.SrvKeyspaces)
+ if err != nil {
+ return err
+ }
+
+ fmt.Printf("%s\n", data)
+
+ return nil
+}
+
+func commandGetSrvVSchema(cmd *cobra.Command, args []string) error {
+ cli.FinishedParsing(cmd)
+
+ cell := cmd.Flags().Arg(0)
+
+ resp, err := client.GetSrvVSchema(commandCtx, &vtctldatapb.GetSrvVSchemaRequest{
+ Cell: cell,
+ })
+ if err != nil {
+ return err
+ }
+
+ data, err := cli.MarshalJSON(resp.SrvVSchema)
+ if err != nil {
+ return err
+ }
+
+ fmt.Printf("%s\n", data)
+
+ return nil
+}
+
+func init() {
+ Root.AddCommand(GetSrvKeyspaces)
+ Root.AddCommand(GetSrvVSchema)
+}
diff --git a/go/cmd/vtctldclient/internal/command/shards.go b/go/cmd/vtctldclient/internal/command/shards.go
new file mode 100644
index 00000000000..b43eff0769e
--- /dev/null
+++ b/go/cmd/vtctldclient/internal/command/shards.go
@@ -0,0 +1,234 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package command
+
+import (
+ "fmt"
+
+ "github.com/spf13/cobra"
+
+ "vitess.io/vitess/go/cmd/vtctldclient/cli"
+ "vitess.io/vitess/go/vt/topo/topoproto"
+
+ vtctldatapb "vitess.io/vitess/go/vt/proto/vtctldata"
+)
+
+var (
+ // CreateShard makes a CreateShard gRPC request to a vtctld.
+ CreateShard = &cobra.Command{
+ Use: "CreateShard ",
+ Args: cobra.ExactArgs(1),
+ RunE: commandCreateShard,
+ }
+ // DeleteShards makes a DeleteShards gRPC request to a vtctld.
+ DeleteShards = &cobra.Command{
+ Use: "DeleteShards [ ...]",
+ Args: cobra.MinimumNArgs(1),
+ RunE: commandDeleteShards,
+ }
+ // GetShard makes a GetShard gRPC request to a vtctld.
+ GetShard = &cobra.Command{
+ Use: "GetShard ",
+ Args: cobra.ExactArgs(1),
+ RunE: commandGetShard,
+ }
+ // RemoveShardCell makes a RemoveShardCell gRPC request to a vtctld.
+ RemoveShardCell = &cobra.Command{
+ Use: "RemoveShardCell ",
+ Args: cobra.ExactArgs(2),
+ RunE: commandRemoveShardCell,
+ }
+ // ShardReplicationPositions makes a ShardReplicationPositions gRPC request
+ // to a vtctld.
+ ShardReplicationPositions = &cobra.Command{
+ Use: "ShardReplicationPositions ",
+ Long: `Shows the replication status of each tablet in the shard graph.
+Output is sorted by tablet type, then replication position.
+Use ctrl-C to interrupt the command and see partial results if needed.`,
+ Args: cobra.ExactArgs(1),
+ RunE: commandShardReplicationPositions,
+ }
+)
+
+var createShardOptions = struct {
+ Force bool
+ IncludeParent bool
+}{}
+
+func commandCreateShard(cmd *cobra.Command, args []string) error {
+ keyspace, shard, err := topoproto.ParseKeyspaceShard(cmd.Flags().Arg(0))
+ if err != nil {
+ return err
+ }
+
+ cli.FinishedParsing(cmd)
+
+ resp, err := client.CreateShard(commandCtx, &vtctldatapb.CreateShardRequest{
+ Keyspace: keyspace,
+ ShardName: shard,
+ Force: createShardOptions.Force,
+ IncludeParent: createShardOptions.IncludeParent,
+ })
+ if err != nil {
+ return err
+ }
+
+ data, err := cli.MarshalJSON(resp)
+ if err != nil {
+ return err
+ }
+
+ fmt.Printf("%s\n", data)
+
+ return nil
+}
+
+var deleteShardsOptions = struct {
+ Recursive bool
+ EvenIfServing bool
+}{}
+
+func commandDeleteShards(cmd *cobra.Command, args []string) error {
+ shards, err := cli.ParseKeyspaceShards(cmd.Flags().Args())
+ if err != nil {
+ return err
+ }
+
+ cli.FinishedParsing(cmd)
+
+ _, err = client.DeleteShards(commandCtx, &vtctldatapb.DeleteShardsRequest{
+ Shards: shards,
+ EvenIfServing: deleteShardsOptions.EvenIfServing,
+ Recursive: deleteShardsOptions.Recursive,
+ })
+
+ if err != nil {
+ return fmt.Errorf("%w: while deleting %d shards; please inspect the topo", err, len(shards))
+ }
+
+ fmt.Printf("Successfully deleted %d shards\n", len(shards))
+
+ return nil
+}
+
+func commandGetShard(cmd *cobra.Command, args []string) error {
+ keyspace, shard, err := topoproto.ParseKeyspaceShard(cmd.Flags().Arg(0))
+ if err != nil {
+ return err
+ }
+
+ cli.FinishedParsing(cmd)
+
+ resp, err := client.GetShard(commandCtx, &vtctldatapb.GetShardRequest{
+ Keyspace: keyspace,
+ ShardName: shard,
+ })
+ if err != nil {
+ return err
+ }
+
+ data, err := cli.MarshalJSON(resp.Shard)
+ if err != nil {
+ return err
+ }
+
+ fmt.Printf("%s\n", data)
+
+ return nil
+}
+
+var removeShardCellOptions = struct {
+ Force bool
+ Recursive bool
+}{}
+
+func commandRemoveShardCell(cmd *cobra.Command, args []string) error {
+ keyspace, shard, err := topoproto.ParseKeyspaceShard(cmd.Flags().Arg(0))
+ if err != nil {
+ return err
+ }
+
+ cli.FinishedParsing(cmd)
+
+ cell := cmd.Flags().Arg(1)
+
+ _, err = client.RemoveShardCell(commandCtx, &vtctldatapb.RemoveShardCellRequest{
+ Keyspace: keyspace,
+ ShardName: shard,
+ Cell: cell,
+ Force: removeShardCellOptions.Force,
+ Recursive: removeShardCellOptions.Recursive,
+ })
+
+ if err != nil {
+ return err
+ }
+
+ fmt.Printf("Successfully removed cell %v from shard %s/%s\n", cell, keyspace, shard)
+
+ return nil
+}
+
+func commandShardReplicationPositions(cmd *cobra.Command, args []string) error {
+ keyspace, shard, err := topoproto.ParseKeyspaceShard(cmd.Flags().Arg(0))
+ if err != nil {
+ return err
+ }
+
+ cli.FinishedParsing(cmd)
+
+ resp, err := client.ShardReplicationPositions(commandCtx, &vtctldatapb.ShardReplicationPositionsRequest{
+ Keyspace: keyspace,
+ Shard: shard,
+ })
+ if err != nil {
+ return err
+ }
+
+ for _, rt := range cli.SortedReplicatingTablets(resp.TabletMap, resp.ReplicationStatuses) {
+ var line string
+
+ switch rt.Status {
+ case nil:
+ line = cli.MarshalTabletAWK(rt.Tablet) + " "
+ default:
+ line = cli.MarshalTabletAWK(rt.Tablet) + fmt.Sprintf(" %v %v", rt.Status.Position, rt.Status.SecondsBehindMaster)
+ }
+
+ fmt.Println(line)
+ }
+
+ return nil
+}
+
+func init() {
+ CreateShard.Flags().BoolVarP(&createShardOptions.Force, "force", "f", false, "")
+ CreateShard.Flags().BoolVarP(&createShardOptions.IncludeParent, "include-parent", "p", false, "")
+ Root.AddCommand(CreateShard)
+
+ DeleteShards.Flags().BoolVarP(&deleteShardsOptions.Recursive, "recursive", "r", false, "Also delete all tablets belonging to the shard. This is required to delete a non-empty shard.")
+ DeleteShards.Flags().BoolVarP(&deleteShardsOptions.EvenIfServing, "even-if-serving", "f", false, "Remove the shard even if it is serving. Use with caution.")
+ Root.AddCommand(DeleteShards)
+
+ Root.AddCommand(GetShard)
+
+ RemoveShardCell.Flags().BoolVarP(&removeShardCellOptions.Force, "force", "f", false, "Proceed even if the cell's topology server cannot be reached. The assumption is that you turned down the entire cell, and just need to update the global topo data.")
+ RemoveShardCell.Flags().BoolVarP(&removeShardCellOptions.Recursive, "recursive", "r", false, "Also delete all tablets in that cell beloning to the specified shard.")
+ Root.AddCommand(RemoveShardCell)
+
+ Root.AddCommand(ShardReplicationPositions)
+}
diff --git a/go/cmd/vtctldclient/internal/command/tablets.go b/go/cmd/vtctldclient/internal/command/tablets.go
new file mode 100644
index 00000000000..65aef8298fd
--- /dev/null
+++ b/go/cmd/vtctldclient/internal/command/tablets.go
@@ -0,0 +1,237 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package command
+
+import (
+ "fmt"
+ "strings"
+
+ "github.com/spf13/cobra"
+
+ "vitess.io/vitess/go/cmd/vtctldclient/cli"
+ "vitess.io/vitess/go/vt/topo/topoproto"
+
+ topodatapb "vitess.io/vitess/go/vt/proto/topodata"
+ vtctldatapb "vitess.io/vitess/go/vt/proto/vtctldata"
+)
+
+var (
+ // ChangeTabletType makes a ChangeTabletType gRPC call to a vtctld.
+ ChangeTabletType = &cobra.Command{
+ Use: "ChangeTabletType [--dry-run] TABLET_ALIAS TABLET_TYPE",
+ Args: cobra.ExactArgs(2),
+ RunE: commandChangeTabletType,
+ }
+ // DeleteTablets makes a DeleteTablets gRPC call to a vtctld.
+ DeleteTablets = &cobra.Command{
+ Use: "DeleteTablets TABLET_ALIAS [ TABLET_ALIAS ... ]",
+ Args: cobra.MinimumNArgs(1),
+ RunE: commandDeleteTablets,
+ }
+ // GetTablet makes a GetTablet gRPC call to a vtctld.
+ GetTablet = &cobra.Command{
+ Use: "GetTablet alias",
+ Args: cobra.ExactArgs(1),
+ RunE: commandGetTablet,
+ }
+ // GetTablets makes a GetTablets gRPC call to a vtctld.
+ GetTablets = &cobra.Command{
+ Use: "GetTablets [--strict] [{--cell $c1 [--cell $c2 ...], --keyspace $ks [--shard $shard], --tablet-alias $alias}]",
+ Args: cobra.NoArgs,
+ RunE: commandGetTablets,
+ }
+)
+
+var changeTabletTypeOptions = struct {
+ DryRun bool
+}{}
+
+func commandChangeTabletType(cmd *cobra.Command, args []string) error {
+ aliasStr := cmd.Flags().Arg(0)
+ typeStr := cmd.Flags().Arg(1)
+
+ alias, err := topoproto.ParseTabletAlias(aliasStr)
+ if err != nil {
+ return err
+ }
+
+ newType, err := topoproto.ParseTabletType(typeStr)
+ if err != nil {
+ return err
+ }
+
+ cli.FinishedParsing(cmd)
+
+ resp, err := client.ChangeTabletType(commandCtx, &vtctldatapb.ChangeTabletTypeRequest{
+ TabletAlias: alias,
+ DbType: newType,
+ DryRun: changeTabletTypeOptions.DryRun,
+ })
+ if err != nil {
+ return err
+ }
+
+ if resp.WasDryRun {
+ fmt.Println("--- DRY RUN ---")
+ }
+
+ fmt.Printf("- %v\n", cli.MarshalTabletAWK(resp.BeforeTablet))
+ fmt.Printf("+ %v\n", cli.MarshalTabletAWK(resp.AfterTablet))
+
+ return nil
+}
+
+var deleteTabletsOptions = struct {
+ AllowPrimary bool
+}{}
+
+func commandDeleteTablets(cmd *cobra.Command, args []string) error {
+ aliases, err := cli.TabletAliasesFromPosArgs(cmd.Flags().Args())
+ if err != nil {
+ return err
+ }
+
+ cli.FinishedParsing(cmd)
+
+ _, err = client.DeleteTablets(commandCtx, &vtctldatapb.DeleteTabletsRequest{
+ TabletAliases: aliases,
+ AllowPrimary: deleteTabletsOptions.AllowPrimary,
+ })
+
+ if err != nil {
+ return fmt.Errorf("%w: while deleting %d tablets; please inspect the topo", err, len(aliases))
+ }
+
+ fmt.Printf("Successfully deleted %d tablets\n", len(aliases))
+
+ return nil
+}
+
+func commandGetTablet(cmd *cobra.Command, args []string) error {
+ aliasStr := cmd.Flags().Arg(0)
+ alias, err := topoproto.ParseTabletAlias(aliasStr)
+ if err != nil {
+ return err
+ }
+
+ cli.FinishedParsing(cmd)
+
+ resp, err := client.GetTablet(commandCtx, &vtctldatapb.GetTabletRequest{TabletAlias: alias})
+ if err != nil {
+ return err
+ }
+
+ data, err := cli.MarshalJSON(resp.Tablet)
+ if err != nil {
+ return err
+ }
+
+ fmt.Printf("%s\n", data)
+
+ return nil
+}
+
+var getTabletsOptions = struct {
+ Cells []string
+ Keyspace string
+ Shard string
+
+ TabletAliasStrings []string
+
+ Format string
+ Strict bool
+}{}
+
+func commandGetTablets(cmd *cobra.Command, args []string) error {
+ format := strings.ToLower(getTabletsOptions.Format)
+
+ switch format {
+ case "awk", "json":
+ default:
+ return fmt.Errorf("invalid output format, got %s", getTabletsOptions.Format)
+ }
+
+ var aliases []*topodatapb.TabletAlias
+
+ if len(getTabletsOptions.TabletAliasStrings) > 0 {
+ switch {
+ case getTabletsOptions.Keyspace != "":
+ return fmt.Errorf("--keyspace (= %s) cannot be passed when using --tablet-alias (= %v)", getTabletsOptions.Keyspace, getTabletsOptions.TabletAliasStrings)
+ case getTabletsOptions.Shard != "":
+ return fmt.Errorf("--shard (= %s) cannot be passed when using --tablet-alias (= %v)", getTabletsOptions.Shard, getTabletsOptions.TabletAliasStrings)
+ case len(getTabletsOptions.Cells) > 0:
+ return fmt.Errorf("--cell (= %v) cannot be passed when using --tablet-alias (= %v)", getTabletsOptions.Cells, getTabletsOptions.TabletAliasStrings)
+ }
+
+ var err error
+ aliases, err = cli.TabletAliasesFromPosArgs(getTabletsOptions.TabletAliasStrings)
+ if err != nil {
+ return err
+ }
+ }
+
+ if getTabletsOptions.Keyspace == "" && getTabletsOptions.Shard != "" {
+ return fmt.Errorf("--shard (= %s) cannot be passed without also passing --keyspace", getTabletsOptions.Shard)
+ }
+
+ cli.FinishedParsing(cmd)
+
+ resp, err := client.GetTablets(commandCtx, &vtctldatapb.GetTabletsRequest{
+ TabletAliases: aliases,
+ Cells: getTabletsOptions.Cells,
+ Keyspace: getTabletsOptions.Keyspace,
+ Shard: getTabletsOptions.Shard,
+ Strict: getTabletsOptions.Strict,
+ })
+ if err != nil {
+ return err
+ }
+
+ switch format {
+ case "awk":
+ for _, t := range resp.Tablets {
+ fmt.Println(cli.MarshalTabletAWK(t))
+ }
+ case "json":
+ data, err := cli.MarshalJSON(resp.Tablets)
+ if err != nil {
+ return err
+ }
+
+ fmt.Printf("%s\n", data)
+ }
+
+ return nil
+}
+
+func init() {
+ ChangeTabletType.Flags().BoolVarP(&changeTabletTypeOptions.DryRun, "dry-run", "d", false, "Shows the proposed change without actually executing it")
+ Root.AddCommand(ChangeTabletType)
+
+ DeleteTablets.Flags().BoolVarP(&deleteTabletsOptions.AllowPrimary, "allow-primary", "p", false, "Allow the primary tablet of a shard to be deleted. Use with caution.")
+ Root.AddCommand(DeleteTablets)
+
+ Root.AddCommand(GetTablet)
+
+ GetTablets.Flags().StringSliceVarP(&getTabletsOptions.TabletAliasStrings, "tablet-alias", "t", nil, "List of tablet aliases to filter by")
+ GetTablets.Flags().StringSliceVarP(&getTabletsOptions.Cells, "cell", "c", nil, "List of cells to filter tablets by")
+ GetTablets.Flags().StringVarP(&getTabletsOptions.Keyspace, "keyspace", "k", "", "Keyspace to filter tablets by")
+ GetTablets.Flags().StringVarP(&getTabletsOptions.Shard, "shard", "s", "", "Shard to filter tablets by")
+ GetTablets.Flags().StringVar(&getTabletsOptions.Format, "format", "awk", "Output format to use; valid choices are (json, awk)")
+ GetTablets.Flags().BoolVar(&getTabletsOptions.Strict, "strict", false, "Require all cells to return successful tablet data. Without --strict, tablet listings may be partial.")
+ Root.AddCommand(GetTablets)
+}
diff --git a/go/cmd/vtctldclient/internal/command/vschemas.go b/go/cmd/vtctldclient/internal/command/vschemas.go
new file mode 100644
index 00000000000..ac4f4499090
--- /dev/null
+++ b/go/cmd/vtctldclient/internal/command/vschemas.go
@@ -0,0 +1,62 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package command
+
+import (
+ "fmt"
+
+ "github.com/spf13/cobra"
+
+ "vitess.io/vitess/go/cmd/vtctldclient/cli"
+
+ vtctldatapb "vitess.io/vitess/go/vt/proto/vtctldata"
+)
+
+var (
+ // GetVSchema makes a GetVSchema gRPC call to a vtctld.
+ GetVSchema = &cobra.Command{
+ Use: "GetVSchema keyspace",
+ Args: cobra.ExactArgs(1),
+ RunE: commandGetVSchema,
+ }
+)
+
+func commandGetVSchema(cmd *cobra.Command, args []string) error {
+ cli.FinishedParsing(cmd)
+
+ keyspace := cmd.Flags().Arg(0)
+
+ resp, err := client.GetVSchema(commandCtx, &vtctldatapb.GetVSchemaRequest{
+ Keyspace: keyspace,
+ })
+ if err != nil {
+ return err
+ }
+
+ data, err := cli.MarshalJSON(resp.VSchema)
+ if err != nil {
+ return err
+ }
+
+ fmt.Printf("%s\n", data)
+
+ return nil
+}
+
+func init() {
+ Root.AddCommand(GetVSchema)
+}
diff --git a/go/cmd/vtctldclient/internal/command/workflows.go b/go/cmd/vtctldclient/internal/command/workflows.go
new file mode 100644
index 00000000000..760139a9be9
--- /dev/null
+++ b/go/cmd/vtctldclient/internal/command/workflows.go
@@ -0,0 +1,69 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package command
+
+import (
+ "fmt"
+
+ "github.com/spf13/cobra"
+
+ "vitess.io/vitess/go/cmd/vtctldclient/cli"
+
+ vtctldatapb "vitess.io/vitess/go/vt/proto/vtctldata"
+)
+
+var (
+ // GetWorkflows makes a GetWorkflows gRPC call to a vtctld.
+ GetWorkflows = &cobra.Command{
+ Use: "GetWorkflows ",
+ Args: cobra.ExactArgs(1),
+ RunE: commandGetWorkflows,
+ }
+)
+
+var getWorkflowsOptions = struct {
+ ShowAll bool
+}{}
+
+func commandGetWorkflows(cmd *cobra.Command, args []string) error {
+ cli.FinishedParsing(cmd)
+
+ ks := cmd.Flags().Arg(0)
+
+ resp, err := client.GetWorkflows(commandCtx, &vtctldatapb.GetWorkflowsRequest{
+ Keyspace: ks,
+ ActiveOnly: !getWorkflowsOptions.ShowAll,
+ })
+
+ if err != nil {
+ return err
+ }
+
+ data, err := cli.MarshalJSON(resp)
+ if err != nil {
+ return err
+ }
+
+ fmt.Printf("%s\n", data)
+
+ return nil
+}
+
+func init() {
+ GetWorkflows.Flags().BoolVarP(&getWorkflowsOptions.ShowAll, "show-all", "a", false, "Show all workflows instead of just active workflows")
+ Root.AddCommand(GetWorkflows)
+}
diff --git a/go/cmd/vtctldclient/main.go b/go/cmd/vtctldclient/main.go
index f00eee7a410..9086b289b8c 100644
--- a/go/cmd/vtctldclient/main.go
+++ b/go/cmd/vtctldclient/main.go
@@ -17,70 +17,19 @@ limitations under the License.
package main
import (
- "context"
- "errors"
"flag"
- "io"
"os"
- "time"
-
- "github.com/spf13/cobra"
+ "vitess.io/vitess/go/cmd/vtctldclient/internal/command"
"vitess.io/vitess/go/exit"
- "vitess.io/vitess/go/trace"
"vitess.io/vitess/go/vt/log"
- "vitess.io/vitess/go/vt/vtctl/vtctldclient"
-)
-
-var (
- client vtctldclient.VtctldClient
- traceCloser io.Closer
- commandCtx context.Context
- commandCancel func()
-
- server string
- actionTimeout time.Duration
-
- // We use cobra to make subcommands easier to manage. And do a hack below
- // in main to grab the rest of the flags globally scattered to make sure we
- // pick up things like common servenv flags, tracing flags, etc. Refer to
- // commands.go for all of the subcommands.
- rootCmd = &cobra.Command{
- // We use PersistentPreRun to set up the tracer, grpc client, and
- // command context for every command.
- PersistentPreRunE: func(cmd *cobra.Command, args []string) (err error) {
- traceCloser = trace.StartTracing("vtctldclient")
- if server == "" {
- err = errors.New("please specify -server to specify the vtctld server to connect to")
- log.Error(err)
- return err
- }
-
- client, err = vtctldclient.New("grpc", server)
-
- commandCtx, commandCancel = context.WithTimeout(context.Background(), actionTimeout)
- return err
- },
- // Similarly, PersistentPostRun cleans up the resources spawned by
- // PersistentPreRun.
- PersistentPostRunE: func(cmd *cobra.Command, args []string) error {
- commandCancel()
- err := client.Close()
- trace.LogErrorsWhenClosing(traceCloser)
- return err
- },
- TraverseChildren: true,
- }
)
func main() {
defer exit.Recover()
// Grab all those global flags across the codebase and shove 'em on in.
- rootCmd.PersistentFlags().AddGoFlagSet(flag.CommandLine)
- // Attach our local flags
- rootCmd.PersistentFlags().StringVar(&server, "server", "", "server to use for connection")
- rootCmd.PersistentFlags().DurationVar(&actionTimeout, "action_timeout", time.Hour, "timeout for the total command")
+ command.Root.PersistentFlags().AddGoFlagSet(flag.CommandLine)
// hack to get rid of an "ERROR: logging before flag.Parse"
args := os.Args[:]
@@ -89,7 +38,7 @@ func main() {
os.Args = args
// back to your regularly scheduled cobra programming
- if err := rootCmd.Execute(); err != nil {
+ if err := command.Root.Execute(); err != nil {
log.Error(err)
exit.Return(1)
}
diff --git a/go/cmd/vtgateclienttest/services/echo.go b/go/cmd/vtgateclienttest/services/echo.go
index c12807e09b1..63102ce692e 100644
--- a/go/cmd/vtgateclienttest/services/echo.go
+++ b/go/cmd/vtgateclienttest/services/echo.go
@@ -143,7 +143,7 @@ func (c *echoClient) ExecuteBatch(ctx context.Context, session *vtgatepb.Session
return c.fallbackClient.ExecuteBatch(ctx, session, sqlList, bindVariablesList)
}
-func (c *echoClient) VStream(ctx context.Context, tabletType topodatapb.TabletType, vgtid *binlogdatapb.VGtid, filter *binlogdatapb.Filter, callback func([]*binlogdatapb.VEvent) error) error {
+func (c *echoClient) VStream(ctx context.Context, tabletType topodatapb.TabletType, vgtid *binlogdatapb.VGtid, filter *binlogdatapb.Filter, flags *vtgatepb.VStreamFlags, callback func([]*binlogdatapb.VEvent) error) error {
if strings.HasPrefix(vgtid.ShardGtids[0].Shard, EchoPrefix) {
_ = callback([]*binlogdatapb.VEvent{
{
@@ -170,5 +170,5 @@ func (c *echoClient) VStream(ctx context.Context, tabletType topodatapb.TabletTy
return nil
}
- return c.fallbackClient.VStream(ctx, tabletType, vgtid, filter, callback)
+ return c.fallbackClient.VStream(ctx, tabletType, vgtid, filter, flags, callback)
}
diff --git a/go/cmd/vtgateclienttest/services/fallback.go b/go/cmd/vtgateclienttest/services/fallback.go
index b94ca031106..5119fa36587 100644
--- a/go/cmd/vtgateclienttest/services/fallback.go
+++ b/go/cmd/vtgateclienttest/services/fallback.go
@@ -56,8 +56,8 @@ func (c fallbackClient) ResolveTransaction(ctx context.Context, dtid string) err
return c.fallback.ResolveTransaction(ctx, dtid)
}
-func (c fallbackClient) VStream(ctx context.Context, tabletType topodatapb.TabletType, vgtid *binlogdatapb.VGtid, filter *binlogdatapb.Filter, send func([]*binlogdatapb.VEvent) error) error {
- return c.fallback.VStream(ctx, tabletType, vgtid, filter, send)
+func (c fallbackClient) VStream(ctx context.Context, tabletType topodatapb.TabletType, vgtid *binlogdatapb.VGtid, filter *binlogdatapb.Filter, flags *vtgatepb.VStreamFlags, send func([]*binlogdatapb.VEvent) error) error {
+ return c.fallback.VStream(ctx, tabletType, vgtid, filter, flags, send)
}
func (c fallbackClient) HandlePanic(err *error) {
diff --git a/go/cmd/vtgateclienttest/services/terminal.go b/go/cmd/vtgateclienttest/services/terminal.go
index 3f4a4a7d30b..6a8e30fd9da 100644
--- a/go/cmd/vtgateclienttest/services/terminal.go
+++ b/go/cmd/vtgateclienttest/services/terminal.go
@@ -66,7 +66,7 @@ func (c *terminalClient) ResolveTransaction(ctx context.Context, dtid string) er
return errTerminal
}
-func (c *terminalClient) VStream(ctx context.Context, tabletType topodatapb.TabletType, vgtid *binlogdatapb.VGtid, filter *binlogdatapb.Filter, send func([]*binlogdatapb.VEvent) error) error {
+func (c *terminalClient) VStream(ctx context.Context, tabletType topodatapb.TabletType, vgtid *binlogdatapb.VGtid, filter *binlogdatapb.Filter, flags *vtgatepb.VStreamFlags, send func([]*binlogdatapb.VEvent) error) error {
return errTerminal
}
diff --git a/go/cmd/vtorc/main.go b/go/cmd/vtorc/main.go
index 19c7063f233..e64ced875d0 100644
--- a/go/cmd/vtorc/main.go
+++ b/go/cmd/vtorc/main.go
@@ -19,6 +19,9 @@ package main
import (
"flag"
+ _ "github.com/go-sql-driver/mysql"
+ _ "github.com/mattn/go-sqlite3"
+
"vitess.io/vitess/go/vt/orchestrator/app"
"vitess.io/vitess/go/vt/orchestrator/config"
"vitess.io/vitess/go/vt/orchestrator/external/golib/log"
diff --git a/go/cmd/vttablet/vttablet.go b/go/cmd/vttablet/vttablet.go
index ddeba7a8894..1d6838c3e9b 100644
--- a/go/cmd/vttablet/vttablet.go
+++ b/go/cmd/vttablet/vttablet.go
@@ -103,7 +103,7 @@ func main() {
DBConfigs: config.DB.Clone(),
QueryServiceControl: qsc,
UpdateStream: binlog.NewUpdateStream(ts, tablet.Keyspace, tabletAlias.Cell, qsc.SchemaEngine()),
- VREngine: vreplication.NewEngine(config, ts, tabletAlias.Cell, mysqld),
+ VREngine: vreplication.NewEngine(config, ts, tabletAlias.Cell, mysqld, qsc.LagThrottler()),
MetadataManager: &mysqlctl.MetadataManager{},
}
if err := tm.Start(tablet, config.Healthcheck.IntervalSeconds.Get()); err != nil {
diff --git a/go/cmd/vttestserver/main.go b/go/cmd/vttestserver/main.go
index 700af9f5600..2b645ec0812 100644
--- a/go/cmd/vttestserver/main.go
+++ b/go/cmd/vttestserver/main.go
@@ -23,8 +23,10 @@ import (
"flag"
"fmt"
"os"
+ "os/signal"
"strconv"
"strings"
+ "syscall"
"github.com/golang/protobuf/proto"
@@ -81,6 +83,16 @@ func init() {
" Also, the output specifies the mysql unix socket"+
" instead of the vtgate port.")
+ flag.BoolVar(&config.PersistentMode, "persistent_mode", false,
+ "If this flag is set, the MySQL data directory is not cleaned up"+
+ " when LocalCluster.TearDown() is called. This is useful for running"+
+ " vttestserver as a database container in local developer environments. Note"+
+ " that db migration files (-schema_dir option) and seeding of"+
+ " random data (-initialize_with_random_data option) will only run during"+
+ " cluster startup if the data directory does not already exist. vschema"+
+ " migrations are run every time the cluster starts, since persistence"+
+ " for the topology server has not been implemented yet")
+
flag.BoolVar(&doSeed, "initialize_with_random_data", false,
"If this flag is each table-shard will be initialized"+
" with random data. See also the 'rng_seed' and 'min_shard_size'"+
@@ -229,7 +241,9 @@ func main() {
log.Fatal(err)
}
- select {}
+ c := make(chan os.Signal, 1)
+ signal.Notify(c, os.Interrupt, syscall.SIGTERM)
+ <-c
}
func runCluster() (vttest.LocalCluster, error) {
diff --git a/go/cmd/vttestserver/vttestserver_test.go b/go/cmd/vttestserver/vttestserver_test.go
index fd98ad7b702..1fe55919d7f 100644
--- a/go/cmd/vttestserver/vttestserver_test.go
+++ b/go/cmd/vttestserver/vttestserver_test.go
@@ -21,12 +21,14 @@ import (
"fmt"
"io"
"io/ioutil"
+ "math/rand"
"os"
"path"
"strings"
"testing"
"time"
+ "vitess.io/vitess/go/sqltypes"
"vitess.io/vitess/go/vt/tlstest"
"github.com/stretchr/testify/assert"
@@ -52,10 +54,12 @@ type columnVindex struct {
}
func TestRunsVschemaMigrations(t *testing.T) {
+ args := os.Args
+ conf := config
+ defer resetFlags(args, conf)
+
cluster, err := startCluster()
defer cluster.TearDown()
- args := os.Args
- defer resetFlags(args)
assert.NoError(t, err)
assertColumnVindex(t, cluster, columnVindex{keyspace: "test_keyspace", table: "test_table", vindex: "my_vdx", vindexType: "hash", column: "id"})
@@ -67,12 +71,69 @@ func TestRunsVschemaMigrations(t *testing.T) {
assertColumnVindex(t, cluster, columnVindex{keyspace: "test_keyspace", table: "test_table1", vindex: "my_vdx", vindexType: "hash", column: "id"})
}
+func TestPersistentMode(t *testing.T) {
+ args := os.Args
+ conf := config
+ defer resetFlags(args, conf)
+
+ dir, err := ioutil.TempDir("/tmp", "vttestserver_persistent_mode_")
+ assert.NoError(t, err)
+ defer os.RemoveAll(dir)
+
+ cluster, err := startPersistentCluster(dir)
+ assert.NoError(t, err)
+
+ // basic sanity checks similar to TestRunsVschemaMigrations
+ assertColumnVindex(t, cluster, columnVindex{keyspace: "test_keyspace", table: "test_table", vindex: "my_vdx", vindexType: "hash", column: "id"})
+ assertColumnVindex(t, cluster, columnVindex{keyspace: "app_customer", table: "customers", vindex: "hash", vindexType: "hash", column: "id"})
+
+ // insert some data to ensure persistence across teardowns
+ err = execOnCluster(cluster, "app_customer", func(conn *mysql.Conn) error {
+ _, err := conn.ExecuteFetch("insert into customers (id, name) values (1, 'gopherson')", 1, false)
+ return err
+ })
+ assert.NoError(t, err)
+
+ expectedRows := [][]sqltypes.Value{
+ {sqltypes.NewInt64(1), sqltypes.NewVarChar("gopherson"), sqltypes.NULL},
+ }
+
+ // ensure data was actually inserted
+ var res *sqltypes.Result
+ err = execOnCluster(cluster, "app_customer", func(conn *mysql.Conn) (err error) {
+ res, err = conn.ExecuteFetch("SELECT * FROM customers", 1, false)
+ return err
+ })
+ assert.NoError(t, err)
+ assert.Equal(t, expectedRows, res.Rows)
+
+ // reboot the persistent cluster
+ cluster.TearDown()
+ cluster, err = startPersistentCluster(dir)
+ defer cluster.TearDown()
+ assert.NoError(t, err)
+
+ // rerun our sanity checks to make sure vschema migrations are run during every startup
+ assertColumnVindex(t, cluster, columnVindex{keyspace: "test_keyspace", table: "test_table", vindex: "my_vdx", vindexType: "hash", column: "id"})
+ assertColumnVindex(t, cluster, columnVindex{keyspace: "app_customer", table: "customers", vindex: "hash", vindexType: "hash", column: "id"})
+
+ // ensure previous data was successfully persisted
+ err = execOnCluster(cluster, "app_customer", func(conn *mysql.Conn) (err error) {
+ res, err = conn.ExecuteFetch("SELECT * FROM customers", 1, false)
+ return err
+ })
+ assert.NoError(t, err)
+ assert.Equal(t, expectedRows, res.Rows)
+}
+
func TestCanVtGateExecute(t *testing.T) {
+ args := os.Args
+ conf := config
+ defer resetFlags(args, conf)
+
cluster, err := startCluster()
assert.NoError(t, err)
defer cluster.TearDown()
- args := os.Args
- defer resetFlags(args)
client, err := vtctlclient.New(fmt.Sprintf("localhost:%v", cluster.GrpcPort()))
assert.NoError(t, err)
@@ -109,6 +170,10 @@ Out:
}
func TestMtlsAuth(t *testing.T) {
+ args := os.Args
+ conf := config
+ defer resetFlags(args, conf)
+
// Our test root.
root, err := ioutil.TempDir("", "tlstest")
if err != nil {
@@ -141,8 +206,6 @@ func TestMtlsAuth(t *testing.T) {
fmt.Sprintf("-grpc_auth_mtls_allowed_substrings=%s", "CN=ClientApp"))
assert.NoError(t, err)
defer cluster.TearDown()
- args := os.Args
- defer resetFlags(args)
// startCluster will apply vschema migrations using vtctl grpc and the clientCert.
assertColumnVindex(t, cluster, columnVindex{keyspace: "test_keyspace", table: "test_table", vindex: "my_vdx", vindexType: "hash", column: "id"})
@@ -150,6 +213,10 @@ func TestMtlsAuth(t *testing.T) {
}
func TestMtlsAuthUnauthorizedFails(t *testing.T) {
+ args := os.Args
+ conf := config
+ defer resetFlags(args, conf)
+
// Our test root.
root, err := ioutil.TempDir("", "tlstest")
if err != nil {
@@ -182,13 +249,21 @@ func TestMtlsAuthUnauthorizedFails(t *testing.T) {
fmt.Sprintf("-vtctld_grpc_ca=%s", caCert),
fmt.Sprintf("-grpc_auth_mtls_allowed_substrings=%s", "CN=ClientApp"))
defer cluster.TearDown()
- args := os.Args
- defer resetFlags(args)
assert.Error(t, err)
assert.Contains(t, err.Error(), "code = Unauthenticated desc = client certificate not authorized")
}
+func startPersistentCluster(dir string, flags ...string) (vttest.LocalCluster, error) {
+ flags = append(flags, []string{
+ "-persistent_mode",
+ // FIXME: if port is not provided, data_dir is not respected
+ fmt.Sprintf("-port=%d", randomPort()),
+ fmt.Sprintf("-data_dir=%s", dir),
+ }...)
+ return startCluster(flags...)
+}
+
func startCluster(flags ...string) (vttest.LocalCluster, error) {
schemaDirArg := "-schema_dir=data/schema"
tabletHostname := "-tablet_hostname=localhost"
@@ -201,6 +276,13 @@ func startCluster(flags ...string) (vttest.LocalCluster, error) {
}
func addColumnVindex(cluster vttest.LocalCluster, keyspace string, vschemaMigration string) error {
+ return execOnCluster(cluster, keyspace, func(conn *mysql.Conn) error {
+ _, err := conn.ExecuteFetch(vschemaMigration, 1, false)
+ return err
+ })
+}
+
+func execOnCluster(cluster vttest.LocalCluster, keyspace string, f func(*mysql.Conn) error) error {
ctx := context.Background()
vtParams := mysql.ConnParams{
Host: "localhost",
@@ -213,8 +295,7 @@ func addColumnVindex(cluster vttest.LocalCluster, keyspace string, vschemaMigrat
return err
}
defer conn.Close()
- _, err = conn.ExecuteFetch(vschemaMigration, 1, false)
- return err
+ return f(conn)
}
func assertColumnVindex(t *testing.T, cluster vttest.LocalCluster, expected columnVindex) {
@@ -243,6 +324,12 @@ func assertEqual(t *testing.T, actual string, expected string, message string) {
}
}
-func resetFlags(args []string) {
+func resetFlags(args []string, conf vttest.Config) {
os.Args = args
+ config = conf
+}
+
+func randomPort() int {
+ v := rand.Int31n(20000)
+ return int(v + 10000)
}
diff --git a/go/flagutil/flagutil.go b/go/flagutil/flagutil.go
index 0b9a449cccf..a03cb972d17 100644
--- a/go/flagutil/flagutil.go
+++ b/go/flagutil/flagutil.go
@@ -21,6 +21,7 @@ package flagutil
import (
"errors"
"flag"
+ "fmt"
"sort"
"strings"
)
@@ -124,3 +125,58 @@ func (value StringMapValue) String() string {
sort.Strings(parts)
return strings.Join(parts, ",")
}
+
+// DualFormatStringListVar creates a flag which supports both dashes and underscores
+func DualFormatStringListVar(p *[]string, name string, value []string, usage string) {
+ dashes := strings.Replace(name, "_", "-", -1)
+ underscores := strings.Replace(name, "-", "_", -1)
+
+ StringListVar(p, underscores, value, usage)
+ if dashes != underscores {
+ StringListVar(p, dashes, *p, fmt.Sprintf("Synonym to -%s", underscores))
+ }
+}
+
+// DualFormatStringVar creates a flag which supports both dashes and underscores
+func DualFormatStringVar(p *string, name string, value string, usage string) {
+ dashes := strings.Replace(name, "_", "-", -1)
+ underscores := strings.Replace(name, "-", "_", -1)
+
+ flag.StringVar(p, underscores, value, usage)
+ if dashes != underscores {
+ flag.StringVar(p, dashes, *p, fmt.Sprintf("Synonym to -%s", underscores))
+ }
+}
+
+// DualFormatInt64Var creates a flag which supports both dashes and underscores
+func DualFormatInt64Var(p *int64, name string, value int64, usage string) {
+ dashes := strings.Replace(name, "_", "-", -1)
+ underscores := strings.Replace(name, "-", "_", -1)
+
+ flag.Int64Var(p, underscores, value, usage)
+ if dashes != underscores {
+ flag.Int64Var(p, dashes, *p, fmt.Sprintf("Synonym to -%s", underscores))
+ }
+}
+
+// DualFormatIntVar creates a flag which supports both dashes and underscores
+func DualFormatIntVar(p *int, name string, value int, usage string) {
+ dashes := strings.Replace(name, "_", "-", -1)
+ underscores := strings.Replace(name, "-", "_", -1)
+
+ flag.IntVar(p, underscores, value, usage)
+ if dashes != underscores {
+ flag.IntVar(p, dashes, *p, fmt.Sprintf("Synonym to -%s", underscores))
+ }
+}
+
+// DualFormatBoolVar creates a flag which supports both dashes and underscores
+func DualFormatBoolVar(p *bool, name string, value bool, usage string) {
+ dashes := strings.Replace(name, "_", "-", -1)
+ underscores := strings.Replace(name, "-", "_", -1)
+
+ flag.BoolVar(p, underscores, value, usage)
+ if dashes != underscores {
+ flag.BoolVar(p, dashes, *p, fmt.Sprintf("Synonym to -%s", underscores))
+ }
+}
diff --git a/go/hack/runtime.go b/go/hack/runtime.go
new file mode 100644
index 00000000000..c7355769307
--- /dev/null
+++ b/go/hack/runtime.go
@@ -0,0 +1,45 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package hack
+
+import (
+ "reflect"
+ "unsafe"
+)
+
+//go:noescape
+//go:linkname memhash runtime.memhash
+func memhash(p unsafe.Pointer, h, s uintptr) uintptr
+
+//go:noescape
+//go:linkname strhash runtime.strhash
+func strhash(p unsafe.Pointer, h uintptr) uintptr
+
+// RuntimeMemhash provides access to the Go runtime's default hash function for arbitrary bytes.
+// This is an optimal hash function which takes an input seed and is potentially implemented in hardware
+// for most architectures. This is the same hash function that the language's `map` uses.
+func RuntimeMemhash(b []byte, seed uint64) uint64 {
+ pstring := (*reflect.SliceHeader)(unsafe.Pointer(&b))
+ return uint64(memhash(unsafe.Pointer(pstring.Data), uintptr(seed), uintptr(pstring.Len)))
+}
+
+// RuntimeStrhash provides access to the Go runtime's default hash function for strings.
+// This is an optimal hash function which takes an input seed and is potentially implemented in hardware
+// for most architectures. This is the same hash function that the language's `map` uses.
+func RuntimeStrhash(str string, seed uint64) uint64 {
+ return uint64(strhash(unsafe.Pointer(&str), uintptr(seed)))
+}
diff --git a/go/hack/runtime.s b/go/hack/runtime.s
new file mode 100644
index 00000000000..ac00d502ab5
--- /dev/null
+++ b/go/hack/runtime.s
@@ -0,0 +1,3 @@
+// DO NOT REMOVE: this empty goassembly file forces the Go compiler to perform
+// external linking on the sibling `runtime.go`, so that the symbols declared in that
+// file become properly resolved
diff --git a/go/mysql/auth_server.go b/go/mysql/auth_server.go
index 5df328e1896..b568537e16e 100644
--- a/go/mysql/auth_server.go
+++ b/go/mysql/auth_server.go
@@ -19,7 +19,9 @@ package mysql
import (
"bytes"
"crypto/rand"
+ "crypto/rsa"
"crypto/sha1"
+ "crypto/sha256"
"encoding/hex"
"net"
"strings"
@@ -117,8 +119,8 @@ func NewSalt() ([]byte, error) {
return salt, nil
}
-// ScramblePassword computes the hash of the password using 4.1+ method.
-func ScramblePassword(salt, password []byte) []byte {
+// ScrambleMysqlNativePassword computes the hash of the password using 4.1+ method.
+func ScrambleMysqlNativePassword(salt, password []byte) []byte {
if len(password) == 0 {
return nil
}
@@ -189,6 +191,58 @@ func isPassScrambleMysqlNativePassword(reply, salt []byte, mysqlNativePassword s
return bytes.Equal(candidateHash2, hash)
}
+// ScrambleCachingSha2Password computes the hash of the password using SHA256 as required by
+// caching_sha2_password plugin for "fast" authentication
+func ScrambleCachingSha2Password(salt []byte, password []byte) []byte {
+ if len(password) == 0 {
+ return nil
+ }
+
+ // stage1Hash = SHA256(password)
+ crypt := sha256.New()
+ crypt.Write(password)
+ stage1 := crypt.Sum(nil)
+
+ // scrambleHash = SHA256(SHA256(stage1Hash) + salt)
+ crypt.Reset()
+ crypt.Write(stage1)
+ innerHash := crypt.Sum(nil)
+
+ crypt.Reset()
+ crypt.Write(innerHash)
+ crypt.Write(salt)
+ scramble := crypt.Sum(nil)
+
+ // token = stage1Hash XOR scrambleHash
+ for i := range stage1 {
+ stage1[i] ^= scramble[i]
+ }
+
+ return stage1
+}
+
+// EncryptPasswordWithPublicKey obfuscates the password and encrypts it with server's public key as required by
+// caching_sha2_password plugin for "full" authentication
+func EncryptPasswordWithPublicKey(salt []byte, password []byte, pub *rsa.PublicKey) ([]byte, error) {
+ if len(password) == 0 {
+ return nil, nil
+ }
+
+ buffer := make([]byte, len(password)+1)
+ copy(buffer, password)
+ for i := range buffer {
+ buffer[i] ^= salt[i%len(salt)]
+ }
+
+ sha1Hash := sha1.New()
+ enc, err := rsa.EncryptOAEP(sha1Hash, rand.Reader, pub, buffer, nil)
+ if err != nil {
+ return nil, err
+ }
+
+ return enc, nil
+}
+
// Constants for the dialog plugin.
const (
mysqlDialogMessage = "Enter password: "
diff --git a/go/mysql/auth_server_clientcert_test.go b/go/mysql/auth_server_clientcert_test.go
index 9dbfdfe0d72..ed9062d29bf 100644
--- a/go/mysql/auth_server_clientcert_test.go
+++ b/go/mysql/auth_server_clientcert_test.go
@@ -61,7 +61,8 @@ func TestValidCert(t *testing.T) {
serverConfig, err := vttls.ServerConfig(
path.Join(root, "server-cert.pem"),
path.Join(root, "server-key.pem"),
- path.Join(root, "ca-cert.pem"))
+ path.Join(root, "ca-cert.pem"),
+ "")
if err != nil {
t.Fatalf("TLSServerConfig failed: %v", err)
}
@@ -143,7 +144,8 @@ func TestNoCert(t *testing.T) {
serverConfig, err := vttls.ServerConfig(
path.Join(root, "server-cert.pem"),
path.Join(root, "server-key.pem"),
- path.Join(root, "ca-cert.pem"))
+ path.Join(root, "ca-cert.pem"),
+ "")
if err != nil {
t.Fatalf("TLSServerConfig failed: %v", err)
}
diff --git a/go/mysql/auth_server_static.go b/go/mysql/auth_server_static.go
index acb90678f54..ef95febb292 100644
--- a/go/mysql/auth_server_static.go
+++ b/go/mysql/auth_server_static.go
@@ -244,7 +244,7 @@ func (a *AuthServerStatic) ValidateHash(salt []byte, user string, authResponse [
return &StaticUserData{entry.UserData, entry.Groups}, nil
}
} else {
- computedAuthResponse := ScramblePassword(salt, []byte(entry.Password))
+ computedAuthResponse := ScrambleMysqlNativePassword(salt, []byte(entry.Password))
// Validate the password.
if matchSourceHost(remoteAddr, entry.SourceHost) && bytes.Equal(authResponse, computedAuthResponse) {
return &StaticUserData{entry.UserData, entry.Groups}, nil
diff --git a/go/mysql/auth_server_static_test.go b/go/mysql/auth_server_static_test.go
index f195b4c72d1..d5e43f312fb 100644
--- a/go/mysql/auth_server_static_test.go
+++ b/go/mysql/auth_server_static_test.go
@@ -92,7 +92,7 @@ func TestValidateHashGetter(t *testing.T) {
t.Fatalf("error generating salt: %v", err)
}
- scrambled := ScramblePassword(salt, []byte("password"))
+ scrambled := ScrambleMysqlNativePassword(salt, []byte("password"))
getter, err := auth.ValidateHash(salt, "mysql_user", scrambled, addr)
if err != nil {
t.Fatalf("error validating password: %v", err)
@@ -270,7 +270,7 @@ func TestStaticPasswords(t *testing.T) {
t.Fatalf("error generating salt: %v", err)
}
- scrambled := ScramblePassword(salt, []byte(c.password))
+ scrambled := ScrambleMysqlNativePassword(salt, []byte(c.password))
_, err = auth.ValidateHash(salt, c.user, scrambled, addr)
if c.success {
diff --git a/go/mysql/auth_server_vault.go b/go/mysql/auth_server_vault.go
index 7f72cd72e19..25fe6611a40 100644
--- a/go/mysql/auth_server_vault.go
+++ b/go/mysql/auth_server_vault.go
@@ -251,7 +251,7 @@ func (a *AuthServerVault) ValidateHash(salt []byte, user string, authResponse []
return &StaticUserData{entry.UserData, entry.Groups}, nil
}
} else {
- computedAuthResponse := ScramblePassword(salt, []byte(entry.Password))
+ computedAuthResponse := ScrambleMysqlNativePassword(salt, []byte(entry.Password))
// Validate the password.
if matchSourceHost(remoteAddr, entry.SourceHost) && bytes.Equal(authResponse, computedAuthResponse) {
return &StaticUserData{entry.UserData, entry.Groups}, nil
diff --git a/go/mysql/binlog_event.go b/go/mysql/binlog_event.go
index e965c7faf1b..84ab17d71ce 100644
--- a/go/mysql/binlog_event.go
+++ b/go/mysql/binlog_event.go
@@ -122,6 +122,9 @@ type BinlogEvent interface {
// IsPseudo is for custom implementations of GTID.
IsPseudo() bool
+
+ // IsCompressed returns true if a compressed event is found (binlog_transaction_compression=ON)
+ IsCompressed() bool
}
// BinlogFormat contains relevant data from the FORMAT_DESCRIPTION_EVENT.
diff --git a/go/mysql/binlog_event_common.go b/go/mysql/binlog_event_common.go
index e9f022e0b28..8abfd9ac953 100644
--- a/go/mysql/binlog_event_common.go
+++ b/go/mysql/binlog_event_common.go
@@ -167,6 +167,11 @@ func (ev binlogEvent) IsPseudo() bool {
return false
}
+// IsCompressed returns true if a compressed event is found (binlog_transaction_compression=ON)
+func (ev binlogEvent) IsCompressed() bool {
+ return ev.Type() == eCompressedEvent
+}
+
// Format implements BinlogEvent.Format().
//
// Expected format (L = total length of event data):
diff --git a/go/mysql/binlog_event_filepos.go b/go/mysql/binlog_event_filepos.go
index dfec653081e..2f6bbb5bbfa 100644
--- a/go/mysql/binlog_event_filepos.go
+++ b/go/mysql/binlog_event_filepos.go
@@ -212,6 +212,10 @@ func (ev filePosFakeEvent) IsPseudo() bool {
return false
}
+func (ev filePosFakeEvent) IsCompressed() bool {
+ return false
+}
+
//----------------------------------------------------------------------------
// filePosGTIDEvent is a fake GTID event for filePos.
diff --git a/go/mysql/client.go b/go/mysql/client.go
index c9fd577b190..fdb75a67076 100644
--- a/go/mysql/client.go
+++ b/go/mysql/client.go
@@ -17,7 +17,10 @@ limitations under the License.
package mysql
import (
+ "crypto/rsa"
"crypto/tls"
+ "crypto/x509"
+ "encoding/pem"
"fmt"
"net"
"strconv"
@@ -235,6 +238,7 @@ func (c *Conn) clientHandshake(characterSet uint8, params *ConnParams) error {
return err
}
c.fillFlavor(params)
+ c.salt = salt
// Sanity check.
if capabilities&CapabilityClientProtocol41 == 0 {
@@ -291,7 +295,12 @@ func (c *Conn) clientHandshake(characterSet uint8, params *ConnParams) error {
}
// Password encryption.
- scrambledPassword := ScramblePassword(salt, []byte(params.Pass))
+ var scrambledPassword []byte
+ if c.authPluginName == CachingSha2Password {
+ scrambledPassword = ScrambleCachingSha2Password(salt, []byte(params.Pass))
+ } else {
+ scrambledPassword = ScrambleMysqlNativePassword(salt, []byte(params.Pass))
+ }
// Client Session Tracking Capability.
if params.Flags&CapabilityClientSessionTrack == CapabilityClientSessionTrack {
@@ -310,54 +319,8 @@ func (c *Conn) clientHandshake(characterSet uint8, params *ConnParams) error {
}
// Read the server response.
- response, err := c.readPacket()
- if err != nil {
- return NewSQLError(CRServerLost, SSUnknownSQLState, "%v", err)
- }
- switch response[0] {
- case OKPacket:
- // OK packet, we are authenticated. Save the user, keep going.
- c.User = params.Uname
- case AuthSwitchRequestPacket:
- // Server is asking to use a different auth method. We
- // only support cleartext plugin.
- pluginName, salt, err := parseAuthSwitchRequest(response)
- if err != nil {
- return NewSQLError(CRServerHandshakeErr, SSUnknownSQLState, "cannot parse auth switch request: %v", err)
- }
-
- if pluginName == MysqlClearPassword {
- // Write the cleartext password packet.
- if err := c.writeClearTextPassword(params); err != nil {
- return err
- }
- } else if pluginName == MysqlNativePassword {
- // Write the mysql_native_password packet.
- if err := c.writeMysqlNativePassword(params, salt); err != nil {
- return err
- }
- } else {
- return NewSQLError(CRServerHandshakeErr, SSUnknownSQLState, "server asked for unsupported auth method: %v", pluginName)
- }
-
- // Wait for OK packet.
- response, err = c.readPacket()
- if err != nil {
- return NewSQLError(CRServerLost, SSUnknownSQLState, "%v", err)
- }
- switch response[0] {
- case OKPacket:
- // OK packet, we are authenticated. Save the user, keep going.
- c.User = params.Uname
- case ErrPacket:
- return ParseErrorPacket(response)
- default:
- return NewSQLError(CRServerHandshakeErr, SSUnknownSQLState, "initial server response cannot be parsed: %v", response)
- }
- case ErrPacket:
- return ParseErrorPacket(response)
- default:
- return NewSQLError(CRServerHandshakeErr, SSUnknownSQLState, "initial server response cannot be parsed: %v", response)
+ if err := c.handleAuthResponse(params); err != nil {
+ return err
}
// If the server didn't support DbName in its handshake, set
@@ -515,10 +478,7 @@ func (c *Conn) parseInitialHandshakePacket(data []byte) (uint32, []byte, error)
// 5.6.2 that don't have a null terminated string.
authPluginName = string(data[pos : len(data)-1])
}
-
- if authPluginName != MysqlNativePassword {
- return 0, nil, NewSQLError(CRMalformedPacket, SSUnknownSQLState, "parseInitialHandshakePacket: only support %v auth plugin name, but got %v", MysqlNativePassword, authPluginName)
- }
+ c.authPluginName = authPluginName
}
return capabilities, authPluginData, nil
@@ -603,7 +563,7 @@ func (c *Conn) writeHandshakeResponse41(capabilities uint32, scrambledPassword [
lenNullString(params.Uname) +
// length of scrambled password is handled below.
len(scrambledPassword) +
- 21 + // "mysql_native_password" string.
+ len(c.authPluginName) +
1 // terminating zero.
// Add the DB name if the server supports it.
@@ -652,7 +612,7 @@ func (c *Conn) writeHandshakeResponse41(capabilities uint32, scrambledPassword [
}
// Assume native client during response
- pos = writeNullString(data, pos, MysqlNativePassword)
+ pos = writeNullString(data, pos, c.authPluginName)
// Sanity-check the length.
if pos != len(data) {
@@ -665,6 +625,110 @@ func (c *Conn) writeHandshakeResponse41(capabilities uint32, scrambledPassword [
return nil
}
+// handleAuthResponse parses server's response after client sends the password for authentication
+// and handles next steps for AuthSwitchRequestPacket and AuthMoreDataPacket.
+func (c *Conn) handleAuthResponse(params *ConnParams) error {
+ response, err := c.readPacket()
+ if err != nil {
+ return NewSQLError(CRServerLost, SSUnknownSQLState, "%v", err)
+ }
+
+ switch response[0] {
+ case OKPacket:
+ // OK packet, we are authenticated. Save the user, keep going.
+ c.User = params.Uname
+ case AuthSwitchRequestPacket:
+ // Server is asking to use a different auth method
+ if err = c.handleAuthSwitchPacket(params, response); err != nil {
+ return err
+ }
+ case AuthMoreDataPacket:
+ // Server is requesting more data - maybe un-scrambled password
+ if err := c.handleAuthMoreDataPacket(response[1], params); err != nil {
+ return err
+ }
+ case ErrPacket:
+ return ParseErrorPacket(response)
+ default:
+ return NewSQLError(CRServerHandshakeErr, SSUnknownSQLState, "initial server response cannot be parsed: %v", response)
+ }
+
+ return nil
+}
+
+// handleAuthSwitchPacket scrambles password for the plugin requested by the server and retries authentication
+func (c *Conn) handleAuthSwitchPacket(params *ConnParams, response []byte) error {
+ var err error
+ var salt []byte
+ c.authPluginName, salt, err = parseAuthSwitchRequest(response)
+ if err != nil {
+ return NewSQLError(CRServerHandshakeErr, SSUnknownSQLState, "cannot parse auth switch request: %v", err)
+ }
+ if salt != nil {
+ c.salt = salt
+ }
+ switch c.authPluginName {
+ case MysqlClearPassword:
+ if err := c.writeClearTextPassword(params); err != nil {
+ return err
+ }
+ case MysqlNativePassword:
+ scrambledPassword := ScrambleMysqlNativePassword(c.salt, []byte(params.Pass))
+ if err := c.writeScrambledPassword(scrambledPassword); err != nil {
+ return err
+ }
+ case CachingSha2Password:
+ scrambledPassword := ScrambleCachingSha2Password(c.salt, []byte(params.Pass))
+ if err := c.writeScrambledPassword(scrambledPassword); err != nil {
+ return err
+ }
+ default:
+ return NewSQLError(CRServerHandshakeErr, SSUnknownSQLState, "server asked for unsupported auth method: %v", c.authPluginName)
+ }
+
+ // The response could be an OKPacket, AuthMoreDataPacket or ErrPacket
+ return c.handleAuthResponse(params)
+}
+
+// handleAuthMoreDataPacket handles response of CachingSha2Password authentication and sends full password to the
+// server if requested
+func (c *Conn) handleAuthMoreDataPacket(data byte, params *ConnParams) error {
+ switch data {
+ case CachingSha2FastAuth:
+ // User credentials are verified using the cache ("Fast" path).
+ // Next packet should be an OKPacket
+ return c.handleAuthResponse(params)
+ case CachingSha2FullAuth:
+ // User credentials are not cached, we have to exchange full password.
+ if c.Capabilities&CapabilityClientSSL > 0 || params.UnixSocket != "" {
+ // If we are using an SSL connection or Unix socket, write clear text password
+ if err := c.writeClearTextPassword(params); err != nil {
+ return err
+ }
+ } else {
+ // If we are not using an SSL connection or Unix socket, we have to fetch a public key
+ // from the server to encrypt password
+ pub, err := c.requestPublicKey()
+ if err != nil {
+ return err
+ }
+ // Encrypt password with public key
+ enc, err := EncryptPasswordWithPublicKey(c.salt, []byte(params.Pass), pub)
+ if err != nil {
+ return vterrors.Errorf(vtrpc.Code_INTERNAL, "error encrypting password with public key: %v", err)
+ }
+ // Write encrypted password
+ if err := c.writeScrambledPassword(enc); err != nil {
+ return err
+ }
+ }
+ // Next packet should either be an OKPacket or ErrPacket
+ return c.handleAuthResponse(params)
+ default:
+ return NewSQLError(CRServerHandshakeErr, SSUnknownSQLState, "cannot parse AuthMoreDataPacket: %v", data)
+ }
+}
+
func parseAuthSwitchRequest(data []byte) (string, []byte, error) {
pos := 1
pluginName, pos, ok := readNullString(data, pos)
@@ -680,6 +744,34 @@ func parseAuthSwitchRequest(data []byte) (string, []byte, error) {
return pluginName, salt, nil
}
+// requestPublicKey requests a public key from the server
+func (c *Conn) requestPublicKey() (rsaKey *rsa.PublicKey, err error) {
+ // get public key from server
+ data, pos := c.startEphemeralPacketWithHeader(1)
+ data[pos] = 0x02
+ if err := c.writeEphemeralPacket(); err != nil {
+ return nil, vterrors.Errorf(vtrpc.Code_INTERNAL, "error sending public key request packet: %v", err)
+ }
+
+ response, err := c.readPacket()
+ if err != nil {
+ return nil, NewSQLError(CRServerLost, SSUnknownSQLState, "%v", err)
+ }
+
+ // Server should respond with a AuthMoreDataPacket containing the public key
+ if response[0] != AuthMoreDataPacket {
+ return nil, ParseErrorPacket(response)
+ }
+
+ block, _ := pem.Decode(response[1:])
+ pub, err := x509.ParsePKIXPublicKey(block.Bytes)
+ if err != nil {
+ return nil, vterrors.Errorf(vtrpc.Code_INTERNAL, "failed to parse public key from server: %v", err)
+ }
+
+ return pub.(*rsa.PublicKey), nil
+}
+
// writeClearTextPassword writes the clear text password.
// Returns a SQLError.
func (c *Conn) writeClearTextPassword(params *ConnParams) error {
@@ -693,15 +785,14 @@ func (c *Conn) writeClearTextPassword(params *ConnParams) error {
return c.writeEphemeralPacket()
}
-// writeMysqlNativePassword writes the encrypted mysql_native_password format
+// writeScrambledPassword writes the encrypted mysql_native_password format
// Returns a SQLError.
-func (c *Conn) writeMysqlNativePassword(params *ConnParams, salt []byte) error {
- scrambledPassword := ScramblePassword(salt, []byte(params.Pass))
+func (c *Conn) writeScrambledPassword(scrambledPassword []byte) error {
data, pos := c.startEphemeralPacketWithHeader(len(scrambledPassword))
pos += copy(data[pos:], scrambledPassword)
// Sanity check.
if pos != len(data) {
- return vterrors.Errorf(vtrpc.Code_INTERNAL, "error building MysqlNativePassword packet: got %v bytes expected %v", pos, len(data))
+ return vterrors.Errorf(vtrpc.Code_INTERNAL, "error building %v packet: got %v bytes expected %v", c.authPluginName, pos, len(data))
}
return c.writeEphemeralPacket()
}
diff --git a/go/mysql/conn.go b/go/mysql/conn.go
index c91840409e2..c2543ef9e01 100644
--- a/go/mysql/conn.go
+++ b/go/mysql/conn.go
@@ -86,6 +86,13 @@ type Conn struct {
// fields, this is set to an empty array (but not nil).
fields []*querypb.Field
+ // salt is sent by the server during initial handshake to be used for authentication
+ salt []byte
+
+ // authPluginName is the name of server's authentication plugin.
+ // It is set during the initial handshake.
+ authPluginName string
+
// schemaName is the default database name to use. It is set
// during handshake, and by ComInitDb packets. Both client and
// servers maintain it. This member is private because it's
@@ -942,7 +949,7 @@ func (c *Conn) handleComStmtReset(data []byte) bool {
}
func (c *Conn) handleComStmtSendLongData(data []byte) bool {
- stmtID, paramID, chunkData, ok := c.parseComStmtSendLongData(data)
+ stmtID, paramID, chunk, ok := c.parseComStmtSendLongData(data)
c.recycleReadPacket()
if !ok {
err := fmt.Errorf("error parsing statement send long data from client %v, returning error: %v", c.ConnectionID, data)
@@ -962,9 +969,6 @@ func (c *Conn) handleComStmtSendLongData(data []byte) bool {
return c.writeErrorPacketFromErrorAndLog(err)
}
- chunk := make([]byte, len(chunkData))
- copy(chunk, chunkData)
-
key := fmt.Sprintf("v%d", paramID+1)
if val, ok := prepare.BindVars[key]; ok {
val.Value = append(val.Value, chunk...)
@@ -1064,7 +1068,15 @@ func (c *Conn) handleComStmtExecute(handler Handler, data []byte) (kontinue bool
return true
}
-func (c *Conn) handleComPrepare(handler Handler, data []byte) bool {
+func (c *Conn) handleComPrepare(handler Handler, data []byte) (kontinue bool) {
+ c.startWriterBuffering()
+ defer func() {
+ if err := c.endWriterBuffering(); err != nil {
+ log.Errorf("conn %v: flush() failed: %v", c.ID(), err)
+ kontinue = false
+ }
+ }()
+
query := c.parseComPrepare(data)
c.recycleReadPacket()
@@ -1169,7 +1181,7 @@ func (c *Conn) handleComPing() bool {
c.recycleReadPacket()
// Return error if listener was shut down and OK otherwise
if c.listener.isShutdown() {
- if !c.writeErrorAndLog(ERServerShutdown, SSServerShutdown, "Server shutdown in progress") {
+ if !c.writeErrorAndLog(ERServerShutdown, SSNetError, "Server shutdown in progress") {
return false
}
} else {
@@ -1181,6 +1193,8 @@ func (c *Conn) handleComPing() bool {
return true
}
+var errEmptyStatement = NewSQLError(EREmptyQuery, SSClientError, "Query was empty")
+
func (c *Conn) handleComQuery(handler Handler, data []byte) (kontinue bool) {
c.startWriterBuffering()
defer func() {
@@ -1207,8 +1221,7 @@ func (c *Conn) handleComQuery(handler Handler, data []byte) (kontinue bool) {
}
if len(queries) == 0 {
- err := NewSQLError(EREmptyQuery, SSSyntaxErrorOrAccessViolation, "Query was empty")
- return c.writeErrorPacketFromErrorAndLog(err)
+ return c.writeErrorPacketFromErrorAndLog(errEmptyStatement)
}
for index, sql := range queries {
@@ -1331,16 +1344,16 @@ func isEOFPacket(data []byte) bool {
//
// Note: This is only valid on actual EOF packets and not on OK packets with the EOF
// type code set, i.e. should not be used if ClientDeprecateEOF is set.
-func parseEOFPacket(data []byte) (warnings uint16, more bool, err error) {
+func parseEOFPacket(data []byte) (warnings uint16, statusFlags uint16, err error) {
// The warning count is in position 2 & 3
warnings, _, _ = readUint16(data, 1)
// The status flag is in position 4 & 5
statusFlags, _, ok := readUint16(data, 3)
if !ok {
- return 0, false, vterrors.Errorf(vtrpc.Code_INTERNAL, "invalid EOF packet statusFlags: %v", data)
+ return 0, 0, vterrors.Errorf(vtrpc.Code_INTERNAL, "invalid EOF packet statusFlags: %v", data)
}
- return warnings, (statusFlags & ServerMoreResultsExists) != 0, nil
+ return warnings, statusFlags, nil
}
// PacketOK contains the ok packet details
diff --git a/go/mysql/conn_test.go b/go/mysql/conn_test.go
index 39d2a3a4f50..668c86c1fea 100644
--- a/go/mysql/conn_test.go
+++ b/go/mysql/conn_test.go
@@ -29,16 +29,13 @@ import (
"testing"
"time"
- "vitess.io/vitess/go/vt/sqlparser"
-
"github.com/stretchr/testify/assert"
-
- "vitess.io/vitess/go/test/utils"
-
"github.com/stretchr/testify/require"
"vitess.io/vitess/go/sqltypes"
+ "vitess.io/vitess/go/test/utils"
querypb "vitess.io/vitess/go/vt/proto/query"
+ "vitess.io/vitess/go/vt/sqlparser"
)
func createSocketPair(t *testing.T) (net.Listener, *Conn, *Conn) {
@@ -81,6 +78,7 @@ func createSocketPair(t *testing.T) (net.Listener, *Conn, *Conn) {
// Create a Conn on both sides.
cConn := newConn(clientConn)
sConn := newConn(serverConn)
+ sConn.PrepareData = map[uint32]*PrepareData{}
return listener, sConn, cConn
}
@@ -456,8 +454,8 @@ func TestMultiStatementStopsOnError(t *testing.T) {
// panic if the query contains "panic" and it will return selectRowsResult in case of any other query
handler := &testRun{t: t, err: fmt.Errorf("execution failed")}
res := sConn.handleNextCommand(handler)
- // Execution error will occur in this case becuase the query sent is error and testRun will throw an error.
- // We shuold send an error packet but not close the connection.
+ // Execution error will occur in this case because the query sent is error and testRun will throw an error.
+ // We should send an error packet but not close the connection.
require.True(t, res, "we should not break the connection because of execution errors")
data, err := cConn.ReadPacket()
@@ -482,7 +480,7 @@ func TestMultiStatement(t *testing.T) {
// panic if the query contains "panic" and it will return selectRowsResult in case of any other query
handler := &testRun{t: t, err: NewSQLError(CRMalformedPacket, SSUnknownSQLState, "cannot get column number")}
res := sConn.handleNextCommand(handler)
- //The queries run will be select 1; and select 2; These queries do not return any errors, so the connnection should still be open
+ //The queries run will be select 1; and select 2; These queries do not return any errors, so the connection should still be open
require.True(t, res, "we should not break the connection in case of no errors")
// Read the result of the query and assert that it is indeed what we want. This will contain the result of the first query.
data, more, _, err := cConn.ReadQueryResult(100, true)
@@ -652,6 +650,9 @@ func (t testRun) ComQuery(c *Conn, query string, callback func(*sqltypes.Result)
if strings.Contains(query, "panic") {
panic("test panic attack!")
}
+ if strings.Contains(query, "twice") {
+ callback(selectRowsResult)
+ }
callback(selectRowsResult)
return nil
}
diff --git a/go/mysql/constants.go b/go/mysql/constants.go
index d71aa8e00e2..965714e08ca 100644
--- a/go/mysql/constants.go
+++ b/go/mysql/constants.go
@@ -36,6 +36,9 @@ const (
// MysqlClearPassword transmits the password in the clear.
MysqlClearPassword = "mysql_clear_password"
+ // CachingSha2Password uses a salt and transmits a SHA256 hash on the wire.
+ CachingSha2Password = "caching_sha2_password"
+
// MysqlDialog uses the dialog plugin on the client side.
// It transmits data in the clear.
MysqlDialog = "dialog"
@@ -230,9 +233,6 @@ const (
// EOFPacket is the header of the EOF packet.
EOFPacket = 0xfe
- // AuthSwitchRequestPacket is used to switch auth method.
- AuthSwitchRequestPacket = 0xfe
-
// ErrPacket is the header of the error packet.
ErrPacket = 0xff
@@ -240,6 +240,21 @@ const (
NullValue = 0xfb
)
+// Auth packet types
+const (
+ // AuthMoreDataPacket is sent when server requires more data to authenticate
+ AuthMoreDataPacket = 0x01
+
+ // CachingSha2FastAuth is sent before OKPacket when server authenticates using cache
+ CachingSha2FastAuth = 0x03
+
+ // CachingSha2FullAuth is sent when server requests un-scrambled password to authenticate
+ CachingSha2FullAuth = 0x04
+
+ // AuthSwitchRequestPacket is used to switch auth method.
+ AuthSwitchRequestPacket = 0xfe
+)
+
// Error codes for client-side errors.
// Originally found in include/mysql/errmsg.h and
// https://dev.mysql.com/doc/refman/5.7/en/error-messages-client.html
@@ -307,8 +322,12 @@ const (
// unknown
ERUnknownError = 1105
+ // internal
+ ERInternalError = 1815
+
// unimplemented
ERNotSupportedYet = 1235
+ ERUnsupportedPS = 1295
// resource exhausted
ERDiskFull = 1021
@@ -343,6 +362,7 @@ const (
ERNoSuchTable = 1146
ERNonExistingTableGrant = 1147
ERKeyDoesNotExist = 1176
+ ERDbDropExists = 1008
// permissions
ERDBAccessDenied = 1044
@@ -377,14 +397,18 @@ const (
ERFeatureDisabled = 1289
EROptionPreventsStatement = 1290
ERDuplicatedValueInType = 1291
+ ERSPDoesNotExist = 1305
ERRowIsReferenced2 = 1451
ErNoReferencedRow2 = 1452
+ ErSPNotVarArg = 1414
+ ERInnodbReadOnly = 1874
// already exists
- ERTableExists = 1050
- ERDupEntry = 1062
- ERFileExists = 1086
- ERUDFExists = 1125
+ ERTableExists = 1050
+ ERDupEntry = 1062
+ ERFileExists = 1086
+ ERUDFExists = 1125
+ ERDbCreateExists = 1007
// aborted
ERGotSignal = 1078
@@ -453,6 +477,7 @@ const (
ERBlobKeyWithoutLength = 1170
ERPrimaryCantHaveNull = 1171
ERTooManyRows = 1172
+ ERLockOrActiveTransaction = 1192
ERUnknownSystemVariable = 1193
ERSetConstantsOnly = 1204
ERWrongArguments = 1210
@@ -483,13 +508,13 @@ const (
ERInvalidOnUpdate = 1294
ERUnknownTimeZone = 1298
ERInvalidCharacterString = 1300
- ERSavepointNotExist = 1305
ERIllegalReference = 1247
ERDerivedMustHaveAlias = 1248
ERTableNameNotAllowedHere = 1250
ERQueryInterrupted = 1317
ERTruncatedWrongValueForField = 1366
ERDataTooLong = 1406
+ ERForbidSchemaChange = 1450
ERDataOutOfRange = 1690
)
@@ -502,17 +527,14 @@ const (
// in client.c. So using that one.
SSUnknownSQLState = "HY000"
- //SSSyntaxErrorOrAccessViolation is the state on syntax errors or access violations
- SSSyntaxErrorOrAccessViolation = "42000"
-
// SSUnknownComError is ER_UNKNOWN_COM_ERROR
SSUnknownComError = "08S01"
- // SSHandshakeError is ER_HANDSHAKE_ERROR
- SSHandshakeError = "08S01"
+ // SSNetError is network related error
+ SSNetError = "08S01"
- // SSServerShutdown is ER_SERVER_SHUTDOWN
- SSServerShutdown = "08S01"
+ // SSWrongNumberOfColumns is related to columns error
+ SSWrongNumberOfColumns = "21000"
// SSDataTooLong is ER_DATA_TOO_LONG
SSDataTooLong = "22001"
@@ -520,14 +542,8 @@ const (
// SSDataOutOfRange is ER_DATA_OUT_OF_RANGE
SSDataOutOfRange = "22003"
- // SSBadNullError is ER_BAD_NULL_ERROR
- SSBadNullError = "23000"
-
- // SSBadFieldError is ER_BAD_FIELD_ERROR
- SSBadFieldError = "42S22"
-
- // SSDupKey is ER_DUP_KEY
- SSDupKey = "23000"
+ // SSConstraintViolation is constraint violation
+ SSConstraintViolation = "23000"
// SSCantDoThisDuringAnTransaction is
// ER_CANT_DO_THIS_DURING_AN_TRANSACTION
@@ -536,8 +552,23 @@ const (
// SSAccessDeniedError is ER_ACCESS_DENIED_ERROR
SSAccessDeniedError = "28000"
+ // SSNoDB is ER_NO_DB_ERROR
+ SSNoDB = "3D000"
+
// SSLockDeadlock is ER_LOCK_DEADLOCK
SSLockDeadlock = "40001"
+
+ //SSClientError is the state on client errors
+ SSClientError = "42000"
+
+ // SSBadFieldError is ER_BAD_FIELD_ERROR
+ SSBadFieldError = "42S22"
+
+ // SSUnknownTable is ER_UNKNOWN_TABLE
+ SSUnknownTable = "42S02"
+
+ // SSQueryInterrupted is ER_QUERY_INTERRUPTED;
+ SSQueryInterrupted = "70100"
)
// A few interesting character set values.
diff --git a/go/mysql/endtoend/client_test.go b/go/mysql/endtoend/client_test.go
index a1698833d0a..5f12c4f30f1 100644
--- a/go/mysql/endtoend/client_test.go
+++ b/go/mysql/endtoend/client_test.go
@@ -22,12 +22,13 @@ import (
"testing"
"time"
+ "github.com/stretchr/testify/assert"
+
"github.com/stretchr/testify/require"
"context"
"vitess.io/vitess/go/mysql"
- "vitess.io/vitess/go/sqltypes"
)
// TestKill opens a connection, issues a command that
@@ -123,7 +124,7 @@ func TestDupEntry(t *testing.T) {
t.Fatalf("first insert failed: %v", err)
}
_, err = conn.ExecuteFetch("insert into dup_entry(id, name) values(2, 10)", 0, false)
- assertSQLError(t, err, mysql.ERDupEntry, mysql.SSDupKey, "Duplicate entry", "insert into dup_entry(id, name) values(2, 10)")
+ assertSQLError(t, err, mysql.ERDupEntry, mysql.SSConstraintViolation, "Duplicate entry", "insert into dup_entry(id, name) values(2, 10)")
}
// TestClientFoundRows tests if the CLIENT_FOUND_ROWS flag works.
@@ -145,19 +146,12 @@ func TestClientFoundRows(t *testing.T) {
t.Fatalf("insert failed: %v", err)
}
qr, err := conn.ExecuteFetch("update found_rows set val=11 where id=1", 0, false)
- if err != nil {
- t.Fatalf("first update failed: %v", err)
- }
- if qr.RowsAffected != 1 {
- t.Errorf("First update: RowsAffected: %d, want 1", qr.RowsAffected)
- }
+ require.NoError(t, err)
+ assert.EqualValues(t, 1, qr.RowsAffected, "RowsAffected")
+
qr, err = conn.ExecuteFetch("update found_rows set val=11 where id=1", 0, false)
- if err != nil {
- t.Fatalf("second update failed: %v", err)
- }
- if qr.RowsAffected != 1 {
- t.Errorf("Second update: RowsAffected: %d, want 1", qr.RowsAffected)
- }
+ require.NoError(t, err)
+ assert.EqualValues(t, 1, qr.RowsAffected, "RowsAffected")
}
func doTestMultiResult(t *testing.T, disableClientDeprecateEOF bool) {
@@ -171,27 +165,27 @@ func doTestMultiResult(t *testing.T, disableClientDeprecateEOF bool) {
qr, more, err := conn.ExecuteFetchMulti("select 1 from dual; set autocommit=1; select 1 from dual", 10, true)
expectNoError(t, err)
expectFlag(t, "ExecuteMultiFetch(multi result)", more, true)
- expectRows(t, "ExecuteMultiFetch(multi result)", qr, 1)
+ assert.EqualValues(t, 1, len(qr.Rows))
qr, more, _, err = conn.ReadQueryResult(10, true)
expectNoError(t, err)
expectFlag(t, "ReadQueryResult(1)", more, true)
- expectRows(t, "ReadQueryResult(1)", qr, 0)
+ assert.EqualValues(t, 0, len(qr.Rows))
qr, more, _, err = conn.ReadQueryResult(10, true)
expectNoError(t, err)
expectFlag(t, "ReadQueryResult(2)", more, false)
- expectRows(t, "ReadQueryResult(2)", qr, 1)
+ assert.EqualValues(t, 1, len(qr.Rows))
qr, more, err = conn.ExecuteFetchMulti("select 1 from dual", 10, true)
expectNoError(t, err)
expectFlag(t, "ExecuteMultiFetch(single result)", more, false)
- expectRows(t, "ExecuteMultiFetch(single result)", qr, 1)
+ assert.EqualValues(t, 1, len(qr.Rows))
qr, more, err = conn.ExecuteFetchMulti("set autocommit=1", 10, true)
expectNoError(t, err)
expectFlag(t, "ExecuteMultiFetch(no result)", more, false)
- expectRows(t, "ExecuteMultiFetch(no result)", qr, 0)
+ assert.EqualValues(t, 0, len(qr.Rows))
// The ClientDeprecateEOF protocol change has a subtle twist in which an EOF or OK
// packet happens to have the status flags in the same position if the affected_rows
@@ -206,42 +200,32 @@ func doTestMultiResult(t *testing.T, disableClientDeprecateEOF bool) {
// negotiated version, it can properly send the status flags.
//
result, err := conn.ExecuteFetch("create table a(id int, name varchar(128), primary key(id))", 0, false)
- if err != nil {
- t.Fatalf("create table failed: %v", err)
- }
- if result.RowsAffected != 0 {
- t.Errorf("create table returned RowsAffected %v, was expecting 0", result.RowsAffected)
- }
+ require.NoError(t, err)
+ assert.Zero(t, result.RowsAffected, "create table RowsAffected ")
for i := 0; i < 255; i++ {
result, err := conn.ExecuteFetch(fmt.Sprintf("insert into a(id, name) values(%v, 'nice name %v')", 1000+i, i), 1000, true)
- if err != nil {
- t.Fatalf("ExecuteFetch(%v) failed: %v", i, err)
- }
- if result.RowsAffected != 1 {
- t.Errorf("insert into returned RowsAffected %v, was expecting 1", result.RowsAffected)
- }
+ require.NoError(t, err)
+ assert.EqualValues(t, 1, result.RowsAffected, "insert into returned RowsAffected")
}
qr, more, err = conn.ExecuteFetchMulti("update a set name = concat(name, ' updated'); select * from a; select count(*) from a", 300, true)
expectNoError(t, err)
expectFlag(t, "ExecuteMultiFetch(multi result)", more, true)
- expectRows(t, "ExecuteMultiFetch(multi result)", qr, 255)
+ assert.EqualValues(t, 255, qr.RowsAffected)
qr, more, _, err = conn.ReadQueryResult(300, true)
expectNoError(t, err)
expectFlag(t, "ReadQueryResult(1)", more, true)
- expectRows(t, "ReadQueryResult(1)", qr, 255)
+ assert.EqualValues(t, 255, len(qr.Rows), "ReadQueryResult(1)")
qr, more, _, err = conn.ReadQueryResult(300, true)
expectNoError(t, err)
expectFlag(t, "ReadQueryResult(2)", more, false)
- expectRows(t, "ReadQueryResult(2)", qr, 1)
+ assert.EqualValues(t, 1, len(qr.Rows), "ReadQueryResult(1)")
_, err = conn.ExecuteFetch("drop table a", 10, true)
- if err != nil {
- t.Fatalf("drop table failed: %v", err)
- }
+ require.NoError(t, err)
}
func TestMultiResultDeprecateEOF(t *testing.T) {
@@ -258,13 +242,6 @@ func expectNoError(t *testing.T, err error) {
}
}
-func expectRows(t *testing.T, msg string, result *sqltypes.Result, want int) {
- t.Helper()
- if int(result.RowsAffected) != want {
- t.Errorf("%s: %d, want %d", msg, result.RowsAffected, want)
- }
-}
-
func expectFlag(t *testing.T, msg string, flag, want bool) {
t.Helper()
if flag != want {
@@ -339,3 +316,44 @@ func TestSessionTrackGTIDs(t *testing.T) {
require.NoError(t, err)
require.NotEmpty(t, qr.SessionStateChanges)
}
+
+func TestCachingSha2Password(t *testing.T) {
+ ctx := context.Background()
+
+ // connect as an existing user to create a user account with caching_sha2_password
+ params := connParams
+ conn, err := mysql.Connect(ctx, ¶ms)
+ expectNoError(t, err)
+ defer conn.Close()
+
+ qr, err := conn.ExecuteFetch(`select true from information_schema.PLUGINS where PLUGIN_NAME='caching_sha2_password' and PLUGIN_STATUS='ACTIVE'`, 1, false)
+ if err != nil {
+ t.Errorf("select true from information_schema.PLUGINS failed: %v", err)
+ }
+
+ if len(qr.Rows) != 1 {
+ t.Skip("Server does not support caching_sha2_password plugin")
+ }
+
+ // create a user using caching_sha2_password password
+ if _, err = conn.ExecuteFetch(`create user 'sha2user'@'localhost' identified with caching_sha2_password by 'password';`, 0, false); err != nil {
+ t.Fatalf("Create user with caching_sha2_password failed: %v", err)
+ }
+ conn.Close()
+
+ // connect as sha2user
+ params.Uname = "sha2user"
+ params.Pass = "password"
+ params.DbName = "information_schema"
+ conn, err = mysql.Connect(ctx, ¶ms)
+ expectNoError(t, err)
+ defer conn.Close()
+
+ if qr, err = conn.ExecuteFetch(`select user()`, 1, true); err != nil {
+ t.Fatalf("select user() failed: %v", err)
+ }
+
+ if len(qr.Rows) != 1 || qr.Rows[0][0].ToString() != "sha2user@localhost" {
+ t.Errorf("Logged in user is not sha2user")
+ }
+}
diff --git a/go/mysql/endtoend/query_test.go b/go/mysql/endtoend/query_test.go
index 92fb2dab07e..1827372b17c 100644
--- a/go/mysql/endtoend/query_test.go
+++ b/go/mysql/endtoend/query_test.go
@@ -17,12 +17,14 @@ limitations under the License.
package endtoend
import (
+ "context"
"fmt"
"math/rand"
"strings"
"testing"
- "context"
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
"vitess.io/vitess/go/mysql"
"vitess.io/vitess/go/sqltypes"
@@ -100,7 +102,6 @@ func TestQueries(t *testing.T) {
sqltypes.MakeTrusted(querypb.Type_VARCHAR, []byte("nice name")),
},
},
- RowsAffected: 1,
}
if !result.Equal(expectedResult) {
// MySQL 5.7 is adding the NO_DEFAULT_VALUE_FLAG to Flags.
@@ -286,3 +287,46 @@ func TestWarningsDeprecateEOF(t *testing.T) {
func TestWarningsNoDeprecateEOF(t *testing.T) {
doTestWarnings(t, true)
}
+
+func TestSysInfo(t *testing.T) {
+ ctx := context.Background()
+ conn, err := mysql.Connect(ctx, &connParams)
+ require.NoError(t, err)
+ defer conn.Close()
+
+ _, err = conn.ExecuteFetch("drop table if exists `a`", 1000, true)
+ require.NoError(t, err)
+
+ _, err = conn.ExecuteFetch("CREATE TABLE `a` (`one` int NOT NULL,`two` int NOT NULL,PRIMARY KEY (`one`,`two`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4", 1000, true)
+ require.NoError(t, err)
+ defer conn.ExecuteFetch("drop table `a`", 1000, true)
+
+ qr, err := conn.ExecuteFetch(`SELECT
+ column_name column_name,
+ data_type data_type,
+ column_type full_data_type,
+ character_maximum_length character_maximum_length,
+ numeric_precision numeric_precision,
+ numeric_scale numeric_scale,
+ datetime_precision datetime_precision,
+ column_default column_default,
+ is_nullable is_nullable,
+ extra extra,
+ table_name table_name
+ FROM information_schema.columns
+ WHERE table_schema = 'vttest' and table_name = 'a'
+ ORDER BY ordinal_position`, 1000, true)
+ require.NoError(t, err)
+ require.Equal(t, 2, len(qr.Rows))
+
+ // is_nullable
+ assert.Equal(t, `VARCHAR("NO")`, qr.Rows[0][8].String())
+ assert.Equal(t, `VARCHAR("NO")`, qr.Rows[1][8].String())
+
+ // table_name
+ assert.Equal(t, `VARCHAR("a")`, qr.Rows[0][10].String())
+ assert.Equal(t, `VARCHAR("a")`, qr.Rows[1][10].String())
+
+ assert.EqualValues(t, sqltypes.Uint64, qr.Fields[4].Type)
+ assert.EqualValues(t, querypb.Type_UINT64, qr.Rows[0][4].Type())
+}
diff --git a/go/mysql/fakesqldb/server.go b/go/mysql/fakesqldb/server.go
index 71bf08f06c8..863ee2bbd91 100644
--- a/go/mysql/fakesqldb/server.go
+++ b/go/mysql/fakesqldb/server.go
@@ -50,8 +50,8 @@ const appendEntry = -1
type DB struct {
// Fields set at construction time.
- // t is our testing.T instance
- t *testing.T
+ // t is our testing.TB instance
+ t testing.TB
// listener is our mysql.Listener.
listener *mysql.Listener
@@ -136,6 +136,7 @@ type ExpectedResult struct {
type exprResult struct {
expr *regexp.Regexp
result *sqltypes.Result
+ err string
}
// ExpectedExecuteFetch defines for an expected query the to be faked output.
@@ -150,7 +151,7 @@ type ExpectedExecuteFetch struct {
}
// New creates a server, and starts listening.
-func New(t *testing.T) *DB {
+func New(t testing.TB) *DB {
// Pick a path for our socket.
socketDir, err := ioutil.TempDir("", "fakesqldb")
if err != nil {
@@ -391,6 +392,9 @@ func (db *DB) HandleQuery(c *mysql.Conn, query string, callback func(*sqltypes.R
if ok {
userCallback(query)
}
+ if pat.err != "" {
+ return fmt.Errorf(pat.err)
+ }
return callback(pat.result)
}
}
@@ -504,7 +508,20 @@ func (db *DB) AddQueryPattern(queryPattern string, expectedResult *sqltypes.Resu
result := *expectedResult
db.mu.Lock()
defer db.mu.Unlock()
- db.patternData = append(db.patternData, exprResult{expr, &result})
+ db.patternData = append(db.patternData, exprResult{expr: expr, result: &result})
+}
+
+// RejectQueryPattern allows a query pattern to be rejected with an error
+func (db *DB) RejectQueryPattern(queryPattern, error string) {
+ expr := regexp.MustCompile("(?is)^" + queryPattern + "$")
+ db.mu.Lock()
+ defer db.mu.Unlock()
+ db.patternData = append(db.patternData, exprResult{expr: expr, err: error})
+}
+
+// ClearQueryPattern removes all query patterns set up
+func (db *DB) ClearQueryPattern() {
+ db.patternData = nil
}
// AddQueryPatternWithCallback is similar to AddQueryPattern: in addition it calls the provided callback function
diff --git a/go/mysql/flavor.go b/go/mysql/flavor.go
index 86824be43ca..b178a5f0d5f 100644
--- a/go/mysql/flavor.go
+++ b/go/mysql/flavor.go
@@ -44,6 +44,10 @@ const (
mariaDBReplicationHackPrefix = "5.5.5-"
// mariaDBVersionString is present in
mariaDBVersionString = "MariaDB"
+ // mysql57VersionPrefix is the prefix for 5.7 mysql version, such as 5.7.31-log
+ mysql57VersionPrefix = "5.7."
+ // mysql80VersionPrefix is the prefix for 8.0 mysql version, such as 8.0.19
+ mysql80VersionPrefix = "8.0."
)
// flavor is the abstract interface for a flavor.
@@ -111,6 +115,8 @@ type flavor interface {
// timestamp cannot be set by regular clients.
enableBinlogPlaybackCommand() string
disableBinlogPlaybackCommand() string
+
+ baseShowTablesWithSizes() string
}
// flavors maps flavor names to their implementation.
@@ -131,23 +137,27 @@ var flavors = make(map[string]func() flavor)
// as well (not matching what c.ServerVersion is, but matching after we remove
// the prefix).
func (c *Conn) fillFlavor(params *ConnParams) {
- if flavorFunc := flavors[params.Flavor]; flavorFunc != nil {
- c.flavor = flavorFunc()
- return
- }
+ flavorFunc := flavors[params.Flavor]
- if strings.HasPrefix(c.ServerVersion, mariaDBReplicationHackPrefix) {
+ switch {
+ case flavorFunc != nil:
+ c.flavor = flavorFunc()
+ case strings.HasPrefix(c.ServerVersion, mariaDBReplicationHackPrefix):
c.ServerVersion = c.ServerVersion[len(mariaDBReplicationHackPrefix):]
- c.flavor = mariadbFlavor{}
- return
- }
-
- if strings.Contains(c.ServerVersion, mariaDBVersionString) {
- c.flavor = mariadbFlavor{}
- return
+ c.flavor = mariadbFlavor101{}
+ case strings.Contains(c.ServerVersion, mariaDBVersionString):
+ mariadbVersion, err := strconv.ParseFloat(c.ServerVersion[:4], 64)
+ if err != nil || mariadbVersion < 10.2 {
+ c.flavor = mariadbFlavor101{}
+ }
+ c.flavor = mariadbFlavor102{}
+ case strings.HasPrefix(c.ServerVersion, mysql57VersionPrefix):
+ c.flavor = mysqlFlavor57{}
+ case strings.HasPrefix(c.ServerVersion, mysql80VersionPrefix):
+ c.flavor = mysqlFlavor80{}
+ default:
+ c.flavor = mysqlFlavor56{}
}
-
- c.flavor = mysqlFlavor{}
}
//
@@ -159,8 +169,11 @@ func (c *Conn) fillFlavor(params *ConnParams) {
// is identified as MariaDB. Most applications should not care, but
// this is useful in tests.
func (c *Conn) IsMariaDB() bool {
- _, ok := c.flavor.(mariadbFlavor)
- return ok
+ switch c.flavor.(type) {
+ case mariadbFlavor101, mariadbFlavor102:
+ return true
+ }
+ return false
}
// MasterPosition returns the current master replication position.
@@ -390,3 +403,8 @@ func (c *Conn) EnableBinlogPlaybackCommand() string {
func (c *Conn) DisableBinlogPlaybackCommand() string {
return c.flavor.disableBinlogPlaybackCommand()
}
+
+// BaseShowTables returns a query that shows tables and their sizes
+func (c *Conn) BaseShowTables() string {
+ return c.flavor.baseShowTablesWithSizes()
+}
diff --git a/go/mysql/flavor_filepos.go b/go/mysql/flavor_filepos.go
index 134de8ba707..33e67b76624 100644
--- a/go/mysql/flavor_filepos.go
+++ b/go/mysql/flavor_filepos.go
@@ -271,3 +271,8 @@ func (*filePosFlavor) enableBinlogPlaybackCommand() string {
func (*filePosFlavor) disableBinlogPlaybackCommand() string {
return ""
}
+
+// baseShowTablesWithSizes is part of the Flavor interface.
+func (*filePosFlavor) baseShowTablesWithSizes() string {
+ return TablesWithSize56
+}
diff --git a/go/mysql/flavor_mariadb.go b/go/mysql/flavor_mariadb.go
index 6d7db404442..422344d4f5a 100644
--- a/go/mysql/flavor_mariadb.go
+++ b/go/mysql/flavor_mariadb.go
@@ -30,6 +30,15 @@ import (
// mariadbFlavor implements the Flavor interface for MariaDB.
type mariadbFlavor struct{}
+type mariadbFlavor101 struct {
+ mariadbFlavor
+}
+type mariadbFlavor102 struct {
+ mariadbFlavor
+}
+
+var _ flavor = (*mariadbFlavor101)(nil)
+var _ flavor = (*mariadbFlavor102)(nil)
// masterGTIDSet is part of the Flavor interface.
func (mariadbFlavor) masterGTIDSet(c *Conn) (GTIDSet, error) {
diff --git a/go/mysql/flavor_mariadb_binlog_playback.go b/go/mysql/flavor_mariadb_binlog_playback.go
index c30e39d2787..e862e744d04 100644
--- a/go/mysql/flavor_mariadb_binlog_playback.go
+++ b/go/mysql/flavor_mariadb_binlog_playback.go
@@ -29,3 +29,13 @@ func (mariadbFlavor) enableBinlogPlaybackCommand() string {
func (mariadbFlavor) disableBinlogPlaybackCommand() string {
return ""
}
+
+// baseShowTablesWithSizes is part of the Flavor interface.
+func (mariadbFlavor101) baseShowTablesWithSizes() string {
+ return TablesWithSize56
+}
+
+// baseShowTablesWithSizes is part of the Flavor interface.
+func (mariadbFlavor102) baseShowTablesWithSizes() string {
+ return TablesWithSize57
+}
diff --git a/go/mysql/flavor_mariadb_test.go b/go/mysql/flavor_mariadb_test.go
index 120cde37583..82a5b1312b4 100644
--- a/go/mysql/flavor_mariadb_test.go
+++ b/go/mysql/flavor_mariadb_test.go
@@ -40,7 +40,7 @@ func TestMariadbSetMasterCommands(t *testing.T) {
MASTER_CONNECT_RETRY = 1234,
MASTER_USE_GTID = current_pos`
- conn := &Conn{flavor: mariadbFlavor{}}
+ conn := &Conn{flavor: mariadbFlavor101{}}
got := conn.SetMasterCommand(params, masterHost, masterPort, masterConnectRetry)
if got != want {
t.Errorf("mariadbFlavor.SetMasterCommands(%#v, %#v, %#v, %#v) = %#v, want %#v", params, masterHost, masterPort, masterConnectRetry, got, want)
@@ -73,7 +73,7 @@ func TestMariadbSetMasterCommandsSSL(t *testing.T) {
MASTER_SSL_KEY = 'ssl-key',
MASTER_USE_GTID = current_pos`
- conn := &Conn{flavor: mariadbFlavor{}}
+ conn := &Conn{flavor: mariadbFlavor101{}}
got := conn.SetMasterCommand(params, masterHost, masterPort, masterConnectRetry)
if got != want {
t.Errorf("mariadbFlavor.SetMasterCommands(%#v, %#v, %#v, %#v) = %#v, want %#v", params, masterHost, masterPort, masterConnectRetry, got, want)
diff --git a/go/mysql/flavor_mysql.go b/go/mysql/flavor_mysql.go
index 590cc3ed2d5..9d4dd5e08da 100644
--- a/go/mysql/flavor_mysql.go
+++ b/go/mysql/flavor_mysql.go
@@ -29,6 +29,19 @@ import (
// mysqlFlavor implements the Flavor interface for Mysql.
type mysqlFlavor struct{}
+type mysqlFlavor56 struct {
+ mysqlFlavor
+}
+type mysqlFlavor57 struct {
+ mysqlFlavor
+}
+type mysqlFlavor80 struct {
+ mysqlFlavor
+}
+
+var _ flavor = (*mysqlFlavor56)(nil)
+var _ flavor = (*mysqlFlavor57)(nil)
+var _ flavor = (*mysqlFlavor80)(nil)
// masterGTIDSet is part of the Flavor interface.
func (mysqlFlavor) masterGTIDSet(c *Conn) (GTIDSet, error) {
@@ -231,3 +244,40 @@ func (mysqlFlavor) enableBinlogPlaybackCommand() string {
func (mysqlFlavor) disableBinlogPlaybackCommand() string {
return ""
}
+
+// TablesWithSize56 is a query to select table along with size for mysql 5.6
+const TablesWithSize56 = `SELECT table_name, table_type, unix_timestamp(create_time), table_comment, SUM( data_length + index_length), SUM( data_length + index_length)
+ FROM information_schema.tables WHERE table_schema = database() group by table_name`
+
+// TablesWithSize57 is a query to select table along with size for mysql 5.7.
+// It's a little weird, because the JOIN predicate only works if the table and databases do not contain weird characters.
+// As a fallback, we use the mysql 5.6 query, which is not always up to date, but works for all table/db names.
+const TablesWithSize57 = `SELECT t.table_name, t.table_type, unix_timestamp(t.create_time), t.table_comment, i.file_size, i.allocated_size
+ FROM information_schema.tables t, information_schema.innodb_sys_tablespaces i
+ WHERE t.table_schema = database() and i.name = concat(t.table_schema,'/',t.table_name)
+UNION ALL
+ SELECT table_name, table_type, unix_timestamp(create_time), table_comment, SUM( data_length + index_length), SUM( data_length + index_length)
+ FROM information_schema.tables t
+ WHERE table_schema = database() AND NOT EXISTS(SELECT * FROM information_schema.innodb_sys_tablespaces i WHERE i.name = concat(t.table_schema,'/',t.table_name))
+ group by table_name, table_type, unix_timestamp(create_time), table_comment
+`
+
+// TablesWithSize80 is a query to select table along with size for mysql 8.0
+const TablesWithSize80 = `SELECT t.table_name, t.table_type, unix_timestamp(t.create_time), t.table_comment, i.file_size, i.allocated_size
+ FROM information_schema.tables t, information_schema.innodb_tablespaces i
+ WHERE t.table_schema = database() and i.name = concat(t.table_schema,'/',t.table_name)`
+
+// baseShowTablesWithSizes is part of the Flavor interface.
+func (mysqlFlavor56) baseShowTablesWithSizes() string {
+ return TablesWithSize56
+}
+
+// baseShowTablesWithSizes is part of the Flavor interface.
+func (mysqlFlavor57) baseShowTablesWithSizes() string {
+ return TablesWithSize57
+}
+
+// baseShowTablesWithSizes is part of the Flavor interface.
+func (mysqlFlavor80) baseShowTablesWithSizes() string {
+ return TablesWithSize80
+}
diff --git a/go/mysql/flavor_mysql_test.go b/go/mysql/flavor_mysql_test.go
index 398c3d4e147..8f72242a891 100644
--- a/go/mysql/flavor_mysql_test.go
+++ b/go/mysql/flavor_mysql_test.go
@@ -39,7 +39,7 @@ func TestMysql56SetMasterCommands(t *testing.T) {
MASTER_CONNECT_RETRY = 1234,
MASTER_AUTO_POSITION = 1`
- conn := &Conn{flavor: mysqlFlavor{}}
+ conn := &Conn{flavor: mysqlFlavor57{}}
got := conn.SetMasterCommand(params, masterHost, masterPort, masterConnectRetry)
if got != want {
t.Errorf("mysqlFlavor.SetMasterCommand(%#v, %#v, %#v, %#v) = %#v, want %#v", params, masterHost, masterPort, masterConnectRetry, got, want)
@@ -72,7 +72,7 @@ func TestMysql56SetMasterCommandsSSL(t *testing.T) {
MASTER_SSL_KEY = 'ssl-key',
MASTER_AUTO_POSITION = 1`
- conn := &Conn{flavor: mysqlFlavor{}}
+ conn := &Conn{flavor: mysqlFlavor57{}}
got := conn.SetMasterCommand(params, masterHost, masterPort, masterConnectRetry)
if got != want {
t.Errorf("mysqlFlavor.SetMasterCommands(%#v, %#v, %#v, %#v) = %#v, want %#v", params, masterHost, masterPort, masterConnectRetry, got, want)
diff --git a/go/mysql/handshake_test.go b/go/mysql/handshake_test.go
index 696836c44c6..9015bcd0951 100644
--- a/go/mysql/handshake_test.go
+++ b/go/mysql/handshake_test.go
@@ -125,7 +125,8 @@ func TestSSLConnection(t *testing.T) {
serverConfig, err := vttls.ServerConfig(
path.Join(root, "server-cert.pem"),
path.Join(root, "server-key.pem"),
- path.Join(root, "ca-cert.pem"))
+ path.Join(root, "ca-cert.pem"),
+ "")
if err != nil {
t.Fatalf("TLSServerConfig failed: %v", err)
}
diff --git a/go/mysql/mysql56_gtid_set.go b/go/mysql/mysql56_gtid_set.go
index 408c3cac0d6..071e0d929b7 100644
--- a/go/mysql/mysql56_gtid_set.go
+++ b/go/mysql/mysql56_gtid_set.go
@@ -573,7 +573,11 @@ func (set Mysql56GTIDSet) Difference(other Mysql56GTIDSet) Mysql56GTIDSet {
diffIntervals = append(diffIntervals, intervals...)
}
- differenceSet[sid] = diffIntervals
+ if len(diffIntervals) == 0 {
+ delete(differenceSet, sid)
+ } else {
+ differenceSet[sid] = diffIntervals
+ }
}
return differenceSet
diff --git a/go/mysql/mysql56_gtid_set_test.go b/go/mysql/mysql56_gtid_set_test.go
index fdb0569c1a2..e30e6fbef0e 100644
--- a/go/mysql/mysql56_gtid_set_test.go
+++ b/go/mysql/mysql56_gtid_set_test.go
@@ -481,6 +481,20 @@ func TestMysql56GTIDSetDifference(t *testing.T) {
if !got.Equal(want) {
t.Errorf("got %#v; want %#v", got, want)
}
+
+ sid10 := SID{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+ sid11 := SID{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}
+ set10 := Mysql56GTIDSet{
+ sid10: []interval{{1, 30}},
+ }
+ set11 := Mysql56GTIDSet{
+ sid11: []interval{{1, 30}},
+ }
+ got = set10.Difference(set11)
+ want = Mysql56GTIDSet{}
+ if !got.Equal(want) {
+ t.Errorf("got %#v; want %#v", got, want)
+ }
}
func TestMysql56GTIDSetSIDBlock(t *testing.T) {
diff --git a/go/mysql/mysql_fuzzer.go b/go/mysql/mysql_fuzzer.go
new file mode 100644
index 00000000000..569475c8b8e
--- /dev/null
+++ b/go/mysql/mysql_fuzzer.go
@@ -0,0 +1,385 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+// +build gofuzz
+
+package mysql
+
+import (
+ "context"
+ "fmt"
+ "io/ioutil"
+ "net"
+ "os"
+ "path"
+ "sync"
+ "time"
+
+ gofuzzheaders "github.com/AdaLogics/go-fuzz-headers"
+
+ "vitess.io/vitess/go/sqltypes"
+ querypb "vitess.io/vitess/go/vt/proto/query"
+ "vitess.io/vitess/go/vt/sqlparser"
+ "vitess.io/vitess/go/vt/tlstest"
+ "vitess.io/vitess/go/vt/vttls"
+)
+
+func createFuzzingSocketPair() (net.Listener, *Conn, *Conn) {
+ // Create a listener.
+ listener, err := net.Listen("tcp", ":0")
+ if err != nil {
+ fmt.Println("We got an error early on")
+ return nil, nil, nil
+ }
+ addr := listener.Addr().String()
+ listener.(*net.TCPListener).SetDeadline(time.Now().Add(10 * time.Second))
+
+ // Dial a client, Accept a server.
+ wg := sync.WaitGroup{}
+
+ var clientConn net.Conn
+ var clientErr error
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+ clientConn, clientErr = net.DialTimeout("tcp", addr, 10*time.Second)
+ }()
+
+ var serverConn net.Conn
+ var serverErr error
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+ serverConn, serverErr = listener.Accept()
+ }()
+
+ wg.Wait()
+
+ if clientErr != nil {
+ return nil, nil, nil
+ }
+ if serverErr != nil {
+ return nil, nil, nil
+ }
+
+ // Create a Conn on both sides.
+ cConn := newConn(clientConn)
+ sConn := newConn(serverConn)
+
+ return listener, sConn, cConn
+}
+
+type fuzztestRun struct{}
+
+func (t fuzztestRun) NewConnection(c *Conn) {
+ panic("implement me")
+}
+
+func (t fuzztestRun) ConnectionClosed(c *Conn) {
+ panic("implement me")
+}
+
+func (t fuzztestRun) ComQuery(c *Conn, query string, callback func(*sqltypes.Result) error) error {
+ return nil
+}
+
+func (t fuzztestRun) ComPrepare(c *Conn, query string, bindVars map[string]*querypb.BindVariable) ([]*querypb.Field, error) {
+ panic("implement me")
+}
+
+func (t fuzztestRun) ComStmtExecute(c *Conn, prepare *PrepareData, callback func(*sqltypes.Result) error) error {
+ panic("implement me")
+}
+
+func (t fuzztestRun) WarningCount(c *Conn) uint16 {
+ return 0
+}
+
+func (t fuzztestRun) ComResetConnection(c *Conn) {
+ panic("implement me")
+}
+
+var _ Handler = (*fuzztestRun)(nil)
+
+type fuzztestConn struct {
+ writeToPass []bool
+ pos int
+ queryPacket []byte
+}
+
+func (t fuzztestConn) Read(b []byte) (n int, err error) {
+ for j, i := range t.queryPacket {
+ b[j] = i
+ }
+ return len(b), nil
+}
+
+func (t fuzztestConn) Write(b []byte) (n int, err error) {
+ t.pos = t.pos + 1
+ if t.writeToPass[t.pos] {
+ return 0, nil
+ }
+ return 0, fmt.Errorf("error in writing to connection")
+}
+
+func (t fuzztestConn) Close() error {
+ panic("implement me")
+}
+
+func (t fuzztestConn) LocalAddr() net.Addr {
+ panic("implement me")
+}
+
+func (t fuzztestConn) RemoteAddr() net.Addr {
+ return fuzzmockAddress{s: "a"}
+}
+
+func (t fuzztestConn) SetDeadline(t1 time.Time) error {
+ panic("implement me")
+}
+
+func (t fuzztestConn) SetReadDeadline(t1 time.Time) error {
+ panic("implement me")
+}
+
+func (t fuzztestConn) SetWriteDeadline(t1 time.Time) error {
+ panic("implement me")
+}
+
+var _ net.Conn = (*fuzztestConn)(nil)
+
+type fuzzmockAddress struct {
+ s string
+}
+
+func (m fuzzmockAddress) Network() string {
+ return m.s
+}
+
+func (m fuzzmockAddress) String() string {
+ return m.s
+}
+
+var _ net.Addr = (*fuzzmockAddress)(nil)
+
+// Fuzzers begin here:
+func FuzzWritePacket(data []byte) int {
+ if len(data) < 10 {
+ return -1
+ }
+ listener, sConn, cConn := createFuzzingSocketPair()
+ defer func() {
+ listener.Close()
+ sConn.Close()
+ cConn.Close()
+ }()
+
+ err := cConn.writePacket(data)
+ if err != nil {
+ return 0
+ }
+ _, err = sConn.ReadPacket()
+ if err != nil {
+ return 0
+ }
+ return 1
+}
+
+func FuzzHandleNextCommand(data []byte) int {
+ if len(data) < 10 {
+ return -1
+ }
+ sConn := newConn(fuzztestConn{
+ writeToPass: []bool{false},
+ pos: -1,
+ queryPacket: data,
+ })
+
+ handler := &fuzztestRun{}
+ _ = sConn.handleNextCommand(handler)
+ return 1
+}
+
+func FuzzReadQueryResults(data []byte) int {
+ listener, sConn, cConn := createFuzzingSocketPair()
+ defer func() {
+ listener.Close()
+ sConn.Close()
+ cConn.Close()
+ }()
+ err := cConn.WriteComQuery(string(data))
+ if err != nil {
+ return 0
+ }
+ handler := &fuzztestRun{}
+ _ = sConn.handleNextCommand(handler)
+ _, _, _, err = cConn.ReadQueryResult(100, true)
+ if err != nil {
+ return 0
+ }
+ return 1
+}
+
+type fuzzTestHandler struct {
+ mu sync.Mutex
+ lastConn *Conn
+ result *sqltypes.Result
+ err error
+ warnings uint16
+}
+
+func (th *fuzzTestHandler) LastConn() *Conn {
+ th.mu.Lock()
+ defer th.mu.Unlock()
+ return th.lastConn
+}
+
+func (th *fuzzTestHandler) Result() *sqltypes.Result {
+ th.mu.Lock()
+ defer th.mu.Unlock()
+ return th.result
+}
+
+func (th *fuzzTestHandler) SetErr(err error) {
+ th.mu.Lock()
+ defer th.mu.Unlock()
+ th.err = err
+}
+
+func (th *fuzzTestHandler) Err() error {
+ th.mu.Lock()
+ defer th.mu.Unlock()
+ return th.err
+}
+
+func (th *fuzzTestHandler) SetWarnings(count uint16) {
+ th.mu.Lock()
+ defer th.mu.Unlock()
+ th.warnings = count
+}
+
+func (th *fuzzTestHandler) NewConnection(c *Conn) {
+ th.mu.Lock()
+ defer th.mu.Unlock()
+ th.lastConn = c
+}
+
+func (th *fuzzTestHandler) ConnectionClosed(_ *Conn) {
+}
+
+func (th *fuzzTestHandler) ComQuery(c *Conn, query string, callback func(*sqltypes.Result) error) error {
+
+ return nil
+}
+
+func (th *fuzzTestHandler) ComPrepare(c *Conn, query string, bindVars map[string]*querypb.BindVariable) ([]*querypb.Field, error) {
+ return nil, nil
+}
+
+func (th *fuzzTestHandler) ComStmtExecute(c *Conn, prepare *PrepareData, callback func(*sqltypes.Result) error) error {
+ return nil
+}
+
+func (th *fuzzTestHandler) ComResetConnection(c *Conn) {
+
+}
+
+func (th *fuzzTestHandler) WarningCount(c *Conn) uint16 {
+ th.mu.Lock()
+ defer th.mu.Unlock()
+ return th.warnings
+}
+
+func FuzzTLSServer(data []byte) int {
+ // totalQueries is the number of queries the fuzzer
+ // makes in each fuzz iteration
+ totalQueries := 20
+ var queries []string
+ c := gofuzzheaders.NewConsumer(data)
+ for i := 0; i < totalQueries; i++ {
+ query, err := c.GetString()
+ if err != nil {
+ return -1
+ }
+
+ // We parse each query now to exit if the queries
+ // are invalid
+ _, err = sqlparser.Parse(query)
+ if err != nil {
+ return -1
+ }
+ queries = append(queries, query)
+ }
+
+ th := &fuzzTestHandler{}
+
+ authServer := NewAuthServerStatic("", "", 0)
+ authServer.entries["user1"] = []*AuthServerStaticEntry{{
+ Password: "password1",
+ }}
+ defer authServer.close()
+ l, err := NewListener("tcp", ":0", authServer, th, 0, 0, false)
+ if err != nil {
+ return -1
+ }
+ defer l.Close()
+ host, err := os.Hostname()
+ if err != nil {
+ return -1
+ }
+ port := l.Addr().(*net.TCPAddr).Port
+ root, err := ioutil.TempDir("", "TestTLSServer")
+ if err != nil {
+ return -1
+ }
+ defer os.RemoveAll(root)
+ tlstest.CreateCA(root)
+ tlstest.CreateSignedCert(root, tlstest.CA, "01", "server", host)
+ tlstest.CreateSignedCert(root, tlstest.CA, "02", "client", "Client Cert")
+
+ serverConfig, err := vttls.ServerConfig(
+ path.Join(root, "server-cert.pem"),
+ path.Join(root, "server-key.pem"),
+ path.Join(root, "ca-cert.pem"),
+ "")
+ if err != nil {
+ return -1
+ }
+ l.TLSConfig.Store(serverConfig)
+ go l.Accept()
+
+ connCountByTLSVer.ResetAll()
+ // Setup the right parameters.
+ params := &ConnParams{
+ Host: host,
+ Port: port,
+ Uname: "user1",
+ Pass: "password1",
+ // SSL flags.
+ Flags: CapabilityClientSSL,
+ SslCa: path.Join(root, "ca-cert.pem"),
+ SslCert: path.Join(root, "client-cert.pem"),
+ SslKey: path.Join(root, "client-key.pem"),
+ }
+ conn, err := Connect(context.Background(), params)
+ if err != nil {
+ return -1
+ }
+
+ for i := 0; i < len(queries); i++ {
+ _, _ = conn.ExecuteFetch(queries[i], 1000, true)
+ }
+ return 1
+}
diff --git a/go/mysql/query.go b/go/mysql/query.go
index 929b9a87dc0..61858b73f7d 100644
--- a/go/mysql/query.go
+++ b/go/mysql/query.go
@@ -319,6 +319,9 @@ func (c *Conn) ExecuteFetchMulti(query string, maxrows int, wantfields bool) (re
}
res, more, _, err := c.ReadQueryResult(maxrows, wantfields)
+ if err != nil {
+ return nil, false, err
+ }
return res, more, err
}
@@ -358,6 +361,7 @@ func (c *Conn) ReadQueryResult(maxrows int, wantfields bool) (*sqltypes.Result,
RowsAffected: packetOk.affectedRows,
InsertID: packetOk.lastInsertID,
SessionStateChanges: packetOk.sessionStateData,
+ StatusFlags: packetOk.statusFlags,
}, more, warnings, nil
}
@@ -421,15 +425,17 @@ func (c *Conn) ReadQueryResult(maxrows int, wantfields bool) (*sqltypes.Result,
if !wantfields {
result.Fields = nil
}
- result.RowsAffected = uint64(len(result.Rows))
// The deprecated EOF packets change means that this is either an
// EOF packet or an OK packet with the EOF type code.
if c.Capabilities&CapabilityClientDeprecateEOF == 0 {
- warnings, more, err = parseEOFPacket(data)
+ var statusFlags uint16
+ warnings, statusFlags, err = parseEOFPacket(data)
if err != nil {
return nil, false, 0, err
}
+ more = (statusFlags & ServerMoreResultsExists) != 0
+ result.StatusFlags = statusFlags
} else {
packetOk, err := c.parseOKPacket(data)
if err != nil {
@@ -438,6 +444,7 @@ func (c *Conn) ReadQueryResult(maxrows int, wantfields bool) (*sqltypes.Result,
warnings = packetOk.warnings
more = (packetOk.statusFlags & ServerMoreResultsExists) != 0
result.SessionStateChanges = packetOk.sessionStateData
+ result.StatusFlags = packetOk.statusFlags
}
return result, more, warnings, nil
@@ -857,7 +864,11 @@ func (c *Conn) parseComStmtSendLongData(data []byte) (uint32, uint16, []byte, bo
return 0, 0, nil, false
}
- return statementID, paramID, data[pos:], true
+ chunkData := data[pos:]
+ chunk := make([]byte, len(chunkData))
+ copy(chunk, chunkData)
+
+ return statementID, paramID, chunk, true
}
func (c *Conn) parseComStmtClose(data []byte) (uint32, bool) {
diff --git a/go/mysql/query_test.go b/go/mysql/query_test.go
index a58da8fb486..8b5fae975e1 100644
--- a/go/mysql/query_test.go
+++ b/go/mysql/query_test.go
@@ -33,7 +33,7 @@ import (
)
// Utility function to write sql query as packets to test parseComPrepare
-func MockQueryPackets(t *testing.T, query string) []byte {
+func preparePacket(t *testing.T, query string) []byte {
data := make([]byte, len(query)+1+packetHeaderSize)
// Not sure if it makes a difference
pos := packetHeaderSize
@@ -130,7 +130,7 @@ func TestComStmtPrepare(t *testing.T) {
}()
sql := "select * from test_table where id = ?"
- mockData := MockQueryPackets(t, sql)
+ mockData := preparePacket(t, sql)
if err := cConn.writePacket(mockData); err != nil {
t.Fatalf("writePacket failed: %v", err)
@@ -173,7 +173,7 @@ func TestComStmtPrepareUpdStmt(t *testing.T) {
}()
sql := "UPDATE test SET __bit = ?, __tinyInt = ?, __tinyIntU = ?, __smallInt = ?, __smallIntU = ?, __mediumInt = ?, __mediumIntU = ?, __int = ?, __intU = ?, __bigInt = ?, __bigIntU = ?, __decimal = ?, __float = ?, __double = ?, __date = ?, __datetime = ?, __timestamp = ?, __time = ?, __year = ?, __char = ?, __varchar = ?, __binary = ?, __varbinary = ?, __tinyblob = ?, __tinytext = ?, __blob = ?, __text = ?, __enum = ?, __set = ? WHERE __id = 0"
- mockData := MockQueryPackets(t, sql)
+ mockData := preparePacket(t, sql)
err := cConn.writePacket(mockData)
require.NoError(t, err, "writePacket failed")
@@ -415,7 +415,6 @@ func TestQueries(t *testing.T) {
sqltypes.NULL,
},
},
- RowsAffected: 2,
})
// Typical Select with TYPE_AND_NAME.
@@ -518,7 +517,6 @@ func TestQueries(t *testing.T) {
sqltypes.NULL,
},
},
- RowsAffected: 2,
})
// Typical Select with TYPE_AND_NAME.
@@ -538,7 +536,6 @@ func TestQueries(t *testing.T) {
sqltypes.MakeTrusted(querypb.Type_VARCHAR, []byte("nice name")),
},
},
- RowsAffected: 2,
})
// Typical Select with TYPE_ONLY.
@@ -556,7 +553,6 @@ func TestQueries(t *testing.T) {
sqltypes.MakeTrusted(querypb.Type_INT64, []byte("20")),
},
},
- RowsAffected: 2,
})
// Typical Select with ALL.
@@ -589,7 +585,6 @@ func TestQueries(t *testing.T) {
sqltypes.MakeTrusted(querypb.Type_INT64, []byte("30")),
},
},
- RowsAffected: 3,
})
}
@@ -649,7 +644,6 @@ func checkQueryInternal(t *testing.T, query string, sConn, cConn *Conn, result *
go func() {
defer wg.Done()
- // Test ExecuteFetch.
maxrows := 10000
if !allRows {
// Asking for just one row max. The results that have more will fail.
@@ -687,6 +681,7 @@ func checkQueryInternal(t *testing.T, query string, sConn, cConn *Conn, result *
if gotWarnings != warningCount {
t.Errorf("ExecuteFetch(%v) expected %v warnings got %v", query, warningCount, gotWarnings)
+ return
}
// Test ExecuteStreamFetch, build a Result.
@@ -733,6 +728,10 @@ func checkQueryInternal(t *testing.T, query string, sConn, cConn *Conn, result *
t.Logf("========== Expected row(%v) = %v", i, RowString(expected.Rows[i]))
}
}
+ if expected.RowsAffected != got.RowsAffected {
+ t.Logf("========== Got RowsAffected = %v", got.RowsAffected)
+ t.Logf("========== Expected RowsAffected = %v", expected.RowsAffected)
+ }
t.Errorf("\nExecuteStreamFetch(%v) returned:\n%+v\nBut was expecting:\n%+v\n", query, got, &expected)
}
}()
diff --git a/go/mysql/replication_constants.go b/go/mysql/replication_constants.go
index 53d51c944eb..096bd902a04 100644
--- a/go/mysql/replication_constants.go
+++ b/go/mysql/replication_constants.go
@@ -207,6 +207,9 @@ const (
//eViewChangeEvent = 37
//eXAPrepareLogEvent = 38
+ // Transaction_payload_event when binlog compression is turned on
+ eCompressedEvent = 40
+
// MariaDB specific values. They start at 160.
//eMariaAnnotateRowsEvent = 160
// Unused
diff --git a/go/mysql/replication_status.go b/go/mysql/replication_status.go
index 58f17835b5f..38503e10d0e 100644
--- a/go/mysql/replication_status.go
+++ b/go/mysql/replication_status.go
@@ -112,7 +112,7 @@ func ProtoToReplicationStatus(s *replicationdatapb.Status) ReplicationStatus {
// provided as a list of ReplicationStatus's. This method only works if the flavor for all retrieved ReplicationStatus's is MySQL.
// The result is returned as a Mysql56GTIDSet, each of whose elements is a found errant GTID.
func (s *ReplicationStatus) FindErrantGTIDs(otherReplicaStatuses []*ReplicationStatus) (Mysql56GTIDSet, error) {
- set, ok := s.RelayLogPosition.GTIDSet.(Mysql56GTIDSet)
+ relayLogSet, ok := s.RelayLogPosition.GTIDSet.(Mysql56GTIDSet)
if !ok {
return nil, fmt.Errorf("errant GTIDs can only be computed on the MySQL flavor")
}
@@ -136,8 +136,8 @@ func (s *ReplicationStatus) FindErrantGTIDs(otherReplicaStatuses []*ReplicationS
}
// Copy set for final diffSet so we don't mutate receiver.
- diffSet := make(Mysql56GTIDSet, len(set))
- for sid, intervals := range set {
+ diffSet := make(Mysql56GTIDSet, len(relayLogSet))
+ for sid, intervals := range relayLogSet {
if sid == s.MasterUUID {
continue
}
diff --git a/go/mysql/schema.go b/go/mysql/schema.go
index 3174dad7274..01841429732 100644
--- a/go/mysql/schema.go
+++ b/go/mysql/schema.go
@@ -30,58 +30,64 @@ import (
// data.
const (
- // BaseShowTables is the base query used in further methods.
- BaseShowTables = "SELECT table_name, table_type, unix_timestamp(create_time), table_comment FROM information_schema.tables WHERE table_schema = database()"
-
// BaseShowPrimary is the base query for fetching primary key info.
BaseShowPrimary = "SELECT table_name, column_name FROM information_schema.key_column_usage WHERE table_schema=database() AND constraint_name='PRIMARY' ORDER BY table_name, ordinal_position"
+ // ShowRowsRead is the query used to find the number of rows read.
+ ShowRowsRead = "show status like 'Innodb_rows_read'"
)
// BaseShowTablesFields contains the fields returned by a BaseShowTables or a BaseShowTablesForTable command.
// They are validated by the
// testBaseShowTables test.
-var BaseShowTablesFields = []*querypb.Field{
- {
- Name: "table_name",
- Type: querypb.Type_VARCHAR,
- Table: "tables",
- OrgTable: "TABLES",
- Database: "information_schema",
- OrgName: "TABLE_NAME",
- ColumnLength: 192,
- Charset: CharacterSetUtf8,
- Flags: uint32(querypb.MySqlFlag_NOT_NULL_FLAG),
- },
- {
- Name: "table_type",
- Type: querypb.Type_VARCHAR,
- Table: "tables",
- OrgTable: "TABLES",
- Database: "information_schema",
- OrgName: "TABLE_TYPE",
- ColumnLength: 192,
- Charset: CharacterSetUtf8,
- Flags: uint32(querypb.MySqlFlag_NOT_NULL_FLAG),
- },
- {
- Name: "unix_timestamp(create_time)",
- Type: querypb.Type_INT64,
- ColumnLength: 11,
- Charset: CharacterSetBinary,
- Flags: uint32(querypb.MySqlFlag_BINARY_FLAG | querypb.MySqlFlag_NUM_FLAG),
- },
- {
- Name: "table_comment",
- Type: querypb.Type_VARCHAR,
- Table: "tables",
- OrgTable: "TABLES",
- Database: "information_schema",
- OrgName: "TABLE_COMMENT",
- ColumnLength: 6144,
- Charset: CharacterSetUtf8,
- Flags: uint32(querypb.MySqlFlag_NOT_NULL_FLAG),
- },
-}
+var BaseShowTablesFields = []*querypb.Field{{
+ Name: "t.table_name",
+ Type: querypb.Type_VARCHAR,
+ Table: "tables",
+ OrgTable: "TABLES",
+ Database: "information_schema",
+ OrgName: "TABLE_NAME",
+ ColumnLength: 192,
+ Charset: CharacterSetUtf8,
+ Flags: uint32(querypb.MySqlFlag_NOT_NULL_FLAG),
+}, {
+ Name: "t.table_type",
+ Type: querypb.Type_VARCHAR,
+ Table: "tables",
+ OrgTable: "TABLES",
+ Database: "information_schema",
+ OrgName: "TABLE_TYPE",
+ ColumnLength: 192,
+ Charset: CharacterSetUtf8,
+ Flags: uint32(querypb.MySqlFlag_NOT_NULL_FLAG),
+}, {
+ Name: "unix_timestamp(t.create_time)",
+ Type: querypb.Type_INT64,
+ ColumnLength: 11,
+ Charset: CharacterSetBinary,
+ Flags: uint32(querypb.MySqlFlag_BINARY_FLAG | querypb.MySqlFlag_NUM_FLAG),
+}, {
+ Name: "t.table_comment",
+ Type: querypb.Type_VARCHAR,
+ Table: "tables",
+ OrgTable: "TABLES",
+ Database: "information_schema",
+ OrgName: "TABLE_COMMENT",
+ ColumnLength: 6144,
+ Charset: CharacterSetUtf8,
+ Flags: uint32(querypb.MySqlFlag_NOT_NULL_FLAG),
+}, {
+ Name: "i.file_size",
+ Type: querypb.Type_INT64,
+ ColumnLength: 11,
+ Charset: CharacterSetBinary,
+ Flags: uint32(querypb.MySqlFlag_BINARY_FLAG | querypb.MySqlFlag_NUM_FLAG),
+}, {
+ Name: "i.allocated_size",
+ Type: querypb.Type_INT64,
+ ColumnLength: 11,
+ Charset: CharacterSetBinary,
+ Flags: uint32(querypb.MySqlFlag_BINARY_FLAG | querypb.MySqlFlag_NUM_FLAG),
+}}
// BaseShowTablesRow returns the fields from a BaseShowTables or
// BaseShowTablesForTable command.
@@ -95,6 +101,8 @@ func BaseShowTablesRow(tableName string, isView bool, comment string) []sqltypes
sqltypes.MakeTrusted(sqltypes.VarChar, []byte(tableType)),
sqltypes.MakeTrusted(sqltypes.Int64, []byte("1427325875")), // unix_timestamp(create_time)
sqltypes.MakeTrusted(sqltypes.VarChar, []byte(comment)),
+ sqltypes.MakeTrusted(sqltypes.Int64, []byte("100")), // file_size
+ sqltypes.MakeTrusted(sqltypes.Int64, []byte("150")), // allocated_size
}
}
diff --git a/go/mysql/server.go b/go/mysql/server.go
index 6e702489e2b..0647e06644f 100644
--- a/go/mysql/server.go
+++ b/go/mysql/server.go
@@ -17,6 +17,7 @@ limitations under the License.
package mysql
import (
+ "context"
"crypto/tls"
"io"
"net"
@@ -24,6 +25,8 @@ import (
"sync/atomic"
"time"
+ "vitess.io/vitess/go/vt/servenv"
+
"vitess.io/vitess/go/sqlescape"
proxyproto "github.com/pires/go-proxyproto"
@@ -42,7 +45,6 @@ import (
const (
// DefaultServerVersion is the default server version we're sending to the client.
// Can be changed.
- DefaultServerVersion = "5.7.9-Vitess"
// timing metric keys
connectTimingKey = "Connect"
@@ -172,6 +174,13 @@ type Listener struct {
// RequireSecureTransport configures the server to reject connections from insecure clients
RequireSecureTransport bool
+
+ // PreHandleFunc is called for each incoming connection, immediately after
+ // accepting a new connection. By default it's no-op. Useful for custom
+ // connection inspection or TLS termination. The returned connection is
+ // handled further by the MySQL handler. An non-nil error will stop
+ // processing the connection by the MySQL handler.
+ PreHandleFunc func(context.Context, net.Conn, uint32) (net.Conn, error)
}
// NewFromListener creares a new mysql listener from an existing net.Listener
@@ -232,7 +241,7 @@ func NewListenerWithConfig(cfg ListenerConfig) (*Listener, error) {
authServer: cfg.AuthServer,
handler: cfg.Handler,
listener: l,
- ServerVersion: DefaultServerVersion,
+ ServerVersion: servenv.AppVersion.MySQLVersion(),
connectionID: 1,
connReadTimeout: cfg.ConnReadTimeout,
connWriteTimeout: cfg.ConnWriteTimeout,
@@ -247,6 +256,8 @@ func (l *Listener) Addr() net.Addr {
// Accept runs an accept loop until the listener is closed.
func (l *Listener) Accept() {
+ ctx := context.Background()
+
for {
conn, err := l.listener.Accept()
if err != nil {
@@ -263,7 +274,17 @@ func (l *Listener) Accept() {
connCount.Add(1)
connAccept.Add(1)
- go l.handle(conn, connectionID, acceptTime)
+ go func() {
+ if l.PreHandleFunc != nil {
+ conn, err = l.PreHandleFunc(ctx, conn, connectionID)
+ if err != nil {
+ log.Errorf("mysql_server pre hook: %s", err)
+ return
+ }
+ }
+
+ l.handle(conn, connectionID, acceptTime)
+ }()
}
}
diff --git a/go/mysql/server_test.go b/go/mysql/server_test.go
index 6afa2b0d6b5..a1ca1271255 100644
--- a/go/mysql/server_test.go
+++ b/go/mysql/server_test.go
@@ -17,6 +17,7 @@ limitations under the License.
package mysql
import (
+ "context"
"crypto/tls"
"fmt"
"io/ioutil"
@@ -29,8 +30,6 @@ import (
"testing"
"time"
- "context"
-
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
@@ -65,7 +64,6 @@ var selectRowsResult = &sqltypes.Result{
sqltypes.MakeTrusted(querypb.Type_VARCHAR, []byte("nicer name")),
},
},
- RowsAffected: 2,
}
type testHandler struct {
@@ -112,7 +110,7 @@ func (th *testHandler) NewConnection(c *Conn) {
th.lastConn = c
}
-func (th *testHandler) ConnectionClosed(c *Conn) {
+func (th *testHandler) ConnectionClosed(_ *Conn) {
}
func (th *testHandler) ComQuery(c *Conn, query string, callback func(*sqltypes.Result) error) error {
@@ -244,9 +242,7 @@ func getHostPort(t *testing.T, a net.Addr) (string, int) {
// For the host name, we resolve 'localhost' into an address.
// This works around a few travis issues where IPv6 is not 100% enabled.
hosts, err := net.LookupHost("localhost")
- if err != nil {
- t.Fatalf("LookupHost(localhost) failed: %v", err)
- }
+ require.NoError(t, err, "LookupHost(localhost) failed")
host := hosts[0]
port := a.(*net.TCPAddr).Port
t.Logf("listening on address '%v' port %v", host, port)
@@ -265,14 +261,10 @@ func TestConnectionFromListener(t *testing.T) {
// Make sure we can create our own net.Listener for use with the mysql
// listener
listener, err := net.Listen("tcp", ":0")
- if err != nil {
- t.Fatalf("net.Listener failed: %v", err)
- }
+ require.NoError(t, err, "net.Listener failed")
l, err := NewFromListener(listener, authServer, th, 0, 0)
- if err != nil {
- t.Fatalf("NewListener failed: %v", err)
- }
+ require.NoError(t, err, "NewListener failed")
defer l.Close()
go l.Accept()
@@ -287,9 +279,7 @@ func TestConnectionFromListener(t *testing.T) {
}
c, err := Connect(context.Background(), params)
- if err != nil {
- t.Errorf("Should be able to connect to server but found error: %v", err)
- }
+ require.NoError(t, err, "Should be able to connect to server")
c.Close()
}
@@ -303,9 +293,7 @@ func TestConnectionWithoutSourceHost(t *testing.T) {
}}
defer authServer.close()
l, err := NewListener("tcp", ":0", authServer, th, 0, 0, false)
- if err != nil {
- t.Fatalf("NewListener failed: %v", err)
- }
+ require.NoError(t, err, "NewListener failed")
defer l.Close()
go l.Accept()
@@ -320,9 +308,7 @@ func TestConnectionWithoutSourceHost(t *testing.T) {
}
c, err := Connect(context.Background(), params)
- if err != nil {
- t.Errorf("Should be able to connect to server but found error: %v", err)
- }
+ require.NoError(t, err, "Should be able to connect to server")
c.Close()
}
@@ -340,9 +326,7 @@ func TestConnectionWithSourceHost(t *testing.T) {
defer authServer.close()
l, err := NewListener("tcp", ":0", authServer, th, 0, 0, false)
- if err != nil {
- t.Fatalf("NewListener failed: %v", err)
- }
+ require.NoError(t, err, "NewListener failed")
defer l.Close()
go l.Accept()
@@ -358,9 +342,7 @@ func TestConnectionWithSourceHost(t *testing.T) {
_, err = Connect(context.Background(), params)
// target is localhost, should not work from tcp connection
- if err == nil {
- t.Errorf("Should be able to connect to server but found error: %v", err)
- }
+ require.EqualError(t, err, "Access denied for user 'user1' (errno 1045) (sqlstate 28000)", "Should not be able to connect to server")
}
func TestConnectionUseMysqlNativePasswordWithSourceHost(t *testing.T) {
@@ -377,9 +359,7 @@ func TestConnectionUseMysqlNativePasswordWithSourceHost(t *testing.T) {
defer authServer.close()
l, err := NewListener("tcp", ":0", authServer, th, 0, 0, false)
- if err != nil {
- t.Fatalf("NewListener failed: %v", err)
- }
+ require.NoError(t, err, "NewListener failed")
defer l.Close()
go l.Accept()
@@ -395,9 +375,7 @@ func TestConnectionUseMysqlNativePasswordWithSourceHost(t *testing.T) {
_, err = Connect(context.Background(), params)
// target is localhost, should not work from tcp connection
- if err == nil {
- t.Errorf("Should be able to connect to server but found error: %v", err)
- }
+ require.EqualError(t, err, "Access denied for user 'user1' (errno 1045) (sqlstate 28000)", "Should not be able to connect to server")
}
func TestConnectionUnixSocket(t *testing.T) {
@@ -414,15 +392,12 @@ func TestConnectionUnixSocket(t *testing.T) {
defer authServer.close()
unixSocket, err := ioutil.TempFile("", "mysql_vitess_test.sock")
- if err != nil {
- t.Fatalf("Failed to create temp file")
- }
+ require.NoError(t, err, "Failed to create temp file")
+
os.Remove(unixSocket.Name())
l, err := NewListener("unix", unixSocket.Name(), authServer, th, 0, 0, false)
- if err != nil {
- t.Fatalf("NewListener failed: %v", err)
- }
+ require.NoError(t, err, "NewListener failed")
defer l.Close()
go l.Accept()
@@ -434,9 +409,7 @@ func TestConnectionUnixSocket(t *testing.T) {
}
c, err := Connect(context.Background(), params)
- if err != nil {
- t.Errorf("Should be able to connect to server but found error: %v", err)
- }
+ require.NoError(t, err, "Should be able to connect to server")
c.Close()
}
@@ -450,9 +423,7 @@ func TestClientFoundRows(t *testing.T) {
}}
defer authServer.close()
l, err := NewListener("tcp", ":0", authServer, th, 0, 0, false)
- if err != nil {
- t.Fatalf("NewListener failed: %v", err)
- }
+ require.NoError(t, err, "NewListener failed")
defer l.Close()
go l.Accept()
@@ -468,28 +439,18 @@ func TestClientFoundRows(t *testing.T) {
// Test without flag.
c, err := Connect(context.Background(), params)
- if err != nil {
- t.Fatal(err)
- }
+ require.NoError(t, err, "Connect failed")
foundRows := th.LastConn().Capabilities & CapabilityClientFoundRows
- if foundRows != 0 {
- t.Errorf("FoundRows flag: %x, second bit must be 0", th.LastConn().Capabilities)
- }
+ assert.Equal(t, uint32(0), foundRows, "FoundRows flag: %x, second bit must be 0", th.LastConn().Capabilities)
c.Close()
- if !c.IsClosed() {
- t.Errorf("IsClosed returned true on Close-d connection.")
- }
+ assert.True(t, c.IsClosed(), "IsClosed should be true on Close-d connection.")
// Test with flag.
params.Flags |= CapabilityClientFoundRows
c, err = Connect(context.Background(), params)
- if err != nil {
- t.Fatal(err)
- }
+ require.NoError(t, err, "Connect failed")
foundRows = th.LastConn().Capabilities & CapabilityClientFoundRows
- if foundRows == 0 {
- t.Errorf("FoundRows flag: %x, second bit must be set", th.LastConn().Capabilities)
- }
+ assert.NotZero(t, foundRows, "FoundRows flag: %x, second bit must be set", th.LastConn().Capabilities)
c.Close()
}
@@ -498,6 +459,9 @@ func TestConnCounts(t *testing.T) {
initialNumUsers := len(connCountPerUser.Counts())
+ // FIXME: we should be able to ResetAll counters instead of computing a delta, but it doesn't work for some reason
+ // connCountPerUser.ResetAll()
+
user := "anotherNotYetConnectedUser1"
passwd := "password1"
@@ -508,9 +472,7 @@ func TestConnCounts(t *testing.T) {
}}
defer authServer.close()
l, err := NewListener("tcp", ":0", authServer, th, 0, 0, false)
- if err != nil {
- t.Fatalf("NewListener failed: %v", err)
- }
+ require.NoError(t, err, "NewListener failed")
defer l.Close()
go l.Accept()
@@ -525,27 +487,18 @@ func TestConnCounts(t *testing.T) {
}
c, err := Connect(context.Background(), params)
- if err != nil {
- t.Fatal(err)
- }
+ require.NoError(t, err, "Connect failed")
connCounts := connCountPerUser.Counts()
- if l := len(connCounts); l-initialNumUsers != 1 {
- t.Errorf("Expected 1 new user, got %d", l)
- }
+ assert.Equal(t, 1, len(connCounts)-initialNumUsers)
checkCountsForUser(t, user, 1)
// Test with a second new connection.
c2, err := Connect(context.Background(), params)
- if err != nil {
- t.Fatal(err)
- }
-
+ require.NoError(t, err)
connCounts = connCountPerUser.Counts()
// There is still only one new user.
- if l2 := len(connCounts); l2-initialNumUsers != 1 {
- t.Errorf("Expected 1 new user, got %d", l2)
- }
+ assert.Equal(t, 1, len(connCounts)-initialNumUsers)
checkCountsForUser(t, user, 2)
// Test after closing connections. time.Sleep lets it work, but seems flakey.
@@ -562,13 +515,8 @@ func checkCountsForUser(t *testing.T, user string, expected int64) {
connCounts := connCountPerUser.Counts()
userCount, ok := connCounts[user]
- if ok {
- if userCount != expected {
- t.Errorf("Expected connection count for user to be %d, got %d", expected, userCount)
- }
- } else {
- t.Errorf("No count found for user %s", user)
- }
+ assert.True(t, ok, "No count found for user %s", user)
+ assert.Equal(t, expected, userCount)
}
func TestServer(t *testing.T) {
@@ -582,7 +530,7 @@ func TestServer(t *testing.T) {
defer authServer.close()
l, err := NewListener("tcp", ":0", authServer, th, 0, 0, false)
require.NoError(t, err)
- l.SlowConnectWarnThreshold.Set(time.Duration(time.Nanosecond * 1))
+ l.SlowConnectWarnThreshold.Set(time.Nanosecond * 1)
defer l.Close()
go l.Accept()
@@ -600,23 +548,19 @@ func TestServer(t *testing.T) {
output, err := runMysqlWithErr(t, params, "select rows")
require.NoError(t, err)
- if !strings.Contains(output, "nice name") ||
- !strings.Contains(output, "nicer name") ||
- !strings.Contains(output, "2 rows in set") {
- t.Errorf("Unexpected output for 'select rows'")
- }
+ assert.Contains(t, output, "nice name", "Unexpected output for 'select rows'")
+ assert.Contains(t, output, "nicer name", "Unexpected output for 'select rows'")
+ assert.Contains(t, output, "2 rows in set", "Unexpected output for 'select rows'")
assert.NotContains(t, output, "warnings")
// Run a 'select rows' command with warnings
th.SetWarnings(13)
output, err = runMysqlWithErr(t, params, "select rows")
require.NoError(t, err)
- if !strings.Contains(output, "nice name") ||
- !strings.Contains(output, "nicer name") ||
- !strings.Contains(output, "2 rows in set") ||
- !strings.Contains(output, "13 warnings") {
- t.Errorf("Unexpected output for 'select rows': %v", output)
- }
+ assert.Contains(t, output, "nice name", "Unexpected output for 'select rows'")
+ assert.Contains(t, output, "nicer name", "Unexpected output for 'select rows'")
+ assert.Contains(t, output, "2 rows in set", "Unexpected output for 'select rows'")
+ assert.Contains(t, output, "13 warnings", "Unexpected output for 'select rows'")
th.SetWarnings(0)
// If there's an error after streaming has started,
@@ -624,64 +568,50 @@ func TestServer(t *testing.T) {
th.SetErr(NewSQLError(ERUnknownComError, SSUnknownComError, "forced error after send"))
output, err = runMysqlWithErr(t, params, "error after send")
require.Error(t, err)
- if !strings.Contains(output, "ERROR 2013 (HY000)") ||
- !strings.Contains(output, "Lost connection to MySQL server during query") {
- t.Errorf("Unexpected output for 'panic'")
- }
+ assert.Contains(t, output, "ERROR 2013 (HY000)", "Unexpected output for 'panic'")
+ assert.Contains(t, output, "Lost connection to MySQL server during query", "Unexpected output for 'panic'")
// Run an 'insert' command, no rows, but rows affected.
output, err = runMysqlWithErr(t, params, "insert")
require.NoError(t, err)
- if !strings.Contains(output, "Query OK, 123 rows affected") {
- t.Errorf("Unexpected output for 'insert'")
- }
+ assert.Contains(t, output, "Query OK, 123 rows affected", "Unexpected output for 'insert'")
// Run a 'schema echo' command, to make sure db name is right.
params.DbName = "XXXfancyXXX"
output, err = runMysqlWithErr(t, params, "schema echo")
require.NoError(t, err)
- if !strings.Contains(output, params.DbName) {
- t.Errorf("Unexpected output for 'schema echo'")
- }
+ assert.Contains(t, output, params.DbName, "Unexpected output for 'schema echo'")
// Sanity check: make sure this didn't go through SSL
output, err = runMysqlWithErr(t, params, "ssl echo")
require.NoError(t, err)
- if !strings.Contains(output, "ssl_flag") ||
- !strings.Contains(output, "OFF") ||
- !strings.Contains(output, "1 row in set") {
- t.Errorf("Unexpected output for 'ssl echo': %v", output)
- }
+ assert.Contains(t, output, "ssl_flag")
+ assert.Contains(t, output, "OFF")
+ assert.Contains(t, output, "1 row in set", "Unexpected output for 'ssl echo': %v", output)
// UserData check: checks the server user data is correct.
output, err = runMysqlWithErr(t, params, "userData echo")
require.NoError(t, err)
- if !strings.Contains(output, "user1") ||
- !strings.Contains(output, "user_data") ||
- !strings.Contains(output, "userData1") {
- t.Errorf("Unexpected output for 'userData echo': %v", output)
- }
+ assert.Contains(t, output, "user1")
+ assert.Contains(t, output, "user_data")
+ assert.Contains(t, output, "userData1", "Unexpected output for 'userData echo': %v", output)
// Permissions check: check a bad password is rejected.
params.Pass = "bad"
output, err = runMysqlWithErr(t, params, "select rows")
require.Error(t, err)
- if !strings.Contains(output, "1045") ||
- !strings.Contains(output, "28000") ||
- !strings.Contains(output, "Access denied") {
- t.Errorf("Unexpected output for invalid password: %v", output)
- }
+ assert.Contains(t, output, "1045")
+ assert.Contains(t, output, "28000")
+ assert.Contains(t, output, "Access denied", "Unexpected output for invalid password: %v", output)
// Permissions check: check an unknown user is rejected.
params.Pass = "password1"
params.Uname = "user2"
output, err = runMysqlWithErr(t, params, "select rows")
require.Error(t, err)
- if !strings.Contains(output, "1045") ||
- !strings.Contains(output, "28000") ||
- !strings.Contains(output, "Access denied") {
- t.Errorf("Unexpected output for invalid password: %v", output)
- }
+ assert.Contains(t, output, "1045")
+ assert.Contains(t, output, "28000")
+ assert.Contains(t, output, "Access denied", "Unexpected output for invalid password: %v", output)
// Uncomment to leave setup up for a while, to run tests manually.
// fmt.Printf("Listening to server on host '%v' port '%v'.\n", host, port)
@@ -698,10 +628,8 @@ func TestServerStats(t *testing.T) {
}}
defer authServer.close()
l, err := NewListener("tcp", ":0", authServer, th, 0, 0, false)
- if err != nil {
- t.Fatalf("NewListener failed: %v", err)
- }
- l.SlowConnectWarnThreshold.Set(time.Duration(time.Nanosecond * 1))
+ require.NoError(t, err)
+ l.SlowConnectWarnThreshold.Set(time.Nanosecond * 1)
defer l.Close()
go l.Accept()
@@ -724,13 +652,11 @@ func TestServerStats(t *testing.T) {
// Run an 'error' command.
th.SetErr(NewSQLError(ERUnknownComError, SSUnknownComError, "forced query error"))
output, ok := runMysql(t, params, "error")
- if ok {
- t.Fatalf("mysql should have failed: %v", output)
- }
- if !strings.Contains(output, "ERROR 1047 (08S01)") ||
- !strings.Contains(output, "forced query error") {
- t.Errorf("Unexpected output for 'error': %v", output)
- }
+ require.False(t, ok, "mysql should have failed: %v", output)
+
+ assert.Contains(t, output, "ERROR 1047 (08S01)")
+ assert.Contains(t, output, "forced query error", "Unexpected output for 'error': %v", output)
+
assert.EqualValues(t, 0, connCount.Get(), "connCount")
assert.EqualValues(t, 1, connAccept.Get(), "connAccept")
assert.EqualValues(t, 1, connSlow.Get(), "connSlow")
@@ -744,22 +670,18 @@ func TestServerStats(t *testing.T) {
gotTimingCounts := timings.Counts()
for key, got := range gotTimingCounts {
expected := expectedTimingDeltas[key]
- if got < expected {
- t.Errorf("Expected Timing count delta %s should be >= %d, got %d", key, expected, got)
- }
+ assert.GreaterOrEqual(t, got, expected, "Expected Timing count delta %s should be >= %d, got %d", key, expected, got)
}
// Set the slow connect threshold to something high that we don't expect to trigger
- l.SlowConnectWarnThreshold.Set(time.Duration(time.Second * 1))
+ l.SlowConnectWarnThreshold.Set(time.Second * 1)
// Run a 'panic' command, other side should panic, recover and
// close the connection.
output, err = runMysqlWithErr(t, params, "panic")
require.Error(t, err)
- if !strings.Contains(output, "ERROR 2013 (HY000)") ||
- !strings.Contains(output, "Lost connection to MySQL server during query") {
- t.Errorf("Unexpected output for 'panic'")
- }
+ assert.Contains(t, output, "ERROR 2013 (HY000)")
+ assert.Contains(t, output, "Lost connection to MySQL server during query", "Unexpected output for 'panic': %v", output)
assert.EqualValues(t, 0, connCount.Get(), "connCount")
assert.EqualValues(t, 2, connAccept.Get(), "connAccept")
@@ -780,9 +702,7 @@ func TestClearTextServer(t *testing.T) {
authServer.method = MysqlClearPassword
defer authServer.close()
l, err := NewListener("tcp", ":0", authServer, th, 0, 0, false)
- if err != nil {
- t.Fatalf("NewListener failed: %v", err)
- }
+ require.NoError(t, err)
defer l.Close()
go l.Accept()
@@ -809,16 +729,14 @@ func TestClearTextServer(t *testing.T) {
if isMariaDB {
t.Logf("mysql should have failed but returned: %v\nbut letting it go on MariaDB", output)
} else {
- t.Fatalf("mysql should have failed but returned: %v", output)
+ require.Fail(t, "mysql should have failed but returned: %v", output)
}
} else {
if strings.Contains(output, "No such file or directory") {
t.Logf("skipping mysql clear text tests, as the clear text plugin cannot be loaded: %v", err)
return
}
- if !strings.Contains(output, "plugin not enabled") {
- t.Errorf("Unexpected output for 'select rows': %v", output)
- }
+ assert.Contains(t, output, "plugin not enabled", "Unexpected output for 'select rows': %v", output)
}
// Now enable clear text plugin in client, but server requires SSL.
@@ -827,34 +745,23 @@ func TestClearTextServer(t *testing.T) {
sql = enableCleartextPluginPrefix + sql
}
output, ok = runMysql(t, params, sql)
- if ok {
- t.Fatalf("mysql should have failed but returned: %v", output)
- }
- if !strings.Contains(output, "Cannot use clear text authentication over non-SSL connections") {
- t.Errorf("Unexpected output for 'select rows': %v", output)
- }
+ assert.False(t, ok, "mysql should have failed but returned: %v", output)
+ assert.Contains(t, output, "Cannot use clear text authentication over non-SSL connections", "Unexpected output for 'select rows': %v", output)
// Now enable clear text plugin, it should now work.
l.AllowClearTextWithoutTLS.Set(true)
output, ok = runMysql(t, params, sql)
- if !ok {
- t.Fatalf("mysql failed: %v", output)
- }
- if !strings.Contains(output, "nice name") ||
- !strings.Contains(output, "nicer name") ||
- !strings.Contains(output, "2 rows in set") {
- t.Errorf("Unexpected output for 'select rows'")
- }
+ require.True(t, ok, "mysql failed: %v", output)
+
+ assert.Contains(t, output, "nice name", "Unexpected output for 'select rows'")
+ assert.Contains(t, output, "nicer name", "Unexpected output for 'select rows'")
+ assert.Contains(t, output, "2 rows in set", "Unexpected output for 'select rows'")
// Change password, make sure server rejects us.
params.Pass = "bad"
output, ok = runMysql(t, params, sql)
- if ok {
- t.Fatalf("mysql should have failed but returned: %v", output)
- }
- if !strings.Contains(output, "Access denied for user 'user1'") {
- t.Errorf("Unexpected output for 'select rows': %v", output)
- }
+ assert.False(t, ok, "mysql should have failed but returned: %v", output)
+ assert.Contains(t, output, "Access denied for user 'user1'", "Unexpected output for 'select rows': %v", output)
}
// TestDialogServer creates a Server that uses the dialog plugin on the client.
@@ -869,9 +776,7 @@ func TestDialogServer(t *testing.T) {
authServer.method = MysqlDialog
defer authServer.close()
l, err := NewListener("tcp", ":0", authServer, th, 0, 0, false)
- if err != nil {
- t.Fatalf("NewListener failed: %v", err)
- }
+ require.NoError(t, err)
l.AllowClearTextWithoutTLS.Set(true)
defer l.Close()
go l.Accept()
@@ -891,14 +796,10 @@ func TestDialogServer(t *testing.T) {
t.Logf("skipping dialog plugin tests, as the dialog plugin cannot be loaded: %v", err)
return
}
- if !ok {
- t.Fatalf("mysql failed: %v", output)
- }
- if !strings.Contains(output, "nice name") ||
- !strings.Contains(output, "nicer name") ||
- !strings.Contains(output, "2 rows in set") {
- t.Errorf("Unexpected output for 'select rows': %v", output)
- }
+ require.True(t, ok, "mysql failed: %v", output)
+ assert.Contains(t, output, "nice name", "Unexpected output for 'select rows': %v", output)
+ assert.Contains(t, output, "nicer name", "Unexpected output for 'select rows': %v", output)
+ assert.Contains(t, output, "2 rows in set", "Unexpected output for 'select rows': %v", output)
}
// TestTLSServer creates a Server with TLS support, then uses mysql
@@ -917,24 +818,18 @@ func TestTLSServer(t *testing.T) {
// a check that the common name of the certificate matches the
// server host name we connect to.
l, err := NewListener("tcp", ":0", authServer, th, 0, 0, false)
- if err != nil {
- t.Fatalf("NewListener failed: %v", err)
- }
+ require.NoError(t, err)
defer l.Close()
// Make sure hostname is added as an entry to /etc/hosts, otherwise ssl handshake will fail
host, err := os.Hostname()
- if err != nil {
- t.Fatalf("Failed to get os Hostname: %v", err)
- }
+ require.NoError(t, err)
port := l.Addr().(*net.TCPAddr).Port
// Create the certs.
root, err := ioutil.TempDir("", "TestTLSServer")
- if err != nil {
- t.Fatalf("TempDir failed: %v", err)
- }
+ require.NoError(t, err)
defer os.RemoveAll(root)
tlstest.CreateCA(root)
tlstest.CreateSignedCert(root, tlstest.CA, "01", "server", host)
@@ -944,13 +839,13 @@ func TestTLSServer(t *testing.T) {
serverConfig, err := vttls.ServerConfig(
path.Join(root, "server-cert.pem"),
path.Join(root, "server-key.pem"),
- path.Join(root, "ca-cert.pem"))
- if err != nil {
- t.Fatalf("TLSServerConfig failed: %v", err)
- }
+ path.Join(root, "ca-cert.pem"),
+ "")
+ require.NoError(t, err)
l.TLSConfig.Store(serverConfig)
go l.Accept()
+ connCountByTLSVer.ResetAll()
// Setup the right parameters.
params := &ConnParams{
Host: host,
@@ -967,13 +862,9 @@ func TestTLSServer(t *testing.T) {
// Run a 'select rows' command with results.
conn, err := Connect(context.Background(), params)
//output, ok := runMysql(t, params, "select rows")
- if err != nil {
- t.Fatalf("mysql failed: %v", err)
- }
+ require.NoError(t, err)
results, err := conn.ExecuteFetch("select rows", 1000, true)
- if err != nil {
- t.Fatalf("mysql fetch failed: %v", err)
- }
+ require.NoError(t, err)
output := ""
for _, row := range results.Rows {
r := make([]string, 0)
@@ -983,27 +874,20 @@ func TestTLSServer(t *testing.T) {
output = output + strings.Join(r, ",") + "\n"
}
- if results.Rows[0][1].ToString() != "nice name" ||
- results.Rows[1][1].ToString() != "nicer name" ||
- len(results.Rows) != 2 {
- t.Errorf("Unexpected output for 'select rows': %v", output)
- }
+ assert.Equal(t, "nice name", results.Rows[0][1].ToString())
+ assert.Equal(t, "nicer name", results.Rows[1][1].ToString())
+ assert.Equal(t, 2, len(results.Rows))
// make sure this went through SSL
results, err = conn.ExecuteFetch("ssl echo", 1000, true)
- if err != nil {
- t.Fatalf("mysql fetch failed: %v", err)
- }
- if results.Rows[0][0].ToString() != "ON" {
- t.Errorf("Unexpected output for 'ssl echo': %v", results)
- }
+ require.NoError(t, err)
+ assert.Equal(t, "ON", results.Rows[0][0].ToString())
// Find out which TLS version the connection actually used,
// so we can check that the corresponding counter was incremented.
tlsVersion := conn.conn.(*tls.Conn).ConnectionState().Version
checkCountForTLSVer(t, tlsVersionToString(tlsVersion), 1)
- checkCountForTLSVer(t, versionNoTLS, 0)
conn.Close()
}
@@ -1024,24 +908,18 @@ func TestTLSRequired(t *testing.T) {
// a check that the common name of the certificate matches the
// server host name we connect to.
l, err := NewListener("tcp", ":0", authServer, th, 0, 0, false)
- if err != nil {
- t.Fatalf("NewListener failed: %v", err)
- }
+ require.NoError(t, err)
defer l.Close()
// Make sure hostname is added as an entry to /etc/hosts, otherwise ssl handshake will fail
host, err := os.Hostname()
- if err != nil {
- t.Fatalf("Failed to get os Hostname: %v", err)
- }
+ require.NoError(t, err)
port := l.Addr().(*net.TCPAddr).Port
// Create the certs.
root, err := ioutil.TempDir("", "TestTLSRequired")
- if err != nil {
- t.Fatalf("TempDir failed: %v", err)
- }
+ require.NoError(t, err)
defer os.RemoveAll(root)
tlstest.CreateCA(root)
tlstest.CreateSignedCert(root, tlstest.CA, "01", "server", host)
@@ -1050,10 +928,9 @@ func TestTLSRequired(t *testing.T) {
serverConfig, err := vttls.ServerConfig(
path.Join(root, "server-cert.pem"),
path.Join(root, "server-key.pem"),
- path.Join(root, "ca-cert.pem"))
- if err != nil {
- t.Fatalf("TLSServerConfig failed: %v", err)
- }
+ path.Join(root, "ca-cert.pem"),
+ "")
+ require.NoError(t, err)
l.TLSConfig.Store(serverConfig)
l.RequireSecureTransport = true
go l.Accept()
@@ -1066,9 +943,10 @@ func TestTLSRequired(t *testing.T) {
Pass: "password1",
}
conn, err := Connect(context.Background(), params)
- if err == nil {
- t.Fatal("mysql should have failed")
- }
+ require.NotNil(t, err)
+ require.Contains(t, err.Error(), "Code: UNAVAILABLE")
+ require.Contains(t, err.Error(), "server does not allow insecure connections, client must use SSL/TLS")
+ require.Contains(t, err.Error(), "(errno 1105) (sqlstate HY000)")
if conn != nil {
conn.Close()
}
@@ -1081,9 +959,7 @@ func TestTLSRequired(t *testing.T) {
params.SslKey = path.Join(root, "client-key.pem")
conn, err = Connect(context.Background(), params)
- if err != nil {
- t.Fatalf("mysql failed: %v", err)
- }
+ require.NoError(t, err)
if conn != nil {
conn.Close()
}
@@ -1092,13 +968,8 @@ func TestTLSRequired(t *testing.T) {
func checkCountForTLSVer(t *testing.T, version string, expected int64) {
connCounts := connCountByTLSVer.Counts()
count, ok := connCounts[version]
- if ok {
- if count != expected {
- t.Errorf("Expected connection count for version %s to be %d, got %d", version, expected, count)
- }
- } else {
- t.Errorf("No count for version %s found in %v", version, connCounts)
- }
+ assert.True(t, ok, "No count found for version %s", version)
+ assert.Equal(t, expected, count, "Unexpected connection count for version %s", version)
}
func TestErrorCodes(t *testing.T) {
@@ -1111,9 +982,7 @@ func TestErrorCodes(t *testing.T) {
}}
defer authServer.close()
l, err := NewListener("tcp", ":0", authServer, th, 0, 0, false)
- if err != nil {
- t.Fatalf("NewListener failed: %v", err)
- }
+ require.NoError(t, err)
defer l.Close()
go l.Accept()
@@ -1129,9 +998,7 @@ func TestErrorCodes(t *testing.T) {
ctx := context.Background()
client, err := Connect(ctx, params)
- if err != nil {
- t.Fatalf("error in connect: %v", err)
- }
+ require.NoError(t, err)
// Test that the right mysql errno/sqlstate are returned for various
// internal vitess errors
@@ -1152,9 +1019,9 @@ func TestErrorCodes(t *testing.T) {
{
err: vterrors.Errorf(
vtrpcpb.Code_INVALID_ARGUMENT,
- "(errno %v) (sqlstate %v) invalid argument with errno", ERDupEntry, SSDupKey),
+ "(errno %v) (sqlstate %v) invalid argument with errno", ERDupEntry, SSConstraintViolation),
code: ERDupEntry,
- sqlState: SSDupKey,
+ sqlState: SSConstraintViolation,
text: "invalid argument with errno",
},
{
@@ -1162,7 +1029,7 @@ func TestErrorCodes(t *testing.T) {
vtrpcpb.Code_DEADLINE_EXCEEDED,
"connection deadline exceeded"),
code: ERQueryInterrupted,
- sqlState: SSUnknownSQLState,
+ sqlState: SSQueryInterrupted,
text: "deadline exceeded",
},
{
@@ -1170,7 +1037,7 @@ func TestErrorCodes(t *testing.T) {
vtrpcpb.Code_RESOURCE_EXHAUSTED,
"query pool timeout"),
code: ERTooManyUserConnections,
- sqlState: SSUnknownSQLState,
+ sqlState: SSClientError,
text: "resource exhausted",
},
{
@@ -1182,27 +1049,17 @@ func TestErrorCodes(t *testing.T) {
}
for _, test := range tests {
- th.SetErr(NewSQLErrorFromError(test.err))
- result, err := client.ExecuteFetch("error", 100, false)
- if err == nil {
- t.Fatalf("mysql should have failed but returned: %v", result)
- }
- serr, ok := err.(*SQLError)
- if !ok {
- t.Fatalf("mysql should have returned a SQLError")
- }
-
- if serr.Number() != test.code {
- t.Errorf("error in %s: want code %v got %v", test.text, test.code, serr.Number())
- }
-
- if serr.SQLState() != test.sqlState {
- t.Errorf("error in %s: want sqlState %v got %v", test.text, test.sqlState, serr.SQLState())
- }
-
- if !strings.Contains(serr.Error(), test.err.Error()) {
- t.Errorf("error in %s: want err %v got %v", test.text, test.err.Error(), serr.Error())
- }
+ t.Run(test.err.Error(), func(t *testing.T) {
+ th.SetErr(NewSQLErrorFromError(test.err))
+ rs, err := client.ExecuteFetch("error", 100, false)
+ require.Error(t, err, "mysql should have failed but returned: %v", rs)
+ serr, ok := err.(*SQLError)
+ require.True(t, ok, "mysql should have returned a SQLError")
+
+ assert.Equal(t, test.code, serr.Number(), "error in %s: want code %v got %v", test.text, test.code, serr.Number())
+ assert.Equal(t, test.sqlState, serr.SQLState(), "error in %s: want sqlState %v got %v", test.text, test.sqlState, serr.SQLState())
+ assert.Contains(t, serr.Error(), test.err.Error())
+ })
}
}
@@ -1219,13 +1076,9 @@ func runMysql(t *testing.T, params *ConnParams, command string) (string, bool) {
}
func runMysqlWithErr(t *testing.T, params *ConnParams, command string) (string, error) {
dir, err := vtenv.VtMysqlRoot()
- if err != nil {
- t.Fatalf("vtenv.VtMysqlRoot failed: %v", err)
- }
+ require.NoError(t, err)
name, err := binaryPath(dir, "mysql")
- if err != nil {
- t.Fatalf("binaryPath failed: %v", err)
- }
+ require.NoError(t, err)
// The args contain '-v' 3 times, to switch to very verbose output.
// In particular, it has the message:
// Query OK, 1 row affected (0.00 sec)
@@ -1307,9 +1160,7 @@ func TestListenerShutdown(t *testing.T) {
}}
defer authServer.close()
l, err := NewListener("tcp", ":0", authServer, th, 0, 0, false)
- if err != nil {
- t.Fatalf("NewListener failed: %v", err)
- }
+ require.NoError(t, err)
defer l.Close()
go l.Accept()
@@ -1322,43 +1173,29 @@ func TestListenerShutdown(t *testing.T) {
Uname: "user1",
Pass: "password1",
}
- initialconnRefuse := connRefuse.Get()
+ connRefuse.Reset()
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
conn, err := Connect(ctx, params)
- if err != nil {
- t.Fatalf("Can't connect to listener: %v", err)
- }
+ require.NoError(t, err)
- if err := conn.Ping(); err != nil {
- t.Fatalf("Ping failed: %v", err)
- }
+ err = conn.Ping()
+ require.NoError(t, err)
l.Shutdown()
- if connRefuse.Get()-initialconnRefuse != 1 {
- t.Errorf("Expected connRefuse delta=1, got %d", connRefuse.Get()-initialconnRefuse)
- }
+ assert.EqualValues(t, 1, connRefuse.Get(), "connRefuse")
- if err := conn.Ping(); err != nil {
- sqlErr, ok := err.(*SQLError)
- if !ok {
- t.Fatalf("Wrong error type: %T", err)
- }
- if sqlErr.Number() != ERServerShutdown {
- t.Fatalf("Unexpected sql error code: %d", sqlErr.Number())
- }
- if sqlErr.SQLState() != SSServerShutdown {
- t.Fatalf("Unexpected error sql state: %s", sqlErr.SQLState())
- }
- if sqlErr.Message != "Server shutdown in progress" {
- t.Fatalf("Unexpected error message: %s", sqlErr.Message)
- }
- } else {
- t.Fatalf("Ping should fail after shutdown")
- }
+ err = conn.Ping()
+ require.EqualError(t, err, "Server shutdown in progress (errno 1053) (sqlstate 08S01)")
+ sqlErr, ok := err.(*SQLError)
+ require.True(t, ok, "Wrong error type: %T", err)
+
+ require.Equal(t, ERServerShutdown, sqlErr.Number())
+ require.Equal(t, SSNetError, sqlErr.SQLState())
+ require.Equal(t, "Server shutdown in progress", sqlErr.Message)
}
func TestParseConnAttrs(t *testing.T) {
@@ -1380,20 +1217,12 @@ func TestParseConnAttrs(t *testing.T) {
0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x05, 0x6d, 0x79, 0x73, 0x71, 0x6c}
attrs, pos, err := parseConnAttrs(data, 0)
- if err != nil {
- t.Fatalf("Failed to read connection attributes: %v", err)
- }
- if pos != 113 {
- t.Fatalf("Unexpeded pos after reading connection attributes: %d instead of 113", pos)
- }
+ require.NoError(t, err)
+ require.Equal(t, 113, pos)
for k, v := range expected {
- if val, ok := attrs[k]; ok {
- if val != v {
- t.Fatalf("Unexpected value found in attrs for key %s: got %s expected %s", k, val, v)
- }
- } else {
- t.Fatalf("Error reading key %s from connection attributes: attrs: %-v", k, attrs)
- }
+ val, ok := attrs[k]
+ require.True(t, ok, "Error reading key %s from connection attributes: attrs: %-v", k, attrs)
+ require.Equal(t, v, val, "Unexpected value found in attrs for key %s", k)
}
}
@@ -1425,7 +1254,7 @@ func TestServerFlush(t *testing.T) {
flds, err := c.Fields()
require.NoError(t, err)
if duration, want := time.Since(start), 20*time.Millisecond; duration < *mysqlServerFlushDelay || duration > want {
- t.Errorf("duration: %v, want between %v and %v", duration, *mysqlServerFlushDelay, want)
+ assert.Fail(t, "duration: %v, want between %v and %v", duration, *mysqlServerFlushDelay, want)
}
want1 := []*querypb.Field{{
Name: "result",
@@ -1436,7 +1265,7 @@ func TestServerFlush(t *testing.T) {
row, err := c.FetchNext()
require.NoError(t, err)
if duration, want := time.Since(start), 50*time.Millisecond; duration < want {
- t.Errorf("duration: %v, want > %v", duration, want)
+ assert.Fail(t, "duration: %v, want > %v", duration, want)
}
want2 := []sqltypes.Value{sqltypes.MakeTrusted(querypb.Type_VARCHAR, []byte("delayed"))}
assert.Equal(t, want2, row)
diff --git a/go/mysql/sql_error.go b/go/mysql/sql_error.go
index 42f65b0a96b..fcf02abaf13 100644
--- a/go/mysql/sql_error.go
+++ b/go/mysql/sql_error.go
@@ -91,56 +91,43 @@ func NewSQLErrorFromError(err error) error {
return serr
}
+ sErr := convertToMysqlError(err)
+ if _, ok := sErr.(*SQLError); ok {
+ return sErr
+ }
+
msg := err.Error()
match := errExtract.FindStringSubmatch(msg)
if len(match) < 2 {
// Map vitess error codes into the mysql equivalent
code := vterrors.Code(err)
num := ERUnknownError
+ ss := SSUnknownSQLState
switch code {
- case vtrpcpb.Code_CANCELED:
- num = ERQueryInterrupted
- case vtrpcpb.Code_UNKNOWN:
- num = ERUnknownError
- case vtrpcpb.Code_INVALID_ARGUMENT:
- // TODO/demmer there are several more appropriate mysql error
- // codes for the various invalid argument cases.
- // it would be better to change the call sites to use
- // the mysql style "(errno X) (sqlstate Y)" format rather than
- // trying to add vitess error codes for all these cases
- num = ERUnknownError
- case vtrpcpb.Code_DEADLINE_EXCEEDED:
+ case vtrpcpb.Code_CANCELED, vtrpcpb.Code_DEADLINE_EXCEEDED, vtrpcpb.Code_ABORTED:
num = ERQueryInterrupted
- case vtrpcpb.Code_NOT_FOUND:
- num = ERUnknownError
- case vtrpcpb.Code_ALREADY_EXISTS:
+ ss = SSQueryInterrupted
+ case vtrpcpb.Code_UNKNOWN, vtrpcpb.Code_INVALID_ARGUMENT, vtrpcpb.Code_NOT_FOUND, vtrpcpb.Code_ALREADY_EXISTS,
+ vtrpcpb.Code_FAILED_PRECONDITION, vtrpcpb.Code_OUT_OF_RANGE, vtrpcpb.Code_UNAVAILABLE, vtrpcpb.Code_DATA_LOSS:
num = ERUnknownError
- case vtrpcpb.Code_PERMISSION_DENIED:
- num = ERAccessDeniedError
- case vtrpcpb.Code_UNAUTHENTICATED:
+ case vtrpcpb.Code_PERMISSION_DENIED, vtrpcpb.Code_UNAUTHENTICATED:
num = ERAccessDeniedError
+ ss = SSAccessDeniedError
case vtrpcpb.Code_RESOURCE_EXHAUSTED:
num = demuxResourceExhaustedErrors(err.Error())
- case vtrpcpb.Code_FAILED_PRECONDITION:
- num = ERUnknownError
- case vtrpcpb.Code_ABORTED:
- num = ERQueryInterrupted
- case vtrpcpb.Code_OUT_OF_RANGE:
- num = ERUnknownError
+ ss = SSClientError
case vtrpcpb.Code_UNIMPLEMENTED:
num = ERNotSupportedYet
+ ss = SSClientError
case vtrpcpb.Code_INTERNAL:
- num = ERUnknownError
- case vtrpcpb.Code_UNAVAILABLE:
- num = ERUnknownError
- case vtrpcpb.Code_DATA_LOSS:
- num = ERUnknownError
+ num = ERInternalError
+ ss = SSUnknownSQLState
}
// Not found, build a generic SQLError.
return &SQLError{
Num: num,
- State: SSUnknownSQLState,
+ State: ss,
Message: msg,
}
}
@@ -162,6 +149,58 @@ func NewSQLErrorFromError(err error) error {
return serr
}
+var stateToMysqlCode = map[vterrors.State]struct {
+ num int
+ state string
+}{
+ vterrors.Undefined: {num: ERUnknownError, state: SSUnknownSQLState},
+ vterrors.AccessDeniedError: {num: ERAccessDeniedError, state: SSAccessDeniedError},
+ vterrors.BadDb: {num: ERBadDb, state: SSClientError},
+ vterrors.BadFieldError: {num: ERBadFieldError, state: SSBadFieldError},
+ vterrors.CantUseOptionHere: {num: ERCantUseOptionHere, state: SSClientError},
+ vterrors.DataOutOfRange: {num: ERDataOutOfRange, state: SSDataOutOfRange},
+ vterrors.DbCreateExists: {num: ERDbCreateExists, state: SSUnknownSQLState},
+ vterrors.DbDropExists: {num: ERDbDropExists, state: SSUnknownSQLState},
+ vterrors.EmptyQuery: {num: EREmptyQuery, state: SSClientError},
+ vterrors.IncorrectGlobalLocalVar: {num: ERIncorrectGlobalLocalVar, state: SSUnknownSQLState},
+ vterrors.InnodbReadOnly: {num: ERInnodbReadOnly, state: SSUnknownSQLState},
+ vterrors.LockOrActiveTransaction: {num: ERLockOrActiveTransaction, state: SSUnknownSQLState},
+ vterrors.NoDB: {num: ERNoDb, state: SSNoDB},
+ vterrors.NoSuchTable: {num: ERNoSuchTable, state: SSUnknownTable},
+ vterrors.NotSupportedYet: {num: ERNotSupportedYet, state: SSClientError},
+ vterrors.ForbidSchemaChange: {num: ERForbidSchemaChange, state: SSUnknownSQLState},
+ vterrors.NetPacketTooLarge: {num: ERNetPacketTooLarge, state: SSNetError},
+ vterrors.NonUniqTable: {num: ERNonUniqTable, state: SSClientError},
+ vterrors.QueryInterrupted: {num: ERQueryInterrupted, state: SSQueryInterrupted},
+ vterrors.SPDoesNotExist: {num: ERSPDoesNotExist, state: SSClientError},
+ vterrors.SyntaxError: {num: ERSyntaxError, state: SSClientError},
+ vterrors.UnsupportedPS: {num: ERUnsupportedPS, state: SSUnknownSQLState},
+ vterrors.UnknownSystemVariable: {num: ERUnknownSystemVariable, state: SSUnknownSQLState},
+ vterrors.UnknownTable: {num: ERUnknownTable, state: SSUnknownTable},
+ vterrors.WrongGroupField: {num: ERWrongGroupField, state: SSClientError},
+ vterrors.WrongNumberOfColumnsInSelect: {num: ERWrongNumberOfColumnsInSelect, state: SSWrongNumberOfColumns},
+ vterrors.WrongTypeForVar: {num: ERWrongTypeForVar, state: SSClientError},
+ vterrors.WrongValueForVar: {num: ERWrongValueForVar, state: SSClientError},
+}
+
+func init() {
+ if len(stateToMysqlCode) != int(vterrors.NumOfStates) {
+ panic("all vterrors states are not mapped to mysql errors")
+ }
+}
+
+func convertToMysqlError(err error) error {
+ errState := vterrors.ErrState(err)
+ if errState == vterrors.Undefined {
+ return err
+ }
+ mysqlCode, ok := stateToMysqlCode[errState]
+ if !ok {
+ return err
+ }
+ return NewSQLError(mysqlCode.num, mysqlCode.state, err.Error())
+}
+
var isGRPCOverflowRE = regexp.MustCompile(`.*grpc: received message larger than max \(\d+ vs. \d+\)`)
func demuxResourceExhaustedErrors(msg string) int {
diff --git a/go/mysql/sql_error_test.go b/go/mysql/sql_error_test.go
index d12e11ba1cd..223d26ce2c4 100644
--- a/go/mysql/sql_error_test.go
+++ b/go/mysql/sql_error_test.go
@@ -19,6 +19,11 @@ package mysql
import (
"testing"
+ "github.com/stretchr/testify/require"
+
+ "vitess.io/vitess/go/vt/proto/vtrpc"
+ "vitess.io/vitess/go/vt/vterrors"
+
"github.com/stretchr/testify/assert"
)
@@ -43,3 +48,117 @@ func TestDumuxResourceExhaustedErrors(t *testing.T) {
assert.Equalf(t, c.want, got, c.msg)
}
}
+
+func TestNewSQLErrorFromError(t *testing.T) {
+ var tCases = []struct {
+ err error
+ num int
+ ss string
+ }{
+ {
+ err: vterrors.Errorf(vtrpc.Code_OK, "ok"),
+ num: ERUnknownError,
+ ss: SSUnknownSQLState,
+ },
+ {
+ err: vterrors.Errorf(vtrpc.Code_CANCELED, "cancelled"),
+ num: ERQueryInterrupted,
+ ss: SSQueryInterrupted,
+ },
+ {
+ err: vterrors.Errorf(vtrpc.Code_UNKNOWN, "unknown"),
+ num: ERUnknownError,
+ ss: SSUnknownSQLState,
+ },
+ {
+ err: vterrors.Errorf(vtrpc.Code_INVALID_ARGUMENT, "invalid argument"),
+ num: ERUnknownError,
+ ss: SSUnknownSQLState,
+ },
+ {
+ err: vterrors.Errorf(vtrpc.Code_DEADLINE_EXCEEDED, "deadline exceeded"),
+ num: ERQueryInterrupted,
+ ss: SSQueryInterrupted,
+ },
+ {
+ err: vterrors.Errorf(vtrpc.Code_NOT_FOUND, "code not found"),
+ num: ERUnknownError,
+ ss: SSUnknownSQLState,
+ },
+ {
+ err: vterrors.Errorf(vtrpc.Code_ALREADY_EXISTS, "already exists"),
+ num: ERUnknownError,
+ ss: SSUnknownSQLState,
+ },
+ {
+ err: vterrors.Errorf(vtrpc.Code_PERMISSION_DENIED, "permission denied"),
+ num: ERAccessDeniedError,
+ ss: SSAccessDeniedError,
+ },
+ {
+ err: vterrors.Errorf(vtrpc.Code_UNAUTHENTICATED, "unauthenticated"),
+ num: ERAccessDeniedError,
+ ss: SSAccessDeniedError,
+ },
+ {
+ err: vterrors.Errorf(vtrpc.Code_RESOURCE_EXHAUSTED, "resource exhausted"),
+ num: ERTooManyUserConnections,
+ ss: SSClientError,
+ },
+ {
+ err: vterrors.Errorf(vtrpc.Code_FAILED_PRECONDITION, "failed precondition"),
+ num: ERUnknownError,
+ ss: SSUnknownSQLState,
+ },
+ {
+ err: vterrors.Errorf(vtrpc.Code_ABORTED, "aborted"),
+ num: ERQueryInterrupted,
+ ss: SSQueryInterrupted,
+ },
+ {
+ err: vterrors.Errorf(vtrpc.Code_OUT_OF_RANGE, "out of range"),
+ num: ERUnknownError,
+ ss: SSUnknownSQLState,
+ },
+ {
+ err: vterrors.Errorf(vtrpc.Code_UNIMPLEMENTED, "unimplemented"),
+ num: ERNotSupportedYet,
+ ss: SSClientError,
+ },
+ {
+ err: vterrors.Errorf(vtrpc.Code_INTERNAL, "internal"),
+ num: ERInternalError,
+ ss: SSUnknownSQLState,
+ },
+ {
+ err: vterrors.Errorf(vtrpc.Code_UNAVAILABLE, "unavailable"),
+ num: ERUnknownError,
+ ss: SSUnknownSQLState,
+ },
+ {
+ err: vterrors.Errorf(vtrpc.Code_DATA_LOSS, "data loss"),
+ num: ERUnknownError,
+ ss: SSUnknownSQLState,
+ },
+ {
+ err: vterrors.NewErrorf(vtrpc.Code_ALREADY_EXISTS, vterrors.DbCreateExists, "create db exists"),
+ num: ERDbCreateExists,
+ ss: SSUnknownSQLState,
+ },
+ {
+ err: vterrors.NewErrorf(vtrpc.Code_FAILED_PRECONDITION, vterrors.NoDB, "no db selected"),
+ num: ERNoDb,
+ ss: SSNoDB,
+ },
+ }
+
+ for _, tc := range tCases {
+ t.Run(tc.err.Error(), func(t *testing.T) {
+ err := NewSQLErrorFromError(tc.err)
+ sErr, ok := err.(*SQLError)
+ require.True(t, ok)
+ assert.Equal(t, tc.num, sErr.Number())
+ assert.Equal(t, tc.ss, sErr.SQLState())
+ })
+ }
+}
diff --git a/go/pools/numbered.go b/go/pools/numbered.go
index 1f88ae3d7da..04cc5807d55 100644
--- a/go/pools/numbered.go
+++ b/go/pools/numbered.go
@@ -47,15 +47,13 @@ type unregistered struct {
timeUnregistered time.Time
}
-func (u *unregistered) Size() int {
- return 1
-}
-
//NewNumbered creates a new numbered
func NewNumbered() *Numbered {
n := &Numbered{
- resources: make(map[int64]*numberedWrapper),
- recentlyUnregistered: cache.NewLRUCache(1000),
+ resources: make(map[int64]*numberedWrapper),
+ recentlyUnregistered: cache.NewLRUCache(1000, func(_ interface{}) int64 {
+ return 1
+ }),
}
n.empty = sync.NewCond(&n.mu)
return n
diff --git a/go/proc/counting_listener.go b/go/proc/counting_listener.go
deleted file mode 100644
index fe29bbccabf..00000000000
--- a/go/proc/counting_listener.go
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-Copyright 2019 The Vitess Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package proc
-
-import (
- "net"
-
- "vitess.io/vitess/go/stats"
-)
-
-type CountingListener struct {
- net.Listener
- ConnCount *stats.Gauge
- ConnAccept *stats.Counter
-}
-
-type countingConnection struct {
- net.Conn
- listener *CountingListener
-}
-
-// Published creates a wrapper for net.Listener that
-// publishes connection stats.
-func Published(l net.Listener, countTag, acceptTag string) net.Listener {
- return &CountingListener{
- Listener: l,
- ConnCount: stats.NewGauge(countTag, "Active connections accepted by counting listener"),
- ConnAccept: stats.NewCounter(acceptTag, "Count of connections accepted by the counting listener"),
- }
-}
-
-// Accept increments stats counters before returning
-// a connection.
-func (l *CountingListener) Accept() (c net.Conn, err error) {
- conn, err := l.Listener.Accept()
- if err != nil {
- return nil, err
- }
- l.ConnCount.Add(1)
- l.ConnAccept.Add(1)
- return &countingConnection{conn, l}, nil
-}
-
-// Close decrements the stats counter and
-// closes the connection.
-func (c *countingConnection) Close() error {
- if c.listener != nil {
- c.listener.ConnCount.Add(-1)
- c.listener = nil
- }
- return c.Conn.Close()
-}
diff --git a/go/proc/counting_listener_test.go b/go/proc/counting_listener_test.go
deleted file mode 100644
index 4b4a20a1d42..00000000000
--- a/go/proc/counting_listener_test.go
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
-Copyright 2019 The Vitess Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package proc
-
-import (
- "expvar"
- "fmt"
- "net"
- "testing"
-)
-
-func TestPublished(t *testing.T) {
- l, err := Listen("")
- if err != nil {
- t.Fatal(err)
- }
- opened := make(chan struct{})
- closed := make(chan struct{})
- go func() {
- for {
- conn, err := l.Accept()
- opened <- struct{}{}
- if err != nil {
- t.Error(err)
- }
- go func() {
- b := make([]byte, 100)
- for {
- _, err := conn.Read(b)
- if err != nil {
- conn.Close()
- closed <- struct{}{}
- return
- }
- }
- }()
- }
- }()
-
- addr := l.Addr().String()
- for i := 1; i <= 3; i++ {
- conn1, err := net.Dial("tcp", addr)
- if err != nil {
- t.Fatal(err)
- }
- <-opened
- if v := expvar.Get("ConnCount").String(); v != "1" {
- t.Errorf("ConnCount: %v, want 1", v)
- }
- conn1.Close()
- <-closed
- if v := expvar.Get("ConnCount").String(); v != "0" {
- t.Errorf("ConnCount: %v, want 1", v)
- }
- if v := expvar.Get("ConnAccepted").String(); v != fmt.Sprintf("%d", i) {
- t.Errorf("ConnAccepted: %v, want %d", v, i)
- }
- }
-}
diff --git a/go/proc/proc.go b/go/proc/proc.go
deleted file mode 100644
index 54152c167aa..00000000000
--- a/go/proc/proc.go
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
-Copyright 2019 The Vitess Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-// Package proc allows you to configure servers to be
-// restarted with negligible downtime.
-package proc
-
-import (
- "fmt"
- "io/ioutil"
- "net"
- "net/http"
- "os"
- "os/signal"
- "strconv"
- "strings"
- "syscall"
- "time"
-
- "vitess.io/vitess/go/vt/log"
-)
-
-const pidURL = "/debug/pid"
-
-// Listen tries to create a listener on the specified tcp port.
-// Before creating the listener, it checks to see if there is another
-// server already using the port. If there is one, it sends a USR1
-// signal requesting the server to shutdown, and then attempts to
-// to create the listener.
-func Listen(port string) (l net.Listener, err error) {
- if port != "" {
- killPredecessor(port)
- }
- return listen(port)
-}
-
-// Wait creates an HTTP handler on pidURL, and serves the current process
-// pid on it. It then creates a signal handler and waits for SIGTERM or
-// SIGUSR1, and returns when the signal is received. A new server that comes
-// up will query this URL. If it receives a valid response, it will send a
-// SIGUSR1 signal and attempt to bind to the port the current server is using.
-func Wait() os.Signal {
- c := make(chan os.Signal, 1)
- signal.Notify(c, syscall.SIGTERM, syscall.SIGUSR1, syscall.SIGINT)
-
- http.HandleFunc(pidURL, func(r http.ResponseWriter, req *http.Request) {
- r.Write(strconv.AppendInt(nil, int64(os.Getpid()), 10))
- })
-
- return <-c
-}
-
-// ListenAndServe combines Listen and Wait to also run an http
-// server on the specified port. If it fails to obtain a listener,
-// the program is fatally terminated. The return value is the signal
-// received for termination
-func ListenAndServe(port string) os.Signal {
- l, err := Listen(port)
- if err != nil {
- log.Fatalf("%s", err)
- }
- go http.Serve(l, nil)
- s := Wait()
- l.Close()
- return s
-}
-
-func killPredecessor(port string) {
- resp, err := http.Get(fmt.Sprintf("http://localhost:%s%s", port, pidURL))
- if err != nil {
- if !strings.Contains(err.Error(), "connection refused") {
- log.Errorf("unexpected error on port %v: %v, trying to start anyway", port, err)
- }
- return
- }
- num, err := ioutil.ReadAll(resp.Body)
- resp.Body.Close()
- if err != nil {
- log.Errorf("could not read pid: %vd, trying to start anyway", err)
- return
- }
- pid, err := strconv.Atoi(string(num))
- if err != nil {
- log.Errorf("could not read pid: %vd, trying to start anyway", err)
- return
- }
- err = syscall.Kill(pid, syscall.SIGUSR1)
- if err != nil {
- log.Errorf("error killing %v: %v, trying to start anyway", pid, err)
- }
-}
-
-func listen(port string) (l net.Listener, err error) {
- laddr := ":" + port
- if laddr == ":" {
- laddr = ":0"
- }
- for i := 0; i < 100; i++ {
- l, err = net.Listen("tcp", laddr)
- if err != nil {
- if strings.Contains(err.Error(), "already in use") {
- time.Sleep(1 * time.Millisecond)
- continue
- }
- return nil, err
- }
- break
- }
- return Published(l, "ConnCount", "ConnAccepted"), err
-}
diff --git a/go/proc/proc_flaky_test.go b/go/proc/proc_flaky_test.go
deleted file mode 100644
index 4c9d6aa6c2e..00000000000
--- a/go/proc/proc_flaky_test.go
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
-Copyright 2019 The Vitess Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package proc
-
-import (
- "fmt"
- "io/ioutil"
- "net"
- "net/http"
- "os"
- "os/exec"
- "strconv"
- "strings"
- "syscall"
- "testing"
- "time"
-
- "github.com/stretchr/testify/require"
-)
-
-func TestRestart(t *testing.T) {
- if testing.Short() {
- t.Skip("skipping integration test in short mode.")
- }
-
- switch os.Getenv("SERVER_NUM") {
- case "":
- testLaunch(t)
- case "1":
- testServer(t, syscall.SIGUSR1)
- case "2":
- testServer(t, syscall.SIGTERM)
- }
-}
-
-func testLaunch(t *testing.T) {
- var err error
- l, err := net.Listen("tcp", "")
- if err != nil {
- t.Fatalf("could not initialize listener: %v", err)
- }
- hostport := l.Addr().String()
- l.Close()
- _, port, err := net.SplitHostPort(hostport)
- if err != nil {
- t.Fatal(err)
- }
-
- cmd1 := launchServer(t, port, 1)
- defer cmd1.Process.Kill()
- testPid(t, port, cmd1.Process.Pid)
-
- cmd2 := launchServer(t, port, 2)
- defer cmd2.Process.Kill()
- err = cmd1.Wait()
- require.NoError(t, err)
- testPid(t, port, cmd2.Process.Pid)
-
- err = syscall.Kill(cmd2.Process.Pid, syscall.SIGTERM)
- require.NoError(t, err)
- err = cmd2.Wait()
- require.NoError(t, err)
-}
-
-func launchServer(t *testing.T, port string, num int) *exec.Cmd {
- cmd := exec.Command(os.Args[0], "-test.run=^TestRestart$")
- cmd.Env = []string{
- fmt.Sprintf("SERVER_NUM=%d", num),
- fmt.Sprintf("PORT=%s", port),
- }
- cmd.Stdin = os.Stdin
- cmd.Stdout = os.Stdout
- cmd.Stderr = os.Stderr
- err := cmd.Start()
- if err != nil {
- t.Fatal(err)
- }
- return cmd
-}
-
-func testPid(t *testing.T, port string, want int) {
- var resp *http.Response
- var err error
- retryIntervalMs := 50
- // Retry up to two seconds.
- for i := 0; i < (2000 / retryIntervalMs); i++ {
- resp, err = http.Get(fmt.Sprintf("http://localhost:%s%s", port, pidURL))
- var retryableErr bool
- if err != nil {
- if strings.Contains(err.Error(), "connection refused") || strings.Contains(err.Error(), "EOF") ||
- strings.Contains(err.Error(), "net/http: transport closed before response was received") ||
- strings.Contains(err.Error(), "http: can't write HTTP request on broken connection") {
- retryableErr = true
- }
- }
- if err == nil && resp.StatusCode != http.StatusOK {
- err = fmt.Errorf("http request was not successful. status: %v", resp.Status)
- if resp.StatusCode == http.StatusNotFound {
- // Observable when the handler is not installed yet.
- retryableErr = true
- }
- }
- if err != nil && retryableErr {
- time.Sleep(50 * time.Millisecond)
- continue
- }
- break
- }
- if err != nil {
- t.Fatalf("unexpected error on port %v: %v", port, err)
- }
- num, err := ioutil.ReadAll(resp.Body)
- resp.Body.Close()
- if err != nil {
- t.Fatalf("could not read pid: %vd", err)
- }
- got, err := strconv.Atoi(string(num))
- if err != nil {
- t.Fatalf("could not read pid: %vd", err)
- }
- if want != got {
- t.Errorf("want %d, got %d", want, got)
- }
-}
-
-func testServer(t *testing.T, want syscall.Signal) {
- l, err := Listen(os.Getenv("PORT"))
- if err != nil {
- t.Fatalf("could not initialize listener: %v", err)
- }
- go http.Serve(l, nil)
- got := Wait()
- l.Close()
- if want != got {
- t.Errorf("want %v, got %v", want, got)
- }
-}
diff --git a/go/protoutil/doc.go b/go/protoutil/doc.go
new file mode 100644
index 00000000000..15a0aad339e
--- /dev/null
+++ b/go/protoutil/doc.go
@@ -0,0 +1,25 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+/*
+Package protoutil provides helper functions for working with well-known protobuf
+types.
+
+It aims to serve a purpose similar to packages topoproto and mysqlctlproto, but
+for general, common types, rather than types related to a particular Vitess RPC
+service.
+*/
+package protoutil
diff --git a/go/protoutil/duration.go b/go/protoutil/duration.go
new file mode 100644
index 00000000000..f959b15e5e4
--- /dev/null
+++ b/go/protoutil/duration.go
@@ -0,0 +1,57 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package protoutil
+
+import (
+ "fmt"
+ "time"
+
+ "vitess.io/vitess/go/vt/proto/vttime"
+)
+
+// DurationFromProto converts a durationpb type to a time.Duration. It returns a
+// three-tuple of (dgo, ok, err) where dgo is the go time.Duration, ok indicates
+// whether the proto value was set, and err is set on failure to convert the
+// proto value.
+func DurationFromProto(dpb *vttime.Duration) (time.Duration, bool, error) {
+ if dpb == nil {
+ return 0, false, nil
+ }
+
+ d := time.Duration(dpb.Seconds) * time.Second
+ if int64(d/time.Second) != dpb.Seconds {
+ return 0, true, fmt.Errorf("duration: %v is out of range for time.Duration", dpb)
+ }
+ if dpb.Nanos != 0 {
+ d += time.Duration(dpb.Nanos) * time.Nanosecond
+ if (d < 0) != (dpb.Nanos < 0) {
+ return 0, true, fmt.Errorf("duration: %v is out of range for time.Duration", dpb)
+ }
+ }
+ return d, true, nil
+}
+
+// DurationToProto converts a time.Duration to a durpb.Duration.
+func DurationToProto(d time.Duration) *vttime.Duration {
+ nanos := d.Nanoseconds()
+ secs := nanos / 1e9
+ nanos -= secs * 1e9
+ return &vttime.Duration{
+ Seconds: secs,
+ Nanos: int32(nanos),
+ }
+}
diff --git a/go/protoutil/duration_test.go b/go/protoutil/duration_test.go
new file mode 100644
index 00000000000..20f01482563
--- /dev/null
+++ b/go/protoutil/duration_test.go
@@ -0,0 +1,82 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package protoutil
+
+import (
+ "testing"
+ "time"
+
+ "github.com/stretchr/testify/assert"
+
+ "vitess.io/vitess/go/vt/proto/vttime"
+)
+
+func TestDurationFromProto(t *testing.T) {
+ t.Parallel()
+
+ tests := []struct {
+ name string
+ in *vttime.Duration
+ expected time.Duration
+ isOk bool
+ shouldErr bool
+ }{
+ {
+ name: "success",
+ in: &vttime.Duration{Seconds: 1000},
+ expected: time.Second * 1000,
+ isOk: true,
+ shouldErr: false,
+ },
+ {
+ name: "nil value",
+ in: nil,
+ expected: 0,
+ isOk: false,
+ shouldErr: false,
+ },
+ {
+ name: "error",
+ in: &vttime.Duration{
+ // This is the max allowed seconds for a durationpb, plus 1.
+ Seconds: int64(10000*365.25*24*60*60) + 1,
+ },
+ expected: 0,
+ isOk: true,
+ shouldErr: true,
+ },
+ }
+
+ for _, tt := range tests {
+ tt := tt
+
+ t.Run(tt.name, func(t *testing.T) {
+ t.Parallel()
+
+ actual, ok, err := DurationFromProto(tt.in)
+ if tt.shouldErr {
+ assert.Error(t, err)
+ assert.Equal(t, tt.isOk, ok, "expected (_, ok, _) = DurationFromProto; to be ok = %v", tt.isOk)
+ return
+ }
+
+ assert.NoError(t, err)
+ assert.Equal(t, tt.expected, actual)
+ assert.Equal(t, tt.isOk, ok, "expected (_, ok, _) = DurationFromProto; to be ok = %v", tt.isOk)
+ })
+ }
+}
diff --git a/go/sqltypes/bind_variables.go b/go/sqltypes/bind_variables.go
index 3c9bc6bbe9e..9d60c1c8e1a 100644
--- a/go/sqltypes/bind_variables.go
+++ b/go/sqltypes/bind_variables.go
@@ -75,12 +75,12 @@ func Int32BindVariable(v int32) *querypb.BindVariable {
return ValueBindVariable(NewInt32(v))
}
-// BoolBindVariable converts an bool to a int32 bind var.
+// BoolBindVariable converts an bool to a int64 bind var.
func BoolBindVariable(v bool) *querypb.BindVariable {
if v {
- return Int32BindVariable(1)
+ return Int64BindVariable(1)
}
- return Int32BindVariable(0)
+ return Int64BindVariable(0)
}
// Int64BindVariable converts an int64 to a bind var.
diff --git a/go/sqltypes/named_result.go b/go/sqltypes/named_result.go
index 7a67b5d4489..6d1621a8f1a 100644
--- a/go/sqltypes/named_result.go
+++ b/go/sqltypes/named_result.go
@@ -78,6 +78,22 @@ func (r RowNamedValues) AsUint64(fieldName string, def uint64) uint64 {
return def
}
+// AsFloat64 returns the named field as float64, or default value if nonexistent/error
+func (r RowNamedValues) AsFloat64(fieldName string, def float64) float64 {
+ if v, err := r.ToFloat64(fieldName); err == nil {
+ return v
+ }
+ return def
+}
+
+// ToFloat64 returns the named field as float64
+func (r RowNamedValues) ToFloat64(fieldName string) (float64, error) {
+ if v, ok := r[fieldName]; ok {
+ return v.ToFloat64()
+ }
+ return 0, ErrNoSuchField
+}
+
// ToBool returns the named field as bool
func (r RowNamedValues) ToBool(fieldName string) (bool, error) {
if v, ok := r[fieldName]; ok {
diff --git a/go/sqltypes/result.go b/go/sqltypes/result.go
index d033d9ad5ca..7df1ef2aebf 100644
--- a/go/sqltypes/result.go
+++ b/go/sqltypes/result.go
@@ -31,8 +31,27 @@ type Result struct {
InsertID uint64 `json:"insert_id"`
Rows [][]Value `json:"rows"`
SessionStateChanges string `json:"session_state_changes"`
+ StatusFlags uint16 `json:"status_flags"`
}
+//goland:noinspection GoUnusedConst
+const (
+ ServerStatusInTrans = 0x0001
+ ServerStatusAutocommit = 0x0002
+ ServerMoreResultsExists = 0x0008
+ ServerStatusNoGoodIndexUsed = 0x0010
+ ServerStatusNoIndexUsed = 0x0020
+ ServerStatusCursorExists = 0x0040
+ ServerStatusLastRowSent = 0x0080
+ ServerStatusDbDropped = 0x0100
+ ServerStatusNoBackslashEscapes = 0x0200
+ ServerStatusMetadataChanged = 0x0400
+ ServerQueryWasSlow = 0x0800
+ ServerPsOutParams = 0x1000
+ ServerStatusInTransReadonly = 0x2000
+ ServerSessionStateChanged = 0x4000
+)
+
// ResultStream is an interface for receiving Result. It is used for
// RPC interfaces.
type ResultStream interface {
@@ -220,7 +239,7 @@ func (result *Result) StripMetadata(incl querypb.ExecuteOptions_IncludedFields)
// to another result.Note currently it doesn't handle cases like
// if two results have different fields.We will enhance this function.
func (result *Result) AppendResult(src *Result) {
- if src.RowsAffected == 0 && len(src.Fields) == 0 {
+ if src.RowsAffected == 0 && len(src.Rows) == 0 && len(src.Fields) == 0 {
return
}
if result.Fields == nil {
@@ -237,3 +256,13 @@ func (result *Result) AppendResult(src *Result) {
func (result *Result) Named() *NamedResult {
return ToNamedResult(result)
}
+
+// IsMoreResultsExists returns true if the status flag has SERVER_MORE_RESULTS_EXISTS set
+func (result *Result) IsMoreResultsExists() bool {
+ return result.StatusFlags&ServerMoreResultsExists == ServerMoreResultsExists
+}
+
+// IsInTransaction returns true if the status flag has SERVER_STATUS_IN_TRANS set
+func (result *Result) IsInTransaction() bool {
+ return result.StatusFlags&ServerStatusInTrans == ServerStatusInTrans
+}
diff --git a/go/sqltypes/testing.go b/go/sqltypes/testing.go
index 932b4b6573c..54cfdcedef8 100644
--- a/go/sqltypes/testing.go
+++ b/go/sqltypes/testing.go
@@ -73,7 +73,6 @@ func MakeTestResult(fields []*querypb.Field, rows ...string) *Result {
result.Rows[i][j] = MakeTrusted(fields[j].Type, []byte(col))
}
}
- result.RowsAffected = uint64(len(result.Rows))
return result
}
diff --git a/go/sqltypes/value.go b/go/sqltypes/value.go
index 550e8b86eaf..8b8bf84ad5c 100644
--- a/go/sqltypes/value.go
+++ b/go/sqltypes/value.go
@@ -23,6 +23,7 @@ import (
"errors"
"fmt"
"strconv"
+ "strings"
"vitess.io/vitess/go/bytes2"
"vitess.io/vitess/go/hack"
@@ -399,6 +400,31 @@ func encodeBytesSQL(val []byte, b BinWriter) {
b.Write(buf.Bytes())
}
+// BufEncodeStringSQL encodes the string into a strings.Builder
+func BufEncodeStringSQL(buf *strings.Builder, val string) {
+ buf.WriteByte('\'')
+ for _, ch := range val {
+ if ch > 255 {
+ buf.WriteRune(ch)
+ continue
+ }
+ if encodedChar := SQLEncodeMap[ch]; encodedChar == DontEscape {
+ buf.WriteRune(ch)
+ } else {
+ buf.WriteByte('\\')
+ buf.WriteByte(encodedChar)
+ }
+ }
+ buf.WriteByte('\'')
+}
+
+// EncodeStringSQL encodes the string as a SQL string.
+func EncodeStringSQL(val string) string {
+ var buf strings.Builder
+ BufEncodeStringSQL(&buf, val)
+ return buf.String()
+}
+
func encodeBytesSQLBits(val []byte, b BinWriter) {
fmt.Fprint(b, "b'")
for _, ch := range val {
diff --git a/go/stats/histogram.go b/go/stats/histogram.go
index 11844f253ce..3fe3562cade 100644
--- a/go/stats/histogram.go
+++ b/go/stats/histogram.go
@@ -27,6 +27,7 @@ import (
// splitting the counts under different buckets
// using specified cutoffs.
type Histogram struct {
+ name string
help string
cutoffs []int64
labels []string
@@ -60,6 +61,7 @@ func NewGenericHistogram(name, help string, cutoffs []int64, labels []string, co
panic("mismatched cutoff and label lengths")
}
h := &Histogram{
+ name: name,
help: help,
cutoffs: cutoffs,
labels: labels,
@@ -85,6 +87,9 @@ func (h *Histogram) Add(value int64) {
if h.hook != nil {
h.hook(value)
}
+ if defaultStatsdHook.histogramHook != nil && h.name != "" {
+ defaultStatsdHook.histogramHook(h.name, value)
+ }
}
// String returns a string representation of the Histogram.
diff --git a/go/stats/hooks.go b/go/stats/hooks.go
new file mode 100644
index 00000000000..8a13d0c2bae
--- /dev/null
+++ b/go/stats/hooks.go
@@ -0,0 +1,34 @@
+/*
+Copyright 2019 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package stats
+
+type statsdHook struct {
+ timerHook func(string, string, int64, *Timings)
+ histogramHook func(string, int64)
+}
+
+var defaultStatsdHook = statsdHook{}
+
+// RegisterTimerHook registers timer hook
+func RegisterTimerHook(hook func(string, string, int64, *Timings)) {
+ defaultStatsdHook.timerHook = hook
+}
+
+// RegisterHistogramHook registers timer hook
+func RegisterHistogramHook(hook func(string, int64)) {
+ defaultStatsdHook.histogramHook = hook
+}
diff --git a/go/stats/statsd/statsd.go b/go/stats/statsd/statsd.go
index 1011d16fb0b..aa54ffab506 100644
--- a/go/stats/statsd/statsd.go
+++ b/go/stats/statsd/statsd.go
@@ -46,25 +46,6 @@ func makeLabels(labelNames []string, labelValsCombined string) []string {
return tags
}
-func (sb StatsBackend) addHistogram(name string, h *stats.Histogram, tags []string) {
- labels := h.Labels()
- buckets := h.Buckets()
- for i := range labels {
- name := fmt.Sprintf("%s.%s", name, labels[i])
- sb.statsdClient.Gauge(name, float64(buckets[i]), tags, sb.sampleRate)
- }
- sb.statsdClient.Gauge(fmt.Sprintf("%s.%s", name, h.CountLabel()),
- (float64)(h.Count()),
- tags,
- sb.sampleRate,
- )
- sb.statsdClient.Gauge(fmt.Sprintf("%s.%s", name, h.TotalLabel()),
- (float64)(h.Total()),
- tags,
- sb.sampleRate,
- )
-}
-
// Init initializes the statsd with the given namespace.
func Init(namespace string) {
servenv.OnRun(func() {
@@ -81,16 +62,23 @@ func Init(namespace string) {
sb.statsdClient = statsdC
sb.sampleRate = *statsdSampleRate
stats.RegisterPushBackend("statsd", sb)
+ stats.RegisterTimerHook(func(statsName, name string, value int64, timings *stats.Timings) {
+ tags := makeLabels(strings.Split(timings.Label(), "."), name)
+ if err := statsdC.TimeInMilliseconds(statsName, float64(value), tags, sb.sampleRate); err != nil {
+ log.Errorf("Fail to TimeInMilliseconds %v: %v", statsName, err)
+ }
+ })
+ stats.RegisterHistogramHook(func(name string, val int64) {
+ if err := statsdC.Histogram(name, float64(val), []string{}, sb.sampleRate); err != nil {
+ log.Errorf("Fail to Histogram for %v: %v", name, err)
+ }
+ })
})
}
func (sb StatsBackend) addExpVar(kv expvar.KeyValue) {
k := kv.Key
switch v := kv.Value.(type) {
- case *stats.String:
- if err := sb.statsdClient.Set(k, v.Get(), nil, sb.sampleRate); err != nil {
- log.Errorf("Failed to add String %v for key %v", v, k)
- }
case *stats.Counter:
if err := sb.statsdClient.Count(k, v.Get(), nil, sb.sampleRate); err != nil {
log.Errorf("Failed to add Counter %v for key %v", v, k)
@@ -159,25 +147,9 @@ func (sb StatsBackend) addExpVar(kv expvar.KeyValue) {
log.Errorf("Failed to add GaugesWithSingleLabel %v for key %v", v, k)
}
}
- case *stats.MultiTimings:
- labels := v.Labels()
- hists := v.Histograms()
- for labelValsCombined, histogram := range hists {
- sb.addHistogram(k, histogram, makeLabels(labels, labelValsCombined))
- }
- case *stats.Timings:
- // TODO: for statsd.timing metrics, there is no good way to transfer the histogram to it
- // If we store a in memory buffer for stats.Timings and flush it here it's hard to make the stats
- // thread safe.
- // Instead, we export the timings stats as histogram here. We won't have the percentile breakdown
- // for the metrics, but we can still get the average from total and count
- labels := []string{v.Label()}
- hists := v.Histograms()
- for labelValsCombined, histogram := range hists {
- sb.addHistogram(k, histogram, makeLabels(labels, labelValsCombined))
- }
- case *stats.Histogram:
- sb.addHistogram(k, v, []string{})
+ case *stats.Timings, *stats.MultiTimings, *stats.Histogram:
+ // it does not make sense to export static expvar to statsd,
+ // instead we rely on hooks to integrate with statsd' timing and histogram api directly
case expvar.Func:
// Export memstats as gauge so that we don't need to call extra ReadMemStats
if k == "memstats" {
@@ -209,7 +181,7 @@ func (sb StatsBackend) addExpVar(kv expvar.KeyValue) {
}
}
}
- case *stats.StringMapFunc, *stats.Rates, *stats.RatesFunc:
+ case *stats.Rates, *stats.RatesFunc, *stats.String, *stats.StringFunc, *stats.StringMapFunc:
// Silently ignore metrics that does not make sense to be exported to statsd
default:
log.Warningf("Silently ignore metrics with key %v [%T]", k, kv.Value)
diff --git a/go/stats/statsd/statsd_test.go b/go/stats/statsd/statsd_test.go
index 7338eb27f18..a7ebce3769d 100644
--- a/go/stats/statsd/statsd_test.go
+++ b/go/stats/statsd/statsd_test.go
@@ -25,35 +25,14 @@ func getBackend(t *testing.T) (StatsBackend, *net.UDPConn) {
sb.namespace = "foo"
sb.sampleRate = 1
sb.statsdClient = client
- return sb, server
-}
-
-func TestStatsdString(t *testing.T) {
- sb, server := getBackend(t)
- defer server.Close()
- name := "string_name"
- stats.NewString(name).Set("foo")
- found := false
- expvar.Do(func(kv expvar.KeyValue) {
- if kv.Key == name {
- found = true
- sb.addExpVar(kv)
- if err := sb.statsdClient.Flush(); err != nil {
- t.Errorf("Error flushing: %s", err)
- }
- bytes := make([]byte, 4096)
- n, err := server.Read(bytes)
- if err != nil {
- t.Fatal(err)
- }
- result := string(bytes[:n])
- expected := "test.string_name:foo|s"
- assert.Equal(t, result, expected)
- }
+ stats.RegisterTimerHook(func(stats, name string, value int64, timings *stats.Timings) {
+ tags := makeLabels(strings.Split(timings.Label(), "."), name)
+ client.TimeInMilliseconds(stats, float64(value), tags, sb.sampleRate)
})
- if !found {
- t.Errorf("Stat %s not found...", name)
- }
+ stats.RegisterHistogramHook(func(name string, val int64) {
+ client.Histogram(name, float64(val), []string{}, sb.sampleRate)
+ })
+ return sb, server
}
func TestStatsdCounter(t *testing.T) {
@@ -393,20 +372,8 @@ func TestStatsdMultiTimings(t *testing.T) {
t.Fatal(err)
}
result := string(bytes[:n])
- expected := []string{
- "test.multi_timings_name.500000:0.000000|g|#label1:foo,label2:bar",
- "test.multi_timings_name.1000000:0.000000|g|#label1:foo,label2:bar",
- "test.multi_timings_name.5000000:0.000000|g|#label1:foo,label2:bar",
- "test.multi_timings_name.10000000:1.000000|g|#label1:foo,label2:bar",
- "test.multi_timings_name.50000000:0.000000|g|#label1:foo,label2:bar",
- "test.multi_timings_name.100000000:0.000000|g|#label1:foo,label2:bar",
- "test.multi_timings_name.500000000:0.000000|g|#label1:foo,label2:bar",
- "test.multi_timings_name.1000000000:0.000000|g|#label1:foo,label2:bar",
- "test.multi_timings_name.5000000000:0.000000|g|#label1:foo,label2:bar",
- }
- for i, res := range strings.Split(result, "\n") {
- assert.Equal(t, res, expected[i])
- }
+ expected := "test.multi_timings_name:10.000000|ms|#label1:foo,label2:bar"
+ assert.Equal(t, result, expected)
}
})
if !found {
@@ -434,20 +401,8 @@ func TestStatsdTimings(t *testing.T) {
t.Fatal(err)
}
result := string(bytes[:n])
- expected := []string{
- "test.timings_name.500000:0.000000|g|#label1:foo",
- "test.timings_name.1000000:0.000000|g|#label1:foo",
- "test.timings_name.5000000:1.000000|g|#label1:foo",
- "test.timings_name.10000000:0.000000|g|#label1:foo",
- "test.timings_name.50000000:0.000000|g|#label1:foo",
- "test.timings_name.100000000:0.000000|g|#label1:foo",
- "test.timings_name.500000000:0.000000|g|#label1:foo",
- "test.timings_name.1000000000:0.000000|g|#label1:foo",
- "test.timings_name.5000000000:0.000000|g|#label1:foo",
- }
- for i, res := range strings.Split(result, "\n") {
- assert.Equal(t, res, expected[i])
- }
+ expected := "test.timings_name:2.000000|ms|#label1:foo"
+ assert.Equal(t, result, expected)
}
})
if !found {
@@ -478,12 +433,9 @@ func TestStatsdHistogram(t *testing.T) {
}
result := string(bytes[:n])
expected := []string{
- "test.histogram_name.1:0.000000|g",
- "test.histogram_name.5:2.000000|g",
- "test.histogram_name.10:1.000000|g",
- "test.histogram_name.inf:0.000000|g",
- "test.histogram_name.Count:3.000000|g",
- "test.histogram_name.Total:11.000000|g",
+ "test.histogram_name:2.000000|h",
+ "test.histogram_name:3.000000|h",
+ "test.histogram_name:6.000000|h",
}
for i, res := range strings.Split(result, "\n") {
assert.Equal(t, res, expected[i])
diff --git a/go/stats/timings.go b/go/stats/timings.go
index 38d3c77f749..9048bedee11 100644
--- a/go/stats/timings.go
+++ b/go/stats/timings.go
@@ -34,6 +34,7 @@ type Timings struct {
mu sync.RWMutex
histograms map[string]*Histogram
+ name string
help string
label string
labelCombined bool
@@ -46,6 +47,7 @@ type Timings struct {
func NewTimings(name, help, label string, categories ...string) *Timings {
t := &Timings{
histograms: make(map[string]*Histogram),
+ name: name,
help: help,
label: label,
labelCombined: IsDimensionCombined(label),
@@ -87,6 +89,9 @@ func (t *Timings) Add(name string, elapsed time.Duration) {
}
t.mu.Unlock()
}
+ if defaultStatsdHook.timerHook != nil && t.name != "" {
+ defaultStatsdHook.timerHook(t.name, name, elapsed.Milliseconds(), t)
+ }
elapsedNs := int64(elapsed)
hist.Add(elapsedNs)
@@ -198,16 +203,19 @@ type MultiTimings struct {
// NewMultiTimings creates a new MultiTimings object.
func NewMultiTimings(name string, help string, labels []string) *MultiTimings {
+ combinedLabels := make([]bool, len(labels))
+ for i, label := range labels {
+ combinedLabels[i] = IsDimensionCombined(label)
+ }
t := &MultiTimings{
Timings: Timings{
histograms: make(map[string]*Histogram),
+ name: name,
help: help,
+ label: safeJoinLabels(labels, combinedLabels),
},
labels: labels,
- combinedLabels: make([]bool, len(labels)),
- }
- for i, label := range labels {
- t.combinedLabels[i] = IsDimensionCombined(label)
+ combinedLabels: combinedLabels,
}
if name != "" {
publish(name, t)
diff --git a/go/streamlog/streamlog.go b/go/streamlog/streamlog.go
index 9c881a877bd..32fdb6be241 100644
--- a/go/streamlog/streamlog.go
+++ b/go/streamlog/streamlog.go
@@ -42,7 +42,10 @@ var (
QueryLogFormat = flag.String("querylog-format", "text", "format for query logs (\"text\" or \"json\")")
// QueryLogFilterTag contains an optional string that must be present in the query for it to be logged
- QueryLogFilterTag = flag.String("querylog-filter-tag", "", "string that must be present in the query for it to be logged")
+ QueryLogFilterTag = flag.String("querylog-filter-tag", "", "string that must be present in the query for it to be logged; if using a value as the tag, you need to disable query normalization")
+
+ // QueryLogRowThreshold only log queries returning or affecting this many rows
+ QueryLogRowThreshold = flag.Uint64("querylog-row-threshold", 0, "Number of rows a query has to return or affect before being logged; not useful for streaming queries. 0 means all queries will be logged.")
sendCount = stats.NewCountersWithSingleLabel("StreamlogSend", "stream log send count", "logger_names")
deliveredCount = stats.NewCountersWithMultiLabels(
@@ -208,9 +211,19 @@ func GetFormatter(logger *StreamLogger) LogFormatter {
// ShouldEmitLog returns whether the log with the given SQL query
// should be emitted or filtered
-func ShouldEmitLog(sql string) bool {
- if *QueryLogFilterTag == "" {
- return true
+func ShouldEmitLog(sql string, rowsAffected, rowsReturned uint64) bool {
+ if *QueryLogRowThreshold > maxUint64(rowsAffected, rowsReturned) && *QueryLogFilterTag == "" {
+ return false
+ }
+ if *QueryLogFilterTag != "" {
+ return strings.Contains(sql, *QueryLogFilterTag)
+ }
+ return true
+}
+
+func maxUint64(a, b uint64) uint64 {
+ if a < b {
+ return b
}
- return strings.Contains(sql, *QueryLogFilterTag)
+ return a
}
diff --git a/go/sync2/consolidator.go b/go/sync2/consolidator.go
index 5e7698996c9..d0515615763 100644
--- a/go/sync2/consolidator.go
+++ b/go/sync2/consolidator.go
@@ -94,7 +94,9 @@ type ConsolidatorCache struct {
// NewConsolidatorCache creates a new cache with the given capacity.
func NewConsolidatorCache(capacity int64) *ConsolidatorCache {
- return &ConsolidatorCache{cache.NewLRUCache(capacity)}
+ return &ConsolidatorCache{cache.NewLRUCache(capacity, func(_ interface{}) int64 {
+ return 1
+ })}
}
// Record increments the count for "query" by 1.
@@ -128,13 +130,6 @@ func (cc *ConsolidatorCache) Items() []ConsolidatorCacheItem {
// request for the same query is already in progress.
type ccount int64
-// Size always returns 1 because we use the cache only to track queries,
-// independent of the number of requests waiting for them.
-// This implements the cache.Value interface.
-func (cc *ccount) Size() int {
- return 1
-}
-
func (cc *ccount) add(n int64) int64 {
return atomic.AddInt64((*int64)(cc), n)
}
diff --git a/go/test/endtoend/apps/mysql_log_reader.go b/go/test/endtoend/apps/mysql_log_reader.go
deleted file mode 100644
index 9106aa56c25..00000000000
--- a/go/test/endtoend/apps/mysql_log_reader.go
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
-Copyright 2019 The Vitess Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package apps
-
-import (
- "fmt"
- "io/ioutil"
- "regexp"
- "strconv"
- "strings"
- "time"
-
- "vitess.io/vitess/go/vt/proto/vtrpc"
- "vitess.io/vitess/go/vt/vterrors"
-)
-
-type EntryType int
-
-const (
- Connect EntryType = iota
- Quit
- Query
- InitDb
-)
-
-type LogEntry struct {
- ConnectionID int
- Time time.Time
- Typ EntryType
- Text string
-}
-
-func ReadLogFile(filePath string) ([]*LogEntry, error) {
- fil, err := ioutil.ReadFile(filePath)
- if err != nil {
- return nil, err
- }
-
- return ReadLogLines(string(fil))
-}
-
-func ReadLogLines(input string) ([]*LogEntry, error) {
- lines := strings.Split(input, "\n")
- var currentQuery *LogEntry
- var result []*LogEntry
-
- for _, line := range lines {
- entry, normalLogLine := readLogLine(line)
- if normalLogLine {
- currentQuery = &entry
- result = append(result, currentQuery)
- } else {
- if currentQuery == nil {
- return nil, vterrors.Errorf(vtrpc.Code_INVALID_ARGUMENT, "encountered a weird log line %s", line)
- }
- currentQuery.Text = currentQuery.Text + "\n" + line
- }
- }
-
- return result, nil
-}
-
-func readLogLine(in string) (entry LogEntry, success bool) {
- endOfDateTime := strings.Index(in, "\t")
- if endOfDateTime < 0 {
- return LogEntry{}, false
- }
- dateTimeText := in[:endOfDateTime]
- tid, err := time.Parse(time.RFC3339, dateTimeText)
- if err != nil {
- return LogEntry{}, false
- }
-
- endOfTypeAndID := strings.LastIndex(in, "\t")
- text := strings.TrimSpace(in[endOfTypeAndID:])
-
- idAndCommand := in[endOfDateTime+1 : endOfTypeAndID]
- idText, commandText := splitIDAndCommand(idAndCommand)
- id, err := strconv.Atoi(idText)
- if err != nil {
- return LogEntry{}, false
- }
-
- return LogEntry{
- ConnectionID: id,
- Typ: parseCommand(commandText),
- Time: tid,
- Text: text,
- }, true
-}
-
-func splitIDAndCommand(in string) (string, string) {
- r := regexp.MustCompile(`\s+(\d+) (\w+)`)
- result := r.FindAllStringSubmatch(in, -1)
- id := result[0][1]
- text := result[0][2]
- return id, text
-}
-
-func parseCommand(in string) EntryType {
- switch in {
- case "Connect":
- return Connect
- case "Init":
- return InitDb
- case "Quit":
- return Quit
- case "Query":
- return Query
- }
-
- panic(fmt.Sprintf("unknown command type %s", in))
-}
diff --git a/go/test/endtoend/apps/mysql_log_reader_test.go b/go/test/endtoend/apps/mysql_log_reader_test.go
deleted file mode 100644
index 00fd88a323d..00000000000
--- a/go/test/endtoend/apps/mysql_log_reader_test.go
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
-Copyright 2019 The Vitess Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package apps
-
-import (
- "testing"
- "time"
-
- "vitess.io/vitess/go/test/utils"
-
- "github.com/google/go-cmp/cmp"
- "github.com/stretchr/testify/require"
-)
-
-func TestReadLogLine(t *testing.T) {
- type test struct {
- logLine string
- expected LogEntry
- }
-
- tests := []test{
- {
- logLine: "2020-03-02T15:06:48.894157Z 2 Connect root@localhost on using Socket",
- expected: LogEntry{
- ConnectionID: 2,
- Time: time.Date(2020, 3, 2, 15, 6, 48, 894157*1000, time.UTC),
- Typ: Connect,
- Text: "root@localhost on using Socket",
- },
- },
- {
- logLine: "2020-03-02T15:08:22.551372Z 5 Quit ",
- expected: LogEntry{
- ConnectionID: 5,
- Time: time.Date(2020, 3, 2, 15, 8, 22, 551372*1000, time.UTC),
- Typ: Quit,
- Text: "",
- },
- },
- {
- logLine: "2020-03-02T15:15:24.533709Z 6 Init DB wordpressdb",
- expected: LogEntry{
- ConnectionID: 6,
- Time: time.Date(2020, 3, 2, 15, 15, 24, 533709*1000, time.UTC),
- Typ: InitDb,
- Text: "wordpressdb",
- },
- },
- {
- logLine: "2020-03-02T15:07:32.400439Z 5 Query select @@version_comment limit 1",
- expected: LogEntry{
- ConnectionID: 5,
- Time: time.Date(2020, 3, 2, 15, 7, 32, 400439*1000, time.UTC),
- Typ: Query,
- Text: "select @@version_comment limit 1",
- },
- },
- }
-
- for _, test := range tests {
- t.Run(test.logLine, func(t *testing.T) {
- actual, success := readLogLine(test.logLine)
- require.True(t, success, "should be successful")
- if diff := cmp.Diff(test.expected, actual); diff != "" {
- t.Error(diff)
- }
- })
- }
-}
-
-func TestReadFullLog(t *testing.T) {
- input := `2020-03-02T15:07:32.400210Z 5 Connect root@localhost on using Socket
-2020-03-02T15:07:32.400439Z 5 Query select @@version_comment limit 1
-2020-03-02T15:08:04.272295Z 5 Query select 42
-2020-03-02T15:08:22.551372Z 5 Quit `
- result, err := ReadLogLines(input)
- require.NoError(t, err)
-
- expected := []*LogEntry{{
- ConnectionID: 5,
- Time: time.Date(2020, 3, 2, 15, 7, 32, 400210*1000, time.UTC),
- Typ: Connect,
- Text: "root@localhost on using Socket",
- }, {
- ConnectionID: 5,
- Time: time.Date(2020, 3, 2, 15, 7, 32, 400439*1000, time.UTC),
- Typ: Query,
- Text: "select @@version_comment limit 1",
- }, {
- ConnectionID: 5,
- Time: time.Date(2020, 3, 2, 15, 8, 4, 272295*1000, time.UTC),
- Typ: Query,
- Text: "select 42",
- }, {
- ConnectionID: 5,
- Time: time.Date(2020, 3, 2, 15, 8, 22, 551372*1000, time.UTC),
- Typ: Quit,
- Text: "",
- }}
-
- utils.MustMatch(t, expected, result, "reading logs")
-}
-
-func TestReadFullLogWithInterleavedChunks(t *testing.T) {
- input := `2020-03-02T15:07:32.400210Z 5 Connect root@localhost on using Socket
-2020-03-02T15:07:32.400439Z 5 Query select @@version_comment limit 1
-2020-03-02T15:15:24.532950Z 6 Connect wp_user@localhost on using TCP/IP
-2020-03-02T15:08:04.272295Z 5 Query select 42
-2020-03-02T15:15:24.533709Z 6 Init DB wordpressdb
-2020-03-02T15:15:24.533921Z 6 Query SELECT wp_
-2020-03-02T15:08:22.551372Z 5 Quit
-2020-03-02T15:15:24.536723Z 6 Quit `
- result, err := ReadLogLines(input)
- require.NoError(t, err)
-
- expected := []*LogEntry{{
- ConnectionID: 5,
- Time: time.Date(2020, 3, 2, 15, 7, 32, 400210*1000, time.UTC),
- Typ: Connect,
- Text: "root@localhost on using Socket",
- }, {
- ConnectionID: 5,
- Time: time.Date(2020, 3, 2, 15, 7, 32, 400439*1000, time.UTC),
- Typ: Query,
- Text: "select @@version_comment limit 1",
- }, {
- ConnectionID: 6,
- Time: time.Date(2020, 3, 2, 15, 15, 24, 532950*1000, time.UTC),
- Typ: Connect,
- Text: "wp_user@localhost on using TCP/IP",
- }, {
- ConnectionID: 5,
- Time: time.Date(2020, 3, 2, 15, 8, 4, 272295*1000, time.UTC),
- Typ: Query,
- Text: "select 42",
- }, {
- ConnectionID: 6,
- Time: time.Date(2020, 3, 2, 15, 15, 24, 533709*1000, time.UTC),
- Typ: InitDb,
- Text: "wordpressdb",
- }, {
- ConnectionID: 6,
- Time: time.Date(2020, 3, 2, 15, 15, 24, 533921*1000, time.UTC),
- Typ: Query,
- Text: "SELECT wp_",
- }, {
- ConnectionID: 5,
- Time: time.Date(2020, 3, 2, 15, 8, 22, 551372*1000, time.UTC),
- Typ: Quit,
- Text: "",
- }, {
- ConnectionID: 6,
- Time: time.Date(2020, 3, 2, 15, 15, 24, 536723*1000, time.UTC),
- Typ: Quit,
- Text: "",
- }}
-
- if diff := cmp.Diff(expected, result); diff != "" {
- t.Error(diff)
- }
-}
-
-func TestReadFullLogWithMultiLineQueries(t *testing.T) {
- input := `2020-03-02T15:07:32.400210Z 5 Connect root@localhost on using Socket
-2020-03-02T15:16:50.431748Z 5 Query CREATE TABLE wp_users (
- ID bigint(20) unsigned NOT NULL auto_increment,
- user_login varchar(60) NOT NULL default '',
- user_pass varchar(255) NOT NULL default '',
- user_nicename varchar(50) NOT NULL default '',
- user_email varchar(100) NOT NULL default '',
- user_url varchar(100) NOT NULL default '',
- user_registered datetime NOT NULL default '0000-00-00 00:00:00',
- user_activation_key varchar(255) NOT NULL default '',
- user_status int(11) NOT NULL default '0',
- display_name varchar(250) NOT NULL default '',
- PRIMARY KEY (ID),
- KEY user_login_key (user_login),
- KEY user_nicename (user_nicename),
- KEY user_email (user_email)
-) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci
-2020-03-02T15:08:22.551372Z 5 Quit `
- result, err := ReadLogLines(input)
- require.NoError(t, err)
-
- expected := []*LogEntry{{
- ConnectionID: 5,
- Time: time.Date(2020, 3, 2, 15, 7, 32, 400210*1000, time.UTC),
- Typ: Connect,
- Text: "root@localhost on using Socket",
- }, {
- ConnectionID: 5,
- Time: time.Date(2020, 3, 2, 15, 16, 50, 431748*1000, time.UTC),
- Typ: Query,
- Text: `CREATE TABLE wp_users (
- ID bigint(20) unsigned NOT NULL auto_increment,
- user_login varchar(60) NOT NULL default '',
- user_pass varchar(255) NOT NULL default '',
- user_nicename varchar(50) NOT NULL default '',
- user_email varchar(100) NOT NULL default '',
- user_url varchar(100) NOT NULL default '',
- user_registered datetime NOT NULL default '0000-00-00 00:00:00',
- user_activation_key varchar(255) NOT NULL default '',
- user_status int(11) NOT NULL default '0',
- display_name varchar(250) NOT NULL default '',
- PRIMARY KEY (ID),
- KEY user_login_key (user_login),
- KEY user_nicename (user_nicename),
- KEY user_email (user_email)
-) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci`,
- }, {
- ConnectionID: 5,
- Time: time.Date(2020, 3, 2, 15, 8, 22, 551372*1000, time.UTC),
- Typ: Quit,
- Text: "",
- }}
-
- utils.MustMatch(t, expected, result, "")
-}
diff --git a/go/test/endtoend/apps/wordpress/install_wordpress_test.go b/go/test/endtoend/apps/wordpress/install_wordpress_test.go
deleted file mode 100644
index 4713f590392..00000000000
--- a/go/test/endtoend/apps/wordpress/install_wordpress_test.go
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
-Copyright 2019 The Vitess Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package wordpress
-
-import (
- "context"
- "database/sql"
- "fmt"
- "testing"
-
- _ "github.com/go-sql-driver/mysql"
- "github.com/stretchr/testify/require"
-
- "vitess.io/vitess/go/test/endtoend/apps"
-)
-
-func TestInstallation(t *testing.T) {
- t.Skip("not successful yet. run manually until this test reliably passes")
- queryLog, err := apps.ReadLogFile("wordpres_install_querylog.txt")
- require.NoError(t, err)
-
- mySQLDb, err := sql.Open("mysql", fmt.Sprintf("root@unix(%s)/", socketFile))
- require.NoError(t, err)
-
- vitessDb, err := sql.Open("mysql", fmt.Sprintf("root@tcp(127.0.0.1:%d)/", vtParams.Port))
- require.NoError(t, err)
-
- sessions := make(map[int]*QueryRunner)
- for i, line := range queryLog {
- t.Run(fmt.Sprintf("%d %s", i, line.Text), func(t *testing.T) {
- runner, found := sessions[line.ConnectionID]
- if !found {
- runner = &QueryRunner{
- mysqlF: func() (*sql.Conn, error) {
- return mySQLDb.Conn(ctx)
- },
- vitessF: func() (*sql.Conn, error) {
- return vitessDb.Conn(ctx)
- },
- }
- sessions[line.ConnectionID] = runner
- }
- switch line.Typ {
- case apps.Connect:
- runner.Reconnect()
- case apps.InitDb:
- runner.Query(t, "use "+line.Text)
- case apps.Query:
- runner.Query(t, line.Text)
- case apps.Quit:
- runner.mysql.Close()
- runner.vitess.Close()
- delete(sessions, line.ConnectionID)
- }
- })
- }
-}
-
-type conCreator func() (*sql.Conn, error)
-
-type QueryRunner struct {
- mysqlF, vitessF conCreator
- mysql, vitess *sql.Conn
-}
-
-func (qr *QueryRunner) Reconnect() error {
- if qr.mysql != nil {
- qr.mysql.Close()
- }
- if qr.vitess != nil {
- qr.vitess.Close()
- }
- db, err := qr.vitessF()
- if err != nil {
- return err
- }
- qr.vitess = db
-
- db, err = qr.mysqlF()
- if err != nil {
- return err
- }
- qr.mysql = db
-
- return nil
-}
-
-var ctx = context.Background()
-
-func (qr *QueryRunner) Query(t *testing.T, q string) {
- resultM, errM := qr.mysql.QueryContext(ctx, q)
- resultV, errV := qr.vitess.QueryContext(ctx, q)
- if errM == nil {
- defer resultM.Close()
- }
- if errV == nil {
- defer resultV.Close()
- }
-
- checkErrors := func(mysql, vitess error) {
- if mysql == nil && vitess != nil {
- t.Errorf("Vitess returned an error but mysql did not. Query: %s\nError: %s", q, errV.Error())
- }
- if mysql != nil && vitess == nil {
- t.Errorf("Mysql returned an error but Vitess did not. Query: %s\nError: %s", q, errM.Error())
- }
- }
-
- checkErrors(errM, errV)
-
- if errV == nil && errM == nil {
- _, errM := resultM.Columns()
- _, errV := resultV.Columns()
- checkErrors(errM, errV)
-
- // TODO check that the column names are equal
- //if diff := cmp.Diff(mysqlColumns, vitessColumns); diff != "" {
- // t.Error(diff)
- //}
-
- m := count(resultM)
- v := count(resultV)
- if m != v {
- t.Errorf("Query worked against both, but returned different number of rows. Query:%s\nmysql: %d vitess: %d", q, m, v)
- }
- }
-}
-
-func count(in *sql.Rows) int {
- i := 0
- for in.Next() {
- i++
- }
- return i
-}
diff --git a/go/test/endtoend/apps/wordpress/main_test.go b/go/test/endtoend/apps/wordpress/main_test.go
deleted file mode 100644
index d3034a7b1d4..00000000000
--- a/go/test/endtoend/apps/wordpress/main_test.go
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
-Copyright 2019 The Vitess Authors.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
-*/
-
-package wordpress
-
-import (
- "flag"
- "fmt"
- "io/ioutil"
- "net"
- "os"
- "os/exec"
- "path"
- "strings"
- "syscall"
- "testing"
- "time"
-
- "database/sql"
-
- vtenv "vitess.io/vitess/go/vt/env"
-
- _ "github.com/go-sql-driver/mysql"
-
- "vitess.io/vitess/go/mysql"
- "vitess.io/vitess/go/test/endtoend/cluster"
-)
-
-var (
- clusterInstance *cluster.LocalProcessCluster
- vtParams mysql.ConnParams
- KeyspaceName = "wordpressdb"
- Cell = "test"
-
- VSchema = `{
- "sharded": false,
- "tables": {
- "wp_term_relationships":{},
- "wp_comments":{},
- "wp_links":{},
- "wp_options":{},
- "wp_postmeta":{},
- "wp_term_taxonomy":{},
- "wp_usermeta":{},
- "wp_termmeta":{},
- "wp_terms":{},
- "wp_commentmeta":{},
- "wp_posts":{},
- "wp_users":{}
- }
-}`
-)
-
-func TestMain(m *testing.M) {
- flag.Parse()
- current, err := os.Getwd()
- if err != nil {
- panic(err)
- }
-
- path := current + "/wordpress.cnf"
- os.Setenv("EXTRA_MY_CNF", path)
- exitCode := func() int {
- clusterInstance = cluster.NewCluster(Cell, "localhost")
- defer clusterInstance.Teardown()
-
- // Start topo server
- err := clusterInstance.StartTopo()
- if err != nil {
- return 1
- }
-
- // Start keyspace
- keyspace := &cluster.Keyspace{
- Name: KeyspaceName,
- SchemaSQL: "",
- VSchema: VSchema,
- }
- err = clusterInstance.StartUnshardedKeyspace(*keyspace, 1, true)
- if err != nil {
- return 1
- }
-
- // Start vtgate
- err = clusterInstance.StartVtgate()
- if err != nil {
- return 1
- }
- vtParams = mysql.ConnParams{
- Host: clusterInstance.Hostname,
- Port: clusterInstance.VtgateMySQLPort,
- }
-
- startVanillaMySQL()
-
- return m.Run()
- }()
-
- if mysqld != nil {
- fmt.Println("killing mysqld after tests")
- mysqld.Process.Signal(syscall.SIGKILL)
- }
-
- os.Exit(exitCode)
-}
-
-var mysqld *exec.Cmd
-var socketFile string
-
-func startVanillaMySQL() {
- handleErr := func(err error) {
- if err != nil {
- panic(err)
- }
- }
-
- tmpDir, err := ioutil.TempDir("", "vitess_tests")
- handleErr(err)
-
- vtMysqlRoot, err := vtenv.VtMysqlRoot()
- handleErr(err)
-
- mysqldPath, err := binaryPath(vtMysqlRoot, "mysqld")
- handleErr(err)
-
- datadir := fmt.Sprintf("--datadir=%s", tmpDir)
- basedir := "--basedir=" + vtMysqlRoot
- args := []string{
- basedir,
- datadir,
- "--initialize-insecure",
- }
-
- initDbCmd, err := startCommand(mysqldPath, args)
- handleErr(err)
-
- err = initDbCmd.Wait()
- handleErr(err)
-
- tmpPort, err := getFreePort()
- handleErr(err)
- socketFile = tmpDir + "socket_file"
- args = []string{
- basedir,
- datadir,
- fmt.Sprintf("--port=%d", tmpPort),
- "--socket=" + socketFile,
- }
-
- mysqld, err = startCommand(mysqldPath, args)
- handleErr(err)
- time.Sleep(1 * time.Second) // give mysqld a chance to start listening to the socket before running tests
-
- planMysql, err := sql.Open("mysql", fmt.Sprintf("root@unix(%s)/", socketFile))
- handleErr(err)
- defer planMysql.Close()
- _, err = planMysql.Exec("create database wordpressdb")
- handleErr(err)
-}
-
-func startCommand(mysqldPath string, args []string) (*exec.Cmd, error) {
- cmd := exec.Command(mysqldPath, args...)
- cmd.Stdout = os.Stdout
- cmd.Stderr = os.Stderr
- return cmd, cmd.Start()
-}
-
-// binaryPath does a limited path lookup for a command,
-// searching only within sbin and bin in the given root.
-func binaryPath(root, binary string) (string, error) {
- subdirs := []string{"sbin", "bin", "libexec", "scripts"}
- for _, subdir := range subdirs {
- binPath := path.Join(root, subdir, binary)
- if _, err := os.Stat(binPath); err == nil {
- return binPath, nil
- }
- }
- return "", fmt.Errorf("%s not found in any of %s/{%s}",
- binary, root, strings.Join(subdirs, ","))
-}
-
-func getFreePort() (int, error) {
- addr, err := net.ResolveTCPAddr("tcp", "localhost:0")
- if err != nil {
- return 0, err
- }
-
- l, err := net.ListenTCP("tcp", addr)
- if err != nil {
- return 0, err
- }
- defer l.Close()
- return l.Addr().(*net.TCPAddr).Port, nil
-}
diff --git a/go/test/endtoend/apps/wordpress/wordpres_install_querylog.txt b/go/test/endtoend/apps/wordpress/wordpres_install_querylog.txt
deleted file mode 100644
index c1a286b28a1..00000000000
--- a/go/test/endtoend/apps/wordpress/wordpres_install_querylog.txt
+++ /dev/null
@@ -1,1307 +0,0 @@
-2020-03-02T15:06:48.894157Z 2 Connect root@localhost on using Socket
-2020-03-02T15:06:48.894195Z 2 Connect Access denied for user 'root'@'localhost'
-2020-03-02T15:06:56.657050Z 3 Connect root@localhost on using Socket
-2020-03-02T15:06:56.657084Z 3 Connect Access denied for user 'root'@'localhost'
-2020-03-02T15:07:10.169849Z 4 Connect root@localhost on using Socket
-2020-03-02T15:07:10.169888Z 4 Connect Access denied for user 'root'@'localhost'
-2020-03-02T15:07:32.400210Z 5 Connect root@localhost on using Socket
-2020-03-02T15:07:32.400439Z 5 Query select @@version_comment limit 1
-2020-03-02T15:08:04.272295Z 5 Query select 42
-2020-03-02T15:08:22.551372Z 5 Quit
-2020-03-02T15:15:24.532950Z 6 Connect wp_user@localhost on using TCP/IP
-2020-03-02T15:15:24.533235Z 6 Query SELECT @@SESSION.sql_mode
-2020-03-02T15:15:24.533488Z 6 Query SET SESSION sql_mode='NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
-2020-03-02T15:15:24.533709Z 6 Init DB wordpressdb
-2020-03-02T15:15:24.533921Z 6 Query SELECT wp_
-2020-03-02T15:15:24.536723Z 6 Quit
-2020-03-02T15:15:40.733513Z 7 Connect wp_user@localhost on using TCP/IP
-2020-03-02T15:15:40.733827Z 7 Query SET NAMES utf8mb4
-2020-03-02T15:15:40.734252Z 7 Query SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_520_ci'
-2020-03-02T15:15:40.734422Z 7 Query SELECT @@SESSION.sql_mode
-2020-03-02T15:15:40.734607Z 7 Query SET SESSION sql_mode='NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
-2020-03-02T15:15:40.734746Z 7 Init DB wordpressdb
-2020-03-02T15:15:40.735478Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl'
-2020-03-02T15:15:40.735770Z 7 Query DESCRIBE wp_users
-2020-03-02T15:15:40.736213Z 7 Query DESCRIBE wp_usermeta
-2020-03-02T15:15:40.736482Z 7 Query DESCRIBE wp_posts
-2020-03-02T15:15:40.736758Z 7 Query DESCRIBE wp_comments
-2020-03-02T15:15:40.737028Z 7 Query DESCRIBE wp_links
-2020-03-02T15:15:40.737302Z 7 Query DESCRIBE wp_options
-2020-03-02T15:15:40.737540Z 7 Query DESCRIBE wp_postmeta
-2020-03-02T15:15:40.737797Z 7 Query DESCRIBE wp_terms
-2020-03-02T15:15:40.738043Z 7 Query DESCRIBE wp_term_taxonomy
-2020-03-02T15:15:40.738300Z 7 Query DESCRIBE wp_term_relationships
-2020-03-02T15:15:40.738544Z 7 Query DESCRIBE wp_termmeta
-2020-03-02T15:15:40.738792Z 7 Query DESCRIBE wp_commentmeta
-2020-03-02T15:15:40.740823Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:15:40.741046Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:15:40.741299Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'home' LIMIT 1
-2020-03-02T15:15:40.741532Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:15:40.741738Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:15:40.742722Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'cron' LIMIT 1
-2020-03-02T15:15:40.742903Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'active_plugins' LIMIT 1
-2020-03-02T15:15:40.743063Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'hack_file' LIMIT 1
-2020-03-02T15:15:40.743507Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'permalink_structure' LIMIT 1
-2020-03-02T15:15:40.743748Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:15:40.743910Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'template' LIMIT 1
-2020-03-02T15:15:40.744127Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'stylesheet' LIMIT 1
-2020-03-02T15:15:40.744350Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'WPLANG' LIMIT 1
-2020-03-02T15:15:40.745116Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'category_base' LIMIT 1
-2020-03-02T15:15:40.745338Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'category_base' LIMIT 1
-2020-03-02T15:15:40.745553Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'tag_base' LIMIT 1
-2020-03-02T15:15:40.745769Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'tag_base' LIMIT 1
-2020-03-02T15:15:40.746008Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'permalink_structure' LIMIT 1
-2020-03-02T15:15:40.746278Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'permalink_structure' LIMIT 1
-2020-03-02T15:15:40.746513Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'permalink_structure' LIMIT 1
-2020-03-02T15:15:40.746792Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'permalink_structure' LIMIT 1
-2020-03-02T15:15:40.747038Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'permalink_structure' LIMIT 1
-2020-03-02T15:15:40.747229Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'permalink_structure' LIMIT 1
-2020-03-02T15:15:40.747396Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl'
-2020-03-02T15:15:40.747530Z 7 Query DESCRIBE wp_users
-2020-03-02T15:15:40.747921Z 7 Query DESCRIBE wp_usermeta
-2020-03-02T15:15:40.748168Z 7 Query DESCRIBE wp_posts
-2020-03-02T15:15:40.748378Z 7 Query DESCRIBE wp_comments
-2020-03-02T15:15:40.748565Z 7 Query DESCRIBE wp_links
-2020-03-02T15:15:40.748809Z 7 Query DESCRIBE wp_options
-2020-03-02T15:15:40.749065Z 7 Query DESCRIBE wp_postmeta
-2020-03-02T15:15:40.749328Z 7 Query DESCRIBE wp_terms
-2020-03-02T15:15:40.749597Z 7 Query DESCRIBE wp_term_taxonomy
-2020-03-02T15:15:40.749804Z 7 Query DESCRIBE wp_term_relationships
-2020-03-02T15:15:40.750008Z 7 Query DESCRIBE wp_termmeta
-2020-03-02T15:15:40.750221Z 7 Query DESCRIBE wp_commentmeta
-2020-03-02T15:15:40.750493Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'use_smilies' LIMIT 1
-2020-03-02T15:15:40.750670Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'cron' LIMIT 1
-2020-03-02T15:15:40.750860Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'cron' LIMIT 1
-2020-03-02T15:15:40.750992Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'cron' LIMIT 1
-2020-03-02T15:15:40.751148Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'cron' LIMIT 1
-2020-03-02T15:15:40.751438Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'theme_switched' LIMIT 1
-2020-03-02T15:15:40.752300Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl'
-2020-03-02T15:15:40.752519Z 7 Query DESCRIBE wp_users
-2020-03-02T15:15:40.752803Z 7 Query DESCRIBE wp_usermeta
-2020-03-02T15:15:40.753046Z 7 Query DESCRIBE wp_posts
-2020-03-02T15:15:40.753301Z 7 Query DESCRIBE wp_comments
-2020-03-02T15:15:40.753518Z 7 Query DESCRIBE wp_links
-2020-03-02T15:15:40.753742Z 7 Query DESCRIBE wp_options
-2020-03-02T15:15:40.753960Z 7 Query DESCRIBE wp_postmeta
-2020-03-02T15:15:40.754155Z 7 Query DESCRIBE wp_terms
-2020-03-02T15:15:40.754345Z 7 Query DESCRIBE wp_term_taxonomy
-2020-03-02T15:15:40.754585Z 7 Query DESCRIBE wp_term_relationships
-2020-03-02T15:15:40.754825Z 7 Query DESCRIBE wp_termmeta
-2020-03-02T15:15:40.755017Z 7 Query DESCRIBE wp_commentmeta
-2020-03-02T15:15:40.755846Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'ftp_credentials' LIMIT 1
-2020-03-02T15:15:40.756132Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'blog_charset' LIMIT 1
-2020-03-02T15:15:40.756480Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'home' LIMIT 1
-2020-03-02T15:15:41.180189Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'html_type' LIMIT 1
-2020-03-02T15:15:41.180505Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'html_type' LIMIT 1
-2020-03-02T15:15:41.180856Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:15:41.181351Z 7 Query SHOW TABLES LIKE 'wp\\_users'
-2020-03-02T15:15:41.181843Z 7 Query SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'
-2020-03-02T15:15:41.182062Z 7 Query SELECT option_name, option_value FROM wp_options
-2020-03-02T15:15:41.182363Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:15:41.182597Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:15:41.182850Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'permalink_structure' LIMIT 1
-2020-03-02T15:15:41.183130Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'home' LIMIT 1
-2020-03-02T15:15:41.183393Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:15:41.183707Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:15:41.183994Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:15:41.184221Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:15:41.184458Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:15:41.184670Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:15:41.185014Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'start_of_week' LIMIT 1
-2020-03-02T15:15:41.185282Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'time_format' LIMIT 1
-2020-03-02T15:15:41.185559Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'date_format' LIMIT 1
-2020-03-02T15:15:41.185865Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'can_compress_scripts' LIMIT 1
-2020-03-02T15:15:41.186196Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'can_compress_scripts' LIMIT 1
-2020-03-02T15:15:41.186472Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:15:41.186700Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:15:41.186877Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:15:41.187115Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'permalink_structure' LIMIT 1
-2020-03-02T15:15:41.187296Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'home' LIMIT 1
-2020-03-02T15:15:41.187517Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:15:41.187863Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'time_format' LIMIT 1
-2020-03-02T15:15:41.188127Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'date_format' LIMIT 1
-2020-03-02T15:15:41.188330Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'timezone_string' LIMIT 1
-2020-03-02T15:15:41.188468Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'gmt_offset' LIMIT 1
-2020-03-02T15:15:41.188708Z 7 Query SELECT option_value FROM wp_options WHERE option_name = 'timezone_string' LIMIT 1
-2020-03-02T15:15:41.189234Z 7 Quit
-2020-03-02T15:16:50.397006Z 8 Connect wp_user@localhost on using TCP/IP
-2020-03-02T15:16:50.397306Z 8 Query SET NAMES utf8mb4
-2020-03-02T15:16:50.397965Z 8 Query SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_520_ci'
-2020-03-02T15:16:50.398116Z 8 Query SELECT @@SESSION.sql_mode
-2020-03-02T15:16:50.398321Z 8 Query SET SESSION sql_mode='NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
-2020-03-02T15:16:50.398490Z 8 Init DB wordpressdb
-2020-03-02T15:16:50.399252Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl'
-2020-03-02T15:16:50.399444Z 8 Query DESCRIBE wp_users
-2020-03-02T15:16:50.399897Z 8 Query DESCRIBE wp_usermeta
-2020-03-02T15:16:50.400176Z 8 Query DESCRIBE wp_posts
-2020-03-02T15:16:50.400447Z 8 Query DESCRIBE wp_comments
-2020-03-02T15:16:50.400700Z 8 Query DESCRIBE wp_links
-2020-03-02T15:16:50.400971Z 8 Query DESCRIBE wp_options
-2020-03-02T15:16:50.401218Z 8 Query DESCRIBE wp_postmeta
-2020-03-02T15:16:50.401467Z 8 Query DESCRIBE wp_terms
-2020-03-02T15:16:50.401751Z 8 Query DESCRIBE wp_term_taxonomy
-2020-03-02T15:16:50.404026Z 8 Query DESCRIBE wp_term_relationships
-2020-03-02T15:16:50.404322Z 8 Query DESCRIBE wp_termmeta
-2020-03-02T15:16:50.404623Z 8 Query DESCRIBE wp_commentmeta
-2020-03-02T15:16:50.406577Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:50.407092Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:50.407453Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'home' LIMIT 1
-2020-03-02T15:16:50.409881Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:50.410233Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:50.411344Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'cron' LIMIT 1
-2020-03-02T15:16:50.411551Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'active_plugins' LIMIT 1
-2020-03-02T15:16:50.411902Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'hack_file' LIMIT 1
-2020-03-02T15:16:50.412427Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'permalink_structure' LIMIT 1
-2020-03-02T15:16:50.412700Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:50.412975Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'template' LIMIT 1
-2020-03-02T15:16:50.413196Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'stylesheet' LIMIT 1
-2020-03-02T15:16:50.413430Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'WPLANG' LIMIT 1
-2020-03-02T15:16:50.414287Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'category_base' LIMIT 1
-2020-03-02T15:16:50.414495Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'category_base' LIMIT 1
-2020-03-02T15:16:50.414730Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'tag_base' LIMIT 1
-2020-03-02T15:16:50.414998Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'tag_base' LIMIT 1
-2020-03-02T15:16:50.415245Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'permalink_structure' LIMIT 1
-2020-03-02T15:16:50.415508Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'permalink_structure' LIMIT 1
-2020-03-02T15:16:50.416000Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'permalink_structure' LIMIT 1
-2020-03-02T15:16:50.416308Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'permalink_structure' LIMIT 1
-2020-03-02T15:16:50.416613Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'permalink_structure' LIMIT 1
-2020-03-02T15:16:50.416858Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'permalink_structure' LIMIT 1
-2020-03-02T15:16:50.417075Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl'
-2020-03-02T15:16:50.417302Z 8 Query DESCRIBE wp_users
-2020-03-02T15:16:50.417651Z 8 Query DESCRIBE wp_usermeta
-2020-03-02T15:16:50.417960Z 8 Query DESCRIBE wp_posts
-2020-03-02T15:16:50.418225Z 8 Query DESCRIBE wp_comments
-2020-03-02T15:16:50.418594Z 8 Query DESCRIBE wp_links
-2020-03-02T15:16:50.418909Z 8 Query DESCRIBE wp_options
-2020-03-02T15:16:50.419203Z 8 Query DESCRIBE wp_postmeta
-2020-03-02T15:16:50.419511Z 8 Query DESCRIBE wp_terms
-2020-03-02T15:16:50.419873Z 8 Query DESCRIBE wp_term_taxonomy
-2020-03-02T15:16:50.420130Z 8 Query DESCRIBE wp_term_relationships
-2020-03-02T15:16:50.420408Z 8 Query DESCRIBE wp_termmeta
-2020-03-02T15:16:50.420709Z 8 Query DESCRIBE wp_commentmeta
-2020-03-02T15:16:50.421024Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'use_smilies' LIMIT 1
-2020-03-02T15:16:50.421256Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'cron' LIMIT 1
-2020-03-02T15:16:50.421538Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'cron' LIMIT 1
-2020-03-02T15:16:50.421744Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'cron' LIMIT 1
-2020-03-02T15:16:50.421925Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'cron' LIMIT 1
-2020-03-02T15:16:50.422196Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'theme_switched' LIMIT 1
-2020-03-02T15:16:50.422968Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl'
-2020-03-02T15:16:50.423180Z 8 Query DESCRIBE wp_users
-2020-03-02T15:16:50.423453Z 8 Query DESCRIBE wp_usermeta
-2020-03-02T15:16:50.423692Z 8 Query DESCRIBE wp_posts
-2020-03-02T15:16:50.423997Z 8 Query DESCRIBE wp_comments
-2020-03-02T15:16:50.424246Z 8 Query DESCRIBE wp_links
-2020-03-02T15:16:50.424478Z 8 Query DESCRIBE wp_options
-2020-03-02T15:16:50.424707Z 8 Query DESCRIBE wp_postmeta
-2020-03-02T15:16:50.424939Z 8 Query DESCRIBE wp_terms
-2020-03-02T15:16:50.425161Z 8 Query DESCRIBE wp_term_taxonomy
-2020-03-02T15:16:50.425384Z 8 Query DESCRIBE wp_term_relationships
-2020-03-02T15:16:50.425600Z 8 Query DESCRIBE wp_termmeta
-2020-03-02T15:16:50.425867Z 8 Query DESCRIBE wp_commentmeta
-2020-03-02T15:16:50.426469Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'html_type' LIMIT 1
-2020-03-02T15:16:50.426697Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'blog_charset' LIMIT 1
-2020-03-02T15:16:50.426932Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'html_type' LIMIT 1
-2020-03-02T15:16:50.427332Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:50.428140Z 8 Query FAIL FAIL FAIL wp_users
-2020-03-02T15:16:50.428469Z 8 Query DESCRIBE wp_usermeta
-2020-03-02T15:16:50.428754Z 8 Query DESCRIBE wp_termmeta
-2020-03-02T15:16:50.429109Z 8 Query DESCRIBE wp_terms
-2020-03-02T15:16:50.429424Z 8 Query DESCRIBE wp_term_taxonomy
-2020-03-02T15:16:50.429711Z 8 Query DESCRIBE wp_term_relationships
-2020-03-02T15:16:50.430025Z 8 Query DESCRIBE wp_commentmeta
-2020-03-02T15:16:50.430306Z 8 Query DESCRIBE wp_comments
-2020-03-02T15:16:50.430609Z 8 Query DESCRIBE wp_links
-2020-03-02T15:16:50.430868Z 8 Query DESCRIBE wp_options
-2020-03-02T15:16:50.431121Z 8 Query DESCRIBE wp_postmeta
-2020-03-02T15:16:50.431423Z 8 Query DESCRIBE wp_posts
-2020-03-02T15:16:50.431748Z 8 Query CREATE TABLE wp_users (
- ID bigint(20) unsigned NOT NULL auto_increment,
- user_login varchar(60) NOT NULL default '',
- user_pass varchar(255) NOT NULL default '',
- user_nicename varchar(50) NOT NULL default '',
- user_email varchar(100) NOT NULL default '',
- user_url varchar(100) NOT NULL default '',
- user_registered datetime NOT NULL default '0000-00-00 00:00:00',
- user_activation_key varchar(255) NOT NULL default '',
- user_status int(11) NOT NULL default '0',
- display_name varchar(250) NOT NULL default '',
- PRIMARY KEY (ID),
- KEY user_login_key (user_login),
- KEY user_nicename (user_nicename),
- KEY user_email (user_email)
-) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci
-2020-03-02T15:16:50.473912Z 8 Query CREATE TABLE wp_usermeta (
- umeta_id bigint(20) unsigned NOT NULL auto_increment,
- user_id bigint(20) unsigned NOT NULL default '0',
- meta_key varchar(255) default NULL,
- meta_value longtext,
- PRIMARY KEY (umeta_id),
- KEY user_id (user_id),
- KEY meta_key (meta_key(191))
-) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci
-2020-03-02T15:16:50.545635Z 8 Query CREATE TABLE wp_termmeta (
- meta_id bigint(20) unsigned NOT NULL auto_increment,
- term_id bigint(20) unsigned NOT NULL default '0',
- meta_key varchar(255) default NULL,
- meta_value longtext,
- PRIMARY KEY (meta_id),
- KEY term_id (term_id),
- KEY meta_key (meta_key(191))
-) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci
-2020-03-02T15:16:50.609438Z 8 Query CREATE TABLE wp_terms (
- term_id bigint(20) unsigned NOT NULL auto_increment,
- name varchar(200) NOT NULL default '',
- slug varchar(200) NOT NULL default '',
- term_group bigint(10) NOT NULL default 0,
- PRIMARY KEY (term_id),
- KEY slug (slug(191)),
- KEY name (name(191))
-) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci
-2020-03-02T15:16:50.681655Z 8 Query CREATE TABLE wp_term_taxonomy (
- term_taxonomy_id bigint(20) unsigned NOT NULL auto_increment,
- term_id bigint(20) unsigned NOT NULL default 0,
- taxonomy varchar(32) NOT NULL default '',
- description longtext NOT NULL,
- parent bigint(20) unsigned NOT NULL default 0,
- count bigint(20) NOT NULL default 0,
- PRIMARY KEY (term_taxonomy_id),
- UNIQUE KEY term_id_taxonomy (term_id,taxonomy),
- KEY taxonomy (taxonomy)
-) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci
-2020-03-02T15:16:50.746487Z 8 Query CREATE TABLE wp_term_relationships (
- object_id bigint(20) unsigned NOT NULL default 0,
- term_taxonomy_id bigint(20) unsigned NOT NULL default 0,
- term_order int(11) NOT NULL default 0,
- PRIMARY KEY (object_id,term_taxonomy_id),
- KEY term_taxonomy_id (term_taxonomy_id)
-) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci
-2020-03-02T15:16:50.793460Z 8 Query CREATE TABLE wp_commentmeta (
- meta_id bigint(20) unsigned NOT NULL auto_increment,
- comment_id bigint(20) unsigned NOT NULL default '0',
- meta_key varchar(255) default NULL,
- meta_value longtext,
- PRIMARY KEY (meta_id),
- KEY comment_id (comment_id),
- KEY meta_key (meta_key(191))
-) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci
-2020-03-02T15:16:50.864137Z 8 Query CREATE TABLE wp_comments (
- comment_ID bigint(20) unsigned NOT NULL auto_increment,
- comment_post_ID bigint(20) unsigned NOT NULL default '0',
- comment_author tinytext NOT NULL,
- comment_author_email varchar(100) NOT NULL default '',
- comment_author_url varchar(200) NOT NULL default '',
- comment_author_IP varchar(100) NOT NULL default '',
- comment_date datetime NOT NULL default '0000-00-00 00:00:00',
- comment_date_gmt datetime NOT NULL default '0000-00-00 00:00:00',
- comment_content text NOT NULL,
- comment_karma int(11) NOT NULL default '0',
- comment_approved varchar(20) NOT NULL default '1',
- comment_agent varchar(255) NOT NULL default '',
- comment_type varchar(20) NOT NULL default '',
- comment_parent bigint(20) unsigned NOT NULL default '0',
- user_id bigint(20) unsigned NOT NULL default '0',
- PRIMARY KEY (comment_ID),
- KEY comment_post_ID (comment_post_ID),
- KEY comment_approved_date_gmt (comment_approved,comment_date_gmt),
- KEY comment_date_gmt (comment_date_gmt),
- KEY comment_parent (comment_parent),
- KEY comment_author_email (comment_author_email(10))
-) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci
-2020-03-02T15:16:50.954822Z 8 Query CREATE TABLE wp_links (
- link_id bigint(20) unsigned NOT NULL auto_increment,
- link_url varchar(255) NOT NULL default '',
- link_name varchar(255) NOT NULL default '',
- link_image varchar(255) NOT NULL default '',
- link_target varchar(25) NOT NULL default '',
- link_description varchar(255) NOT NULL default '',
- link_visible varchar(20) NOT NULL default 'Y',
- link_owner bigint(20) unsigned NOT NULL default '1',
- link_rating int(11) NOT NULL default '0',
- link_updated datetime NOT NULL default '0000-00-00 00:00:00',
- link_rel varchar(255) NOT NULL default '',
- link_notes mediumtext NOT NULL,
- link_rss varchar(255) NOT NULL default '',
- PRIMARY KEY (link_id),
- KEY link_visible (link_visible)
-) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci
-2020-03-02T15:16:51.015931Z 8 Query CREATE TABLE wp_options (
- option_id bigint(20) unsigned NOT NULL auto_increment,
- option_name varchar(191) NOT NULL default '',
- option_value longtext NOT NULL,
- autoload varchar(20) NOT NULL default 'yes',
- PRIMARY KEY (option_id),
- UNIQUE KEY option_name (option_name),
- KEY autoload (autoload)
-) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci
-2020-03-02T15:16:51.081235Z 8 Query CREATE TABLE wp_postmeta (
- meta_id bigint(20) unsigned NOT NULL auto_increment,
- post_id bigint(20) unsigned NOT NULL default '0',
- meta_key varchar(255) default NULL,
- meta_value longtext,
- PRIMARY KEY (meta_id),
- KEY post_id (post_id),
- KEY meta_key (meta_key(191))
-) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci
-2020-03-02T15:16:51.162003Z 8 Query CREATE TABLE wp_posts (
- ID bigint(20) unsigned NOT NULL auto_increment,
- post_author bigint(20) unsigned NOT NULL default '0',
- post_date datetime NOT NULL default '0000-00-00 00:00:00',
- post_date_gmt datetime NOT NULL default '0000-00-00 00:00:00',
- post_content longtext NOT NULL,
- post_title text NOT NULL,
- post_excerpt text NOT NULL,
- post_status varchar(20) NOT NULL default 'publish',
- comment_status varchar(20) NOT NULL default 'open',
- ping_status varchar(20) NOT NULL default 'open',
- post_password varchar(255) NOT NULL default '',
- post_name varchar(200) NOT NULL default '',
- to_ping text NOT NULL,
- pinged text NOT NULL,
- post_modified datetime NOT NULL default '0000-00-00 00:00:00',
- post_modified_gmt datetime NOT NULL default '0000-00-00 00:00:00',
- post_content_filtered longtext NOT NULL,
- post_parent bigint(20) unsigned NOT NULL default '0',
- guid varchar(255) NOT NULL default '',
- menu_order int(11) NOT NULL default '0',
- post_type varchar(20) NOT NULL default 'post',
- post_mime_type varchar(100) NOT NULL default '',
- comment_count bigint(20) NOT NULL default '0',
- PRIMARY KEY (ID),
- KEY post_name (post_name(191)),
- KEY type_status_date (post_type,post_status,post_date,ID),
- KEY post_parent (post_parent),
- KEY post_author (post_author)
-) DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci
-2020-03-02T15:16:51.236431Z 8 Query SELECT option_name FROM wp_options WHERE option_name in ( 'siteurl', 'home', 'blogname', 'blogdescription', 'users_can_register', 'admin_email', 'start_of_week', 'use_balanceTags', 'use_smilies', 'require_name_email', 'comments_notify', 'posts_per_rss', 'rss_use_excerpt', 'mailserver_url', 'mailserver_login', 'mailserver_pass', 'mailserver_port', 'default_category', 'default_comment_status', 'default_ping_status', 'default_pingback_flag', 'posts_per_page', 'date_format', 'time_format', 'links_updated_date_format', 'comment_moderation', 'moderation_notify', 'permalink_structure', 'rewrite_rules', 'hack_file', 'blog_charset', 'moderation_keys', 'active_plugins', 'category_base', 'ping_sites', 'comment_max_links', 'gmt_offset', 'default_email_category', 'recently_edited', 'template', 'stylesheet', 'comment_whitelist', 'blacklist_keys', 'comment_registration', 'html_type', 'use_trackback', 'default_role', 'db_version', 'uploads_use_yearmonth_folders', 'upload_path', 'blog_public', 'default_link_category', 'show_on_front', 'tag_base', 'show_avatars', 'avatar_rating', 'upload_url_path', 'thumbnail_size_w', 'thumbnail_size_h', 'thumbnail_crop', 'medium_size_w', 'medium_size_h', 'avatar_default', 'large_size_w', 'large_size_h', 'image_default_link_type', 'image_default_size', 'image_default_align', 'close_comments_for_old_posts', 'close_comments_days_old', 'thread_comments', 'thread_comments_depth', 'page_comments', 'comments_per_page', 'default_comments_page', 'comment_order', 'sticky_posts', 'widget_categories', 'widget_text', 'widget_rss', 'uninstall_plugins', 'timezone_string', 'page_for_posts', 'page_on_front', 'default_post_format', 'link_manager_enabled', 'finished_splitting_shared_terms', 'site_icon', 'medium_large_size_w', 'medium_large_size_h', 'wp_page_for_privacy_policy', 'show_comments_cookies_opt_in', 'admin_email_lifespan', 'initial_db_version' )
-2020-03-02T15:16:51.241730Z 8 Query INSERT INTO wp_options (option_name, option_value, autoload) VALUES ('siteurl', 'http://127.0.0.1/wordpress', 'yes'), ('home', 'http://127.0.0.1/wordpress', 'yes'), ('blogname', 'My Site', 'yes'), ('blogdescription', 'Just another WordPress site', 'yes'), ('users_can_register', '0', 'yes'), ('admin_email', 'you@example.com', 'yes'), ('start_of_week', '1', 'yes'), ('use_balanceTags', '0', 'yes'), ('use_smilies', '1', 'yes'), ('require_name_email', '1', 'yes'), ('comments_notify', '1', 'yes'), ('posts_per_rss', '10', 'yes'), ('rss_use_excerpt', '0', 'yes'), ('mailserver_url', 'mail.example.com', 'yes'), ('mailserver_login', 'login@example.com', 'yes'), ('mailserver_pass', 'password', 'yes'), ('mailserver_port', '110', 'yes'), ('default_category', '1', 'yes'), ('default_comment_status', 'open', 'yes'), ('default_ping_status', 'open', 'yes'), ('default_pingback_flag', '1', 'yes'), ('posts_per_page', '10', 'yes'), ('date_format', 'F j, Y', 'yes'), ('time_format', 'g:i a', 'yes'), ('links_updated_date_format', 'F j, Y g:i a', 'yes'), ('comment_moderation', '0', 'yes'), ('moderation_notify', '1', 'yes'), ('permalink_structure', '', 'yes'), ('rewrite_rules', '', 'yes'), ('hack_file', '0', 'yes'), ('blog_charset', 'UTF-8', 'yes'), ('moderation_keys', '', 'no'), ('active_plugins', 'a:0:{}', 'yes'), ('category_base', '', 'yes'), ('ping_sites', 'http://rpc.pingomatic.com/', 'yes'), ('comment_max_links', '2', 'yes'), ('gmt_offset', '0', 'yes'), ('default_email_category', '1', 'yes'), ('recently_edited', '', 'no'), ('template', 'twentytwenty', 'yes'), ('stylesheet', 'twentytwenty', 'yes'), ('comment_whitelist', '1', 'yes'), ('blacklist_keys', '', 'no'), ('comment_registration', '0', 'yes'), ('html_type', 'text/html', 'yes'), ('use_trackback', '0', 'yes'), ('default_role', 'subscriber', 'yes'), ('db_version', '45805', 'yes'), ('uploads_use_yearmonth_folders', '1', 'yes'), ('upload_path', '', 'yes'), ('blog_public', '1', 'yes'), ('default_link_category', '2', 'yes'), ('show_on_front', 'posts', 'yes'), ('tag_base', '', 'yes'), ('show_avatars', '1', 'yes'), ('avatar_rating', 'G', 'yes'), ('upload_url_path', '', 'yes'), ('thumbnail_size_w', '150', 'yes'), ('thumbnail_size_h', '150', 'yes'), ('thumbnail_crop', '1', 'yes'), ('medium_size_w', '300', 'yes'), ('medium_size_h', '300', 'yes'), ('avatar_default', 'mystery', 'yes'), ('large_size_w', '1024', 'yes'), ('large_size_h', '1024', 'yes'), ('image_default_link_type', 'none', 'yes'), ('image_default_size', '', 'yes'), ('image_default_align', '', 'yes'), ('close_comments_for_old_posts', '0', 'yes'), ('close_comments_days_old', '14', 'yes'), ('thread_comments', '1', 'yes'), ('thread_comments_depth', '5', 'yes'), ('page_comments', '0', 'yes'), ('comments_per_page', '50', 'yes'), ('default_comments_page', 'newest', 'yes'), ('comment_order', 'asc', 'yes'), ('sticky_posts', 'a:0:{}', 'yes'), ('widget_categories', 'a:0:{}', 'yes'), ('widget_text', 'a:0:{}', 'yes'), ('widget_rss', 'a:0:{}', 'yes'), ('uninstall_plugins', 'a:0:{}', 'no'), ('timezone_string', '', 'yes'), ('page_for_posts', '0', 'yes'), ('page_on_front', '0', 'yes'), ('default_post_format', '0', 'yes'), ('link_manager_enabled', '0', 'yes'), ('finished_splitting_shared_terms', '1', 'yes'), ('site_icon', '0', 'yes'), ('medium_large_size_w', '768', 'yes'), ('medium_large_size_h', '0', 'yes'), ('wp_page_for_privacy_policy', '0', 'yes'), ('show_comments_cookies_opt_in', '1', 'yes'), ('admin_email_lifespan', '1598714211', 'yes'), ('initial_db_version', '45805', 'yes')
-2020-03-02T15:16:51.253244Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'home'
-2020-03-02T15:16:51.253581Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'blodotgsping_url'
-2020-03-02T15:16:51.253827Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'bodyterminator'
-2020-03-02T15:16:51.254038Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'emailtestonly'
-2020-03-02T15:16:51.254240Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'phoneemail_separator'
-2020-03-02T15:16:51.254431Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'smilies_directory'
-2020-03-02T15:16:51.254668Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'subjectprefix'
-2020-03-02T15:16:51.254847Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'use_bbcode'
-2020-03-02T15:16:51.255036Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'use_blodotgsping'
-2020-03-02T15:16:51.255309Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'use_phoneemail'
-2020-03-02T15:16:51.255549Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'use_quicktags'
-2020-03-02T15:16:51.255788Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'use_weblogsping'
-2020-03-02T15:16:51.256025Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'weblogs_cache_file'
-2020-03-02T15:16:51.256232Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'use_preview'
-2020-03-02T15:16:51.256477Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'use_htmltrans'
-2020-03-02T15:16:51.256683Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'smilies_directory'
-2020-03-02T15:16:51.256944Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'fileupload_allowedusers'
-2020-03-02T15:16:51.257150Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'use_phoneemail'
-2020-03-02T15:16:51.257393Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'default_post_status'
-2020-03-02T15:16:51.257602Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'default_post_category'
-2020-03-02T15:16:51.257792Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'archive_mode'
-2020-03-02T15:16:51.257979Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'time_difference'
-2020-03-02T15:16:51.258165Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'links_minadminlevel'
-2020-03-02T15:16:51.258391Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'links_use_adminlevels'
-2020-03-02T15:16:51.258649Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'links_rating_type'
-2020-03-02T15:16:51.258909Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'links_rating_char'
-2020-03-02T15:16:51.259166Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'links_rating_ignore_zero'
-2020-03-02T15:16:51.259425Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'links_rating_single_image'
-2020-03-02T15:16:51.259683Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'links_rating_image0'
-2020-03-02T15:16:51.260031Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'links_rating_image1'
-2020-03-02T15:16:51.260373Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'links_rating_image2'
-2020-03-02T15:16:51.260570Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'links_rating_image3'
-2020-03-02T15:16:51.260822Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'links_rating_image4'
-2020-03-02T15:16:51.261067Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'links_rating_image5'
-2020-03-02T15:16:51.261980Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'links_rating_image6'
-2020-03-02T15:16:51.262213Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'links_rating_image7'
-2020-03-02T15:16:51.262445Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'links_rating_image8'
-2020-03-02T15:16:51.262678Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'links_rating_image9'
-2020-03-02T15:16:51.262903Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'links_recently_updated_time'
-2020-03-02T15:16:51.263148Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'links_recently_updated_prepend'
-2020-03-02T15:16:51.263414Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'links_recently_updated_append'
-2020-03-02T15:16:51.263667Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'weblogs_cacheminutes'
-2020-03-02T15:16:51.263973Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'comment_allowed_tags'
-2020-03-02T15:16:51.264190Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'search_engine_friendly_urls'
-2020-03-02T15:16:51.264388Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'default_geourl_lat'
-2020-03-02T15:16:51.264616Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'default_geourl_lon'
-2020-03-02T15:16:51.264821Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'use_default_geourl'
-2020-03-02T15:16:51.265060Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'weblogs_xml_url'
-2020-03-02T15:16:51.265287Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'new_users_can_blog'
-2020-03-02T15:16:51.265450Z 8 Query SELECT autoload FROM wp_options WHERE option_name = '_wpnonce'
-2020-03-02T15:16:51.265694Z 8 Query SELECT autoload FROM wp_options WHERE option_name = '_wp_http_referer'
-2020-03-02T15:16:51.265889Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'Update'
-2020-03-02T15:16:51.266080Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'action'
-2020-03-02T15:16:51.266273Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'rich_editing'
-2020-03-02T15:16:51.266451Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'autosave_interval'
-2020-03-02T15:16:51.266633Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'deactivated_plugins'
-2020-03-02T15:16:51.266834Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'can_compress_scripts'
-2020-03-02T15:16:51.267015Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'page_uris'
-2020-03-02T15:16:51.267196Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'update_core'
-2020-03-02T15:16:51.267370Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'update_plugins'
-2020-03-02T15:16:51.267543Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'update_themes'
-2020-03-02T15:16:51.267854Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'doing_cron'
-2020-03-02T15:16:51.268129Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'random_seed'
-2020-03-02T15:16:51.268347Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'rss_excerpt_length'
-2020-03-02T15:16:51.268530Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'secret'
-2020-03-02T15:16:51.268706Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'use_linksupdate'
-2020-03-02T15:16:51.268887Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'default_comment_status_page'
-2020-03-02T15:16:51.269072Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'wporg_popular_tags'
-2020-03-02T15:16:51.269250Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'what_to_show'
-2020-03-02T15:16:51.269424Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'rss_language'
-2020-03-02T15:16:51.269598Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'language'
-2020-03-02T15:16:51.269774Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'enable_xmlrpc'
-2020-03-02T15:16:51.269948Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'enable_app'
-2020-03-02T15:16:51.270122Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'embed_autourls'
-2020-03-02T15:16:51.270297Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'default_post_edit_rows'
-2020-03-02T15:16:51.270473Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'gzipcompression'
-2020-03-02T15:16:51.270651Z 8 Query SELECT autoload FROM wp_options WHERE option_name = 'advanced_edit'
-2020-03-02T15:16:51.270820Z 8 Query DELETE FROM wp_options WHERE option_name REGEXP '^rss_[0-9a-f]{32}(_ts)?$'
-2020-03-02T15:16:51.271454Z 8 Query DELETE a, b FROM wp_options a, wp_options b
- WHERE a.option_name LIKE '\\_transient\\_%'
- AND a.option_name NOT LIKE '\\_transient\\_timeout\\_%'
- AND b.option_name = CONCAT( '_transient_timeout_', SUBSTRING( a.option_name, 12 ) )
- AND b.option_value < 1583162211
-2020-03-02T15:16:51.271864Z 8 Query DELETE a, b FROM wp_options a, wp_options b
- WHERE a.option_name LIKE '\\_site\\_transient\\_%'
- AND a.option_name NOT LIKE '\\_site\\_transient\\_timeout\\_%'
- AND b.option_name = CONCAT( '_site_transient_timeout_', SUBSTRING( a.option_name, 17 ) )
- AND b.option_value < 1583162211
-2020-03-02T15:16:51.272148Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.272368Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.272740Z 8 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('wp_user_roles', 'a:1:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:0:{}}}', 'yes') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:16:51.275230Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.275448Z 8 Query SHOW FULL COLUMNS FROM `wp_options`
-2020-03-02T15:16:51.275842Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:2:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:0:{}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.281457Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.281902Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:3:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:0:{}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.283305Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.283498Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:4:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:0:{}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.291659Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.292017Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:0:{}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.293811Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.294046Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:1:{s:13:\"switch_themes\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.301890Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.302235Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:2:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.304151Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.304426Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:3:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.306162Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.306409Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:4:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.314669Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.315063Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:5:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.316785Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.317081Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:6:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.325683Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.326047Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:7:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.335095Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.335436Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:8:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.337131Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.337401Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:9:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.345668Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.346066Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:10:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.356783Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.357124Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:11:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.365161Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.365490Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:12:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.366761Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.367001Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:13:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.375249Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.375719Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:14:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.377359Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.377746Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:15:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.385243Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.385606Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:16:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.387045Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.387313Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:17:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.395579Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.396114Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:18:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.397707Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.397982Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:19:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.398683Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.398939Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:20:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.399781Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.400145Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:21:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.401591Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.401887Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:22:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.409590Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.409938Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:23:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.411823Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.412132Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:24:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.413712Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.413977Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:25:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.423525Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.423957Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:26:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.425641Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.425969Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:27:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.433631Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.433971Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:28:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.435133Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.435386Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:29:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.436068Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.436333Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:0:{}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.437429Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.437680Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:1:{s:17:\"moderate_comments\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.445778Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.446108Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:2:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.447565Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.447883Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:3:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.456680Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.457098Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:4:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.464837Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.465224Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:5:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.473377Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.473834Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:6:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.475141Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.475447Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:7:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.483623Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.484309Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:8:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.485702Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.486161Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:9:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.494213Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.494619Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:10:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.496518Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.496855Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:11:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.498105Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.498378Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:12:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.506897Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.507283Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:13:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.508762Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.509107Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:14:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.517888Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.518246Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:15:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.527100Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.527634Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:16:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.529546Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.529898Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:17:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.537967Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.538378Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:18:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.546649Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.547005Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:0:{}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.558255Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.558637Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:1:{s:12:\"upload_files\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.560061Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.560503Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:2:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.569016Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.569449Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:3:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.577487Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.577882Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:4:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.586179Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.586784Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:5:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.594695Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.595191Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:6:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.603288Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.603641Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:7:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.605045Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.605375Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:0:{}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.617684Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.618274Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:1:{s:10:\"edit_posts\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.620418Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.620812Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:2:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.622184Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.622480Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:3:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.630833Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.631324Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:0:{}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.633317Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.633663Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:1:{s:4:\"read\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.642806Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.643266Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:30:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.644876Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.645214Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:31:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.653769Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.654147Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:32:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.663205Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.663647Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:33:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.671593Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.672051Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:34:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.679929Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.680391Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:35:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.688554Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.688918Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:36:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.690406Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.690691Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:37:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.699127Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.699554Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:38:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.701027Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.701311Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:39:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.709818Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.710343Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:40:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.712001Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.712284Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:41:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.713505Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.713826Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:42:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.721764Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.722154Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:43:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.723645Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.724079Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:44:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.732686Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.733117Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:45:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:19:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.741324Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.741765Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:45:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:20:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.749618Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.750045Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:45:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:21:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.751794Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.752124Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:45:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:22:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.760501Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.760940Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:45:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:23:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.768907Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.769351Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:45:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:24:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.777922Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.778355Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:45:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:25:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.787068Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.787590Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:45:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:26:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.795789Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.796194Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:45:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:27:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.803957Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.804468Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:45:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:28:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.805945Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.806256Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:45:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:29:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.814142Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.814623Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:45:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:30:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.816615Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.816948Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:45:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:31:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.825343Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.825835Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:45:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:32:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.833714Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.834127Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:45:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:33:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.842905Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.843373Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:45:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:34:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.845407Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.845735Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:46:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;s:12:\"delete_users\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:34:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.853466Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.853876Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:47:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;s:12:\"delete_users\";b:1;s:12:\"create_users\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:34:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:8:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.856179Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.856641Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:47:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;s:12:\"delete_users\";b:1;s:12:\"create_users\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:34:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:9:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.864995Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.865526Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:47:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;s:12:\"delete_users\";b:1;s:12:\"create_users\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:34:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:10:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;s:22:\"delete_published_posts\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:4:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.873905Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.874413Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:47:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;s:12:\"delete_users\";b:1;s:12:\"create_users\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:34:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:10:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;s:22:\"delete_published_posts\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:5:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.876575Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.876966Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:48:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;s:12:\"delete_users\";b:1;s:12:\"create_users\";b:1;s:17:\"unfiltered_upload\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:34:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:10:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;s:22:\"delete_published_posts\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:5:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.885597Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.886111Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:49:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;s:12:\"delete_users\";b:1;s:12:\"create_users\";b:1;s:17:\"unfiltered_upload\";b:1;s:14:\"edit_dashboard\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:34:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:10:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;s:22:\"delete_published_posts\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:5:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.894105Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.894523Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:50:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;s:12:\"delete_users\";b:1;s:12:\"create_users\";b:1;s:17:\"unfiltered_upload\";b:1;s:14:\"edit_dashboard\";b:1;s:14:\"update_plugins\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:34:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:10:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;s:22:\"delete_published_posts\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:5:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.902987Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.903423Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:51:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;s:12:\"delete_users\";b:1;s:12:\"create_users\";b:1;s:17:\"unfiltered_upload\";b:1;s:14:\"edit_dashboard\";b:1;s:14:\"update_plugins\";b:1;s:14:\"delete_plugins\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:34:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:10:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;s:22:\"delete_published_posts\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:5:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.911641Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.912183Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:52:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;s:12:\"delete_users\";b:1;s:12:\"create_users\";b:1;s:17:\"unfiltered_upload\";b:1;s:14:\"edit_dashboard\";b:1;s:14:\"update_plugins\";b:1;s:14:\"delete_plugins\";b:1;s:15:\"install_plugins\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:34:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:10:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;s:22:\"delete_published_posts\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:5:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.913759Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.914091Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:53:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;s:12:\"delete_users\";b:1;s:12:\"create_users\";b:1;s:17:\"unfiltered_upload\";b:1;s:14:\"edit_dashboard\";b:1;s:14:\"update_plugins\";b:1;s:14:\"delete_plugins\";b:1;s:15:\"install_plugins\";b:1;s:13:\"update_themes\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:34:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:10:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;s:22:\"delete_published_posts\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:5:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.922169Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.922596Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:54:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;s:12:\"delete_users\";b:1;s:12:\"create_users\";b:1;s:17:\"unfiltered_upload\";b:1;s:14:\"edit_dashboard\";b:1;s:14:\"update_plugins\";b:1;s:14:\"delete_plugins\";b:1;s:15:\"install_plugins\";b:1;s:13:\"update_themes\";b:1;s:14:\"install_themes\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:34:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:10:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;s:22:\"delete_published_posts\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:5:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.924332Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.924718Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:55:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;s:12:\"delete_users\";b:1;s:12:\"create_users\";b:1;s:17:\"unfiltered_upload\";b:1;s:14:\"edit_dashboard\";b:1;s:14:\"update_plugins\";b:1;s:14:\"delete_plugins\";b:1;s:15:\"install_plugins\";b:1;s:13:\"update_themes\";b:1;s:14:\"install_themes\";b:1;s:11:\"update_core\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:34:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:10:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;s:22:\"delete_published_posts\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:5:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.937541Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.938134Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:56:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;s:12:\"delete_users\";b:1;s:12:\"create_users\";b:1;s:17:\"unfiltered_upload\";b:1;s:14:\"edit_dashboard\";b:1;s:14:\"update_plugins\";b:1;s:14:\"delete_plugins\";b:1;s:15:\"install_plugins\";b:1;s:13:\"update_themes\";b:1;s:14:\"install_themes\";b:1;s:11:\"update_core\";b:1;s:10:\"list_users\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:34:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:10:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;s:22:\"delete_published_posts\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:5:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.940126Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.940506Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:57:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;s:12:\"delete_users\";b:1;s:12:\"create_users\";b:1;s:17:\"unfiltered_upload\";b:1;s:14:\"edit_dashboard\";b:1;s:14:\"update_plugins\";b:1;s:14:\"delete_plugins\";b:1;s:15:\"install_plugins\";b:1;s:13:\"update_themes\";b:1;s:14:\"install_themes\";b:1;s:11:\"update_core\";b:1;s:10:\"list_users\";b:1;s:12:\"remove_users\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:34:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:10:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;s:22:\"delete_published_posts\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:5:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.949296Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.949826Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:58:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;s:12:\"delete_users\";b:1;s:12:\"create_users\";b:1;s:17:\"unfiltered_upload\";b:1;s:14:\"edit_dashboard\";b:1;s:14:\"update_plugins\";b:1;s:14:\"delete_plugins\";b:1;s:15:\"install_plugins\";b:1;s:13:\"update_themes\";b:1;s:14:\"install_themes\";b:1;s:11:\"update_core\";b:1;s:10:\"list_users\";b:1;s:12:\"remove_users\";b:1;s:13:\"promote_users\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:34:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:10:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;s:22:\"delete_published_posts\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:5:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.958330Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.958795Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:59:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;s:12:\"delete_users\";b:1;s:12:\"create_users\";b:1;s:17:\"unfiltered_upload\";b:1;s:14:\"edit_dashboard\";b:1;s:14:\"update_plugins\";b:1;s:14:\"delete_plugins\";b:1;s:15:\"install_plugins\";b:1;s:13:\"update_themes\";b:1;s:14:\"install_themes\";b:1;s:11:\"update_core\";b:1;s:10:\"list_users\";b:1;s:12:\"remove_users\";b:1;s:13:\"promote_users\";b:1;s:18:\"edit_theme_options\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:34:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:10:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;s:22:\"delete_published_posts\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:5:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.960562Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.960983Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:60:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;s:12:\"delete_users\";b:1;s:12:\"create_users\";b:1;s:17:\"unfiltered_upload\";b:1;s:14:\"edit_dashboard\";b:1;s:14:\"update_plugins\";b:1;s:14:\"delete_plugins\";b:1;s:15:\"install_plugins\";b:1;s:13:\"update_themes\";b:1;s:14:\"install_themes\";b:1;s:11:\"update_core\";b:1;s:10:\"list_users\";b:1;s:12:\"remove_users\";b:1;s:13:\"promote_users\";b:1;s:18:\"edit_theme_options\";b:1;s:13:\"delete_themes\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:34:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:10:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;s:22:\"delete_published_posts\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:5:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.969292Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_user_roles' LIMIT 1
-2020-03-02T15:16:51.969869Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:5:{s:13:\"administrator\";a:2:{s:4:\"name\";s:13:\"Administrator\";s:12:\"capabilities\";a:61:{s:13:\"switch_themes\";b:1;s:11:\"edit_themes\";b:1;s:16:\"activate_plugins\";b:1;s:12:\"edit_plugins\";b:1;s:10:\"edit_users\";b:1;s:10:\"edit_files\";b:1;s:14:\"manage_options\";b:1;s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:6:\"import\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:8:\"level_10\";b:1;s:7:\"level_9\";b:1;s:7:\"level_8\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;s:12:\"delete_users\";b:1;s:12:\"create_users\";b:1;s:17:\"unfiltered_upload\";b:1;s:14:\"edit_dashboard\";b:1;s:14:\"update_plugins\";b:1;s:14:\"delete_plugins\";b:1;s:15:\"install_plugins\";b:1;s:13:\"update_themes\";b:1;s:14:\"install_themes\";b:1;s:11:\"update_core\";b:1;s:10:\"list_users\";b:1;s:12:\"remove_users\";b:1;s:13:\"promote_users\";b:1;s:18:\"edit_theme_options\";b:1;s:13:\"delete_themes\";b:1;s:6:\"export\";b:1;}}s:6:\"editor\";a:2:{s:4:\"name\";s:6:\"Editor\";s:12:\"capabilities\";a:34:{s:17:\"moderate_comments\";b:1;s:17:\"manage_categories\";b:1;s:12:\"manage_links\";b:1;s:12:\"upload_files\";b:1;s:15:\"unfiltered_html\";b:1;s:10:\"edit_posts\";b:1;s:17:\"edit_others_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:10:\"edit_pages\";b:1;s:4:\"read\";b:1;s:7:\"level_7\";b:1;s:7:\"level_6\";b:1;s:7:\"level_5\";b:1;s:7:\"level_4\";b:1;s:7:\"level_3\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:17:\"edit_others_pages\";b:1;s:20:\"edit_published_pages\";b:1;s:13:\"publish_pages\";b:1;s:12:\"delete_pages\";b:1;s:19:\"delete_others_pages\";b:1;s:22:\"delete_published_pages\";b:1;s:12:\"delete_posts\";b:1;s:19:\"delete_others_posts\";b:1;s:22:\"delete_published_posts\";b:1;s:20:\"delete_private_posts\";b:1;s:18:\"edit_private_posts\";b:1;s:18:\"read_private_posts\";b:1;s:20:\"delete_private_pages\";b:1;s:18:\"edit_private_pages\";b:1;s:18:\"read_private_pages\";b:1;}}s:6:\"author\";a:2:{s:4:\"name\";s:6:\"Author\";s:12:\"capabilities\";a:10:{s:12:\"upload_files\";b:1;s:10:\"edit_posts\";b:1;s:20:\"edit_published_posts\";b:1;s:13:\"publish_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_2\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;s:22:\"delete_published_posts\";b:1;}}s:11:\"contributor\";a:2:{s:4:\"name\";s:11:\"Contributor\";s:12:\"capabilities\";a:5:{s:10:\"edit_posts\";b:1;s:4:\"read\";b:1;s:7:\"level_1\";b:1;s:7:\"level_0\";b:1;s:12:\"delete_posts\";b:1;}}s:10:\"subscriber\";a:2:{s:4:\"name\";s:10:\"Subscriber\";s:12:\"capabilities\";a:2:{s:4:\"read\";b:1;s:7:\"level_0\";b:1;}}}' WHERE `option_name` = 'wp_user_roles'
-2020-03-02T15:16:51.978003Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'blogname' LIMIT 1
-2020-03-02T15:16:51.978334Z 8 Query UPDATE `wp_options` SET `option_value` = 'Vitess Test' WHERE `option_name` = 'blogname'
-2020-03-02T15:16:51.987738Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'admin_email' LIMIT 1
-2020-03-02T15:16:51.988163Z 8 Query UPDATE `wp_options` SET `option_value` = 'andres@taylor.se' WHERE `option_name` = 'admin_email'
-2020-03-02T15:16:51.995742Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'blog_public' LIMIT 1
-2020-03-02T15:16:51.996131Z 8 Query UPDATE `wp_options` SET `option_value` = '1' WHERE `option_name` = 'blog_public'
-2020-03-02T15:16:52.004314Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'fresh_site' LIMIT 1
-2020-03-02T15:16:52.004626Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'fresh_site' LIMIT 1
-2020-03-02T15:16:52.004852Z 8 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('fresh_site', '1', 'yes') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:16:52.006035Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'WPLANG' LIMIT 1
-2020-03-02T15:16:52.006240Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'WPLANG' LIMIT 1
-2020-03-02T15:16:52.006488Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:52.006771Z 8 Query SELECT * FROM wp_users WHERE user_login = 'wordpress-user' LIMIT 1
-2020-03-02T15:16:52.009717Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'blog_charset' LIMIT 1
-2020-03-02T15:16:52.010050Z 8 Query SELECT * FROM wp_users WHERE user_login = 'wordpress-user' LIMIT 1
-2020-03-02T15:16:52.010324Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'blog_charset' LIMIT 1
-2020-03-02T15:16:52.010587Z 8 Query SELECT ID FROM wp_users WHERE user_nicename = 'wordpress-user' AND user_login != 'wordpress-user' LIMIT 1
-2020-03-02T15:16:52.011067Z 8 Query SELECT * FROM wp_users WHERE user_email = 'andres@taylor.se' LIMIT 1
-2020-03-02T15:16:52.011412Z 8 Query SHOW FULL COLUMNS FROM `wp_users`
-2020-03-02T15:16:52.012069Z 8 Query INSERT INTO `wp_users` (`user_pass`, `user_nicename`, `user_email`, `user_url`, `user_registered`, `user_activation_key`, `display_name`, `user_login`) VALUES ('$P$BsdeZUeiXTcgnssTdznPM8dhFubsNQ.', 'wordpress-user', 'andres@taylor.se', '', '2020-03-02 15:16:52', '', 'wordpress-user', 'wordpress-user')
-2020-03-02T15:16:52.014956Z 8 Query SELECT * FROM wp_users WHERE ID = '1' LIMIT 1
-2020-03-02T15:16:52.015312Z 8 Query SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC
-2020-03-02T15:16:52.015872Z 8 Query SELECT umeta_id FROM wp_usermeta WHERE meta_key = 'nickname' AND user_id = 1
-2020-03-02T15:16:52.016204Z 8 Query SHOW FULL COLUMNS FROM `wp_usermeta`
-2020-03-02T15:16:52.016787Z 8 Query INSERT INTO `wp_usermeta` (`user_id`, `meta_key`, `meta_value`) VALUES (1, 'nickname', 'wordpress-user')
-2020-03-02T15:16:52.023131Z 8 Query SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC
-2020-03-02T15:16:52.023555Z 8 Query SELECT umeta_id FROM wp_usermeta WHERE meta_key = 'first_name' AND user_id = 1
-2020-03-02T15:16:52.023910Z 8 Query INSERT INTO `wp_usermeta` (`user_id`, `meta_key`, `meta_value`) VALUES (1, 'first_name', '')
-2020-03-02T15:16:52.032034Z 8 Query SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC
-2020-03-02T15:16:52.032391Z 8 Query SELECT umeta_id FROM wp_usermeta WHERE meta_key = 'last_name' AND user_id = 1
-2020-03-02T15:16:52.032806Z 8 Query INSERT INTO `wp_usermeta` (`user_id`, `meta_key`, `meta_value`) VALUES (1, 'last_name', '')
-2020-03-02T15:16:52.040924Z 8 Query SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC
-2020-03-02T15:16:52.041258Z 8 Query SELECT umeta_id FROM wp_usermeta WHERE meta_key = 'description' AND user_id = 1
-2020-03-02T15:16:52.041523Z 8 Query INSERT INTO `wp_usermeta` (`user_id`, `meta_key`, `meta_value`) VALUES (1, 'description', '')
-2020-03-02T15:16:52.050187Z 8 Query SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC
-2020-03-02T15:16:52.050595Z 8 Query SELECT umeta_id FROM wp_usermeta WHERE meta_key = 'rich_editing' AND user_id = 1
-2020-03-02T15:16:52.050916Z 8 Query INSERT INTO `wp_usermeta` (`user_id`, `meta_key`, `meta_value`) VALUES (1, 'rich_editing', 'true')
-2020-03-02T15:16:52.053111Z 8 Query SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC
-2020-03-02T15:16:52.053441Z 8 Query SELECT umeta_id FROM wp_usermeta WHERE meta_key = 'syntax_highlighting' AND user_id = 1
-2020-03-02T15:16:52.053848Z 8 Query INSERT INTO `wp_usermeta` (`user_id`, `meta_key`, `meta_value`) VALUES (1, 'syntax_highlighting', 'true')
-2020-03-02T15:16:52.061219Z 8 Query SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC
-2020-03-02T15:16:52.061593Z 8 Query SELECT umeta_id FROM wp_usermeta WHERE meta_key = 'comment_shortcuts' AND user_id = 1
-2020-03-02T15:16:52.061902Z 8 Query INSERT INTO `wp_usermeta` (`user_id`, `meta_key`, `meta_value`) VALUES (1, 'comment_shortcuts', 'false')
-2020-03-02T15:16:52.069821Z 8 Query SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC
-2020-03-02T15:16:52.070144Z 8 Query SELECT umeta_id FROM wp_usermeta WHERE meta_key = 'admin_color' AND user_id = 1
-2020-03-02T15:16:52.070837Z 8 Query INSERT INTO `wp_usermeta` (`user_id`, `meta_key`, `meta_value`) VALUES (1, 'admin_color', 'fresh')
-2020-03-02T15:16:52.078501Z 8 Query SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC
-2020-03-02T15:16:52.078859Z 8 Query SELECT umeta_id FROM wp_usermeta WHERE meta_key = 'use_ssl' AND user_id = 1
-2020-03-02T15:16:52.079173Z 8 Query INSERT INTO `wp_usermeta` (`user_id`, `meta_key`, `meta_value`) VALUES (1, 'use_ssl', '0')
-2020-03-02T15:16:52.087158Z 8 Query SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC
-2020-03-02T15:16:52.087502Z 8 Query SELECT umeta_id FROM wp_usermeta WHERE meta_key = 'show_admin_bar_front' AND user_id = 1
-2020-03-02T15:16:52.087787Z 8 Query INSERT INTO `wp_usermeta` (`user_id`, `meta_key`, `meta_value`) VALUES (1, 'show_admin_bar_front', 'true')
-2020-03-02T15:16:52.095635Z 8 Query SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC
-2020-03-02T15:16:52.096020Z 8 Query SELECT umeta_id FROM wp_usermeta WHERE meta_key = 'locale' AND user_id = 1
-2020-03-02T15:16:52.096292Z 8 Query INSERT INTO `wp_usermeta` (`user_id`, `meta_key`, `meta_value`) VALUES (1, 'locale', '')
-2020-03-02T15:16:52.097408Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'initial_db_version' LIMIT 1
-2020-03-02T15:16:52.097637Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'default_role' LIMIT 1
-2020-03-02T15:16:52.097863Z 8 Query SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC
-2020-03-02T15:16:52.098103Z 8 Query SELECT umeta_id FROM wp_usermeta WHERE meta_key = 'wp_capabilities' AND user_id = 1
-2020-03-02T15:16:52.098341Z 8 Query INSERT INTO `wp_usermeta` (`user_id`, `meta_key`, `meta_value`) VALUES (1, 'wp_capabilities', 'a:1:{s:10:\"subscriber\";b:1;}')
-2020-03-02T15:16:52.106385Z 8 Query SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC
-2020-03-02T15:16:52.106892Z 8 Query SELECT umeta_id FROM wp_usermeta WHERE meta_key = 'wp_user_level' AND user_id = 1
-2020-03-02T15:16:52.107211Z 8 Query INSERT INTO `wp_usermeta` (`user_id`, `meta_key`, `meta_value`) VALUES (1, 'wp_user_level', '0')
-2020-03-02T15:16:52.108488Z 8 Query SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC
-2020-03-02T15:16:52.108847Z 8 Query SELECT * FROM wp_users WHERE ID = '1' LIMIT 1
-2020-03-02T15:16:52.109142Z 8 Query INSERT INTO `wp_usermeta` (`user_id`, `meta_key`, `meta_value`) VALUES (1, 'dismissed_wp_pointers', '')
-2020-03-02T15:16:52.117275Z 8 Query SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC
-2020-03-02T15:16:52.117745Z 8 Query SELECT umeta_id FROM wp_usermeta WHERE meta_key = 'wp_capabilities' AND user_id = 1
-2020-03-02T15:16:52.118092Z 8 Query UPDATE `wp_usermeta` SET `meta_value` = 'a:1:{s:13:\"administrator\";b:1;}' WHERE `user_id` = 1 AND `meta_key` = 'wp_capabilities'
-2020-03-02T15:16:52.125656Z 8 Query SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC
-2020-03-02T15:16:52.126105Z 8 Query SELECT umeta_id FROM wp_usermeta WHERE meta_key = 'wp_user_level' AND user_id = 1
-2020-03-02T15:16:52.126474Z 8 Query UPDATE `wp_usermeta` SET `meta_value` = '10' WHERE `user_id` = 1 AND `meta_key` = 'wp_user_level'
-2020-03-02T15:16:52.141944Z 8 Query SHOW FULL COLUMNS FROM `wp_terms`
-2020-03-02T15:16:52.142654Z 8 Query INSERT INTO `wp_terms` (`term_id`, `name`, `slug`, `term_group`) VALUES (1, 'Uncategorized', 'uncategorized', 0)
-2020-03-02T15:16:52.144823Z 8 Query SHOW FULL COLUMNS FROM `wp_term_taxonomy`
-2020-03-02T15:16:52.145510Z 8 Query INSERT INTO `wp_term_taxonomy` (`term_id`, `taxonomy`, `description`, `parent`, `count`) VALUES (1, 'category', '', 0, 1)
-2020-03-02T15:16:52.146984Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'timezone_string' LIMIT 1
-2020-03-02T15:16:52.147211Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'timezone_string' LIMIT 1
-2020-03-02T15:16:52.147383Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'gmt_offset' LIMIT 1
-2020-03-02T15:16:52.147622Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'home' LIMIT 1
-2020-03-02T15:16:52.147883Z 8 Query SHOW FULL COLUMNS FROM `wp_posts`
-2020-03-02T15:16:52.148612Z 8 Query INSERT INTO `wp_posts` (`post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_excerpt`, `post_title`, `post_name`, `post_modified`, `post_modified_gmt`, `guid`, `comment_count`, `to_ping`, `pinged`, `post_content_filtered`) VALUES (1, '2020-03-02 15:16:52', '2020-03-02 15:16:52', '\n Welcome to WordPress. This is your first post. Edit or delete it, then start writing! \n', '', 'Hello world!', 'hello-world', '2020-03-02 15:16:52', '2020-03-02 15:16:52', 'http://127.0.0.1/wordpress/?p=1', 1, '', '', '')
-2020-03-02T15:16:52.156283Z 8 Query INSERT INTO `wp_term_relationships` (`term_taxonomy_id`, `object_id`) VALUES (1, 1)
-2020-03-02T15:16:52.164653Z 8 Query SHOW FULL COLUMNS FROM `wp_comments`
-2020-03-02T15:16:52.165431Z 8 Query INSERT INTO `wp_comments` (`comment_post_ID`, `comment_author`, `comment_author_email`, `comment_author_url`, `comment_date`, `comment_date_gmt`, `comment_content`) VALUES (1, 'A WordPress Commenter', 'wapuu@wordpress.example', 'https://wordpress.org/', '2020-03-02 15:16:52', '2020-03-02 15:16:52', 'Hi, this is a comment.\nTo get started with moderating, editing, and deleting comments, please visit the Comments screen in the dashboard.\nCommenter avatars come from Gravatar.')
-2020-03-02T15:16:52.173346Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:52.173636Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'home' LIMIT 1
-2020-03-02T15:16:52.173959Z 8 Query INSERT INTO `wp_posts` (`post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_excerpt`, `comment_status`, `post_title`, `post_name`, `post_modified`, `post_modified_gmt`, `guid`, `post_type`, `to_ping`, `pinged`, `post_content_filtered`) VALUES (1, '2020-03-02 15:16:52', '2020-03-02 15:16:52', '\nThis is an example page. It\'s different from a blog post because it will stay in one place and will show up in your site navigation (in most themes). Most people start with an About page that introduces them to potential site visitors. It might say something like this: \n\n\n\nHi there! I\'m a bike messenger by day, aspiring actor by night, and this is my website. I live in Los Angeles, have a great dog named Jack, and I like piña coladas. (And gettin\' caught in the rain.) \n\n\n\n...or something like this: \n\n\n\nThe XYZ Doohickey Company was founded in 1971, and has been providing quality doohickeys to the public ever since. Located in Gotham City, XYZ employs over 2,000 people and does all kinds of awesome things for the Gotham community. \n\n\n\nAs a new WordPress user, you should go to your dashboard to delete this page and create new pages for your content. Have fun! \n', '', 'closed', 'Sample Page', 'sample-page', '2020-03-02 15:16:52', '2020-03-02 15:16:52', 'http://127.0.0.1/wordpress/?page_id=2', 'page', '', '', '')
-2020-03-02T15:16:52.183452Z 8 Query SHOW FULL COLUMNS FROM `wp_postmeta`
-2020-03-02T15:16:52.184124Z 8 Query INSERT INTO `wp_postmeta` (`post_id`, `meta_key`, `meta_value`) VALUES (2, '_wp_page_template', 'default')
-2020-03-02T15:16:52.191913Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'home' LIMIT 1
-2020-03-02T15:16:52.192253Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'home' LIMIT 1
-2020-03-02T15:16:52.192682Z 8 Query INSERT INTO `wp_posts` (`post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_excerpt`, `comment_status`, `post_title`, `post_name`, `post_modified`, `post_modified_gmt`, `guid`, `post_type`, `post_status`, `to_ping`, `pinged`, `post_content_filtered`) VALUES (1, '2020-03-02 15:16:52', '2020-03-02 15:16:52', 'Who we areOur website address is: http://127.0.0.1/wordpress. What personal data we collect and why we collect itCommentsWhen visitors leave comments on the site we collect the data shown in the comments form, and also the visitor’s IP address and browser user agent string to help spam detection. An anonymized string created from your email address (also called a hash) may be provided to the Gravatar service to see if you are using it. The Gravatar service privacy policy is available here: https://automattic.com/privacy/. After approval of your comment, your profile picture is visible to the public in the context of your comment. MediaIf you upload images to the website, you should avoid uploading images with embedded location data (EXIF GPS) included. Visitors to the website can download and extract any location data from images on the website. Contact formsCookiesIf you leave a comment on our site you may opt-in to saving your name, email address and website in cookies. These are for your convenience so that you do not have to fill in your details again when you leave another comment. These cookies will last for one year. If you visit our login page, we will set a temporary cookie to determine if your browser accepts cookies. This cookie contains no personal data and is discarded when you close your browser. When you log in, we will also set up several cookies to save your login information and your screen display choices. Login cookies last for two days, and screen options cookies last for a year. If you select "Remember Me", your login will persist for two weeks. If you log out of your account, the login cookies will be removed. If you edit or publish an article, an additional cookie will be saved in your browser. This cookie includes no personal data and simply indicates the post ID of the article you just edited. It expires after 1 day. Embedded content from other websitesArticles on this site may include embedded content (e.g. videos, images, articles, etc.). Embedded content from other websites behaves in the exact same way as if the visitor has visited the other website. These websites may collect data about you, use cookies, embed additional third-party tracking, and monitor your interaction with that embedded content, including tracking your interaction with the embedded content if you have an account and are logged in to that website. AnalyticsWho we share your data withHow long we retain your dataIf you leave a comment, the comment and its metadata are retained indefinitely. This is so we can recognize and approve any follow-up comments automatically instead of holding them in a moderation queue. For users that register on our website (if any), we also store the personal information they provide in their user profile. All users can see, edit, or delete their personal information at any time (except they cannot change their username). Website administrators can also see and edit that information. What rights you have over your dataIf you have an account on this site, or have left comments, you can request to receive an exported file of the personal data we hold about you, including any data you have provided to us. You can also request that we erase any personal data we hold about you. This does not include any data we are obliged to keep for administrative, legal, or security purposes. Where we send your dataVisitor comments may be checked through an automated spam detection service. Your contact informationAdditional informationHow we protect your dataWhat data breach procedures we have in placeWhat third parties we receive data fromWhat automated decision making and/or profiling we do with user dataIndustry regulatory disclosure requirements', '', 'closed', 'Privacy Policy', 'privacy-policy', '2020-03-02 15:16:52', '2020-03-02 15:16:52', 'http://127.0.0.1/wordpress/?page_id=3', 'page', 'draft', '', '', '')
-2020-03-02T15:16:52.200849Z 8 Query INSERT INTO `wp_postmeta` (`post_id`, `meta_key`, `meta_value`) VALUES (3, '_wp_page_template', 'default')
-2020-03-02T15:16:52.210152Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'wp_page_for_privacy_policy' LIMIT 1
-2020-03-02T15:16:52.210575Z 8 Query UPDATE `wp_options` SET `option_value` = '3' WHERE `option_name` = 'wp_page_for_privacy_policy'
-2020-03-02T15:16:52.218395Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'widget_search' LIMIT 1
-2020-03-02T15:16:52.218748Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'widget_search' LIMIT 1
-2020-03-02T15:16:52.219017Z 8 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('widget_search', 'a:2:{i:2;a:1:{s:5:\"title\";s:0:\"\";}s:12:\"_multiwidget\";i:1;}', 'yes') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:16:52.227070Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'widget_recent-posts' LIMIT 1
-2020-03-02T15:16:52.227337Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'widget_recent-posts' LIMIT 1
-2020-03-02T15:16:52.227563Z 8 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('widget_recent-posts', 'a:2:{i:2;a:2:{s:5:\"title\";s:0:\"\";s:6:\"number\";i:5;}s:12:\"_multiwidget\";i:1;}', 'yes') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:16:52.235220Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'widget_recent-comments' LIMIT 1
-2020-03-02T15:16:52.235558Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'widget_recent-comments' LIMIT 1
-2020-03-02T15:16:52.235901Z 8 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('widget_recent-comments', 'a:2:{i:2;a:2:{s:5:\"title\";s:0:\"\";s:6:\"number\";i:5;}s:12:\"_multiwidget\";i:1;}', 'yes') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:16:52.238181Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'widget_archives' LIMIT 1
-2020-03-02T15:16:52.238391Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'widget_archives' LIMIT 1
-2020-03-02T15:16:52.238580Z 8 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('widget_archives', 'a:2:{i:2;a:3:{s:5:\"title\";s:0:\"\";s:5:\"count\";i:0;s:8:\"dropdown\";i:0;}s:12:\"_multiwidget\";i:1;}', 'yes') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:16:52.246007Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'widget_categories' LIMIT 1
-2020-03-02T15:16:52.246381Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:2:{i:2;a:4:{s:5:\"title\";s:0:\"\";s:5:\"count\";i:0;s:12:\"hierarchical\";i:0;s:8:\"dropdown\";i:0;}s:12:\"_multiwidget\";i:1;}' WHERE `option_name` = 'widget_categories'
-2020-03-02T15:16:52.248146Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'widget_meta' LIMIT 1
-2020-03-02T15:16:52.248427Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'widget_meta' LIMIT 1
-2020-03-02T15:16:52.248695Z 8 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('widget_meta', 'a:2:{i:2;a:1:{s:5:\"title\";s:0:\"\";}s:12:\"_multiwidget\";i:1;}', 'yes') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:16:52.256849Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'sidebars_widgets' LIMIT 1
-2020-03-02T15:16:52.257176Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'sidebars_widgets' LIMIT 1
-2020-03-02T15:16:52.257453Z 8 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('sidebars_widgets', 'a:4:{s:19:\"wp_inactive_widgets\";a:0:{}s:9:\"sidebar-1\";a:3:{i:0;s:8:\"search-2\";i:1;s:14:\"recent-posts-2\";i:2;s:17:\"recent-comments-2\";}s:9:\"sidebar-2\";a:3:{i:0;s:10:\"archives-2\";i:1;s:12:\"categories-2\";i:2;s:6:\"meta-2\";}s:13:\"array_version\";i:3;}', 'yes') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:16:52.265672Z 8 Query SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC
-2020-03-02T15:16:52.266127Z 8 Query SELECT umeta_id FROM wp_usermeta WHERE meta_key = 'show_welcome_panel' AND user_id = 1
-2020-03-02T15:16:52.266384Z 8 Query INSERT INTO `wp_usermeta` (`user_id`, `meta_key`, `meta_value`) VALUES (1, 'show_welcome_panel', '1')
-2020-03-02T15:16:52.276570Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'permalink_structure' LIMIT 1
-2020-03-02T15:16:52.276959Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'permalink_structure' LIMIT 1
-2020-03-02T15:16:52.277249Z 8 Query UPDATE `wp_options` SET `option_value` = '/%year%/%monthnum%/%day%/%postname%/' WHERE `option_name` = 'permalink_structure'
-2020-03-02T15:16:52.279126Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'permalink_structure' LIMIT 1
-2020-03-02T15:16:52.279414Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'rewrite_rules' LIMIT 1
-2020-03-02T15:16:52.279604Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'rewrite_rules' LIMIT 1
-2020-03-02T15:16:52.279816Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'home' LIMIT 1
-2020-03-02T15:16:52.280139Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.280342Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.280546Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.280720Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.280942Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.281198Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.281406Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.281583Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.281762Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.281923Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.282110Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.282286Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.282487Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.282684Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'rewrite_rules' LIMIT 1
-2020-03-02T15:16:52.283047Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:74:{s:11:\"^wp-json/?$\";s:22:\"index.php?rest_route=/\";s:14:\"^wp-json/(.*)?\";s:33:\"index.php?rest_route=/$matches[1]\";s:21:\"^index.php/wp-json/?$\";s:22:\"index.php?rest_route=/\";s:24:\"^index.php/wp-json/(.*)?\";s:33:\"index.php?rest_route=/$matches[1]\";s:48:\".*wp-(atom|rdf|rss|rss2|feed|commentsrss2)\\.php$\";s:18:\"index.php?feed=old\";s:20:\".*wp-app\\.php(/.*)?$\";s:19:\"index.php?error=403\";s:18:\".*wp-register.php$\";s:23:\"index.php?register=true\";s:32:\"feed/(feed|rdf|rss|rss2|atom)/?$\";s:27:\"index.php?&feed=$matches[1]\";s:27:\"(feed|rdf|rss|rss2|atom)/?$\";s:27:\"index.php?&feed=$matches[1]\";s:8:\"embed/?$\";s:21:\"index.php?&embed=true\";s:20:\"page/?([0-9]{1,})/?$\";s:28:\"index.php?&paged=$matches[1]\";s:41:\"comments/feed/(feed|rdf|rss|rss2|atom)/?$\";s:42:\"index.php?&feed=$matches[1]&withcomments=1\";s:36:\"comments/(feed|rdf|rss|rss2|atom)/?$\";s:42:\"index.php?&feed=$matches[1]&withcomments=1\";s:17:\"comments/embed/?$\";s:21:\"index.php?&embed=true\";s:44:\"search/(.+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:40:\"index.php?s=$matches[1]&feed=$matches[2]\";s:39:\"search/(.+)/(feed|rdf|rss|rss2|atom)/?$\";s:40:\"index.php?s=$matches[1]&feed=$matches[2]\";s:20:\"search/(.+)/embed/?$\";s:34:\"index.php?s=$matches[1]&embed=true\";s:32:\"search/(.+)/page/?([0-9]{1,})/?$\";s:41:\"index.php?s=$matches[1]&paged=$matches[2]\";s:14:\"search/(.+)/?$\";s:23:\"index.php?s=$matches[1]\";s:47:\"author/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:50:\"index.php?author_name=$matches[1]&feed=$matches[2]\";s:42:\"author/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:50:\"index.php?author_name=$matches[1]&feed=$matches[2]\";s:23:\"author/([^/]+)/embed/?$\";s:44:\"index.php?author_name=$matches[1]&embed=true\";s:35:\"author/([^/]+)/page/?([0-9]{1,})/?$\";s:51:\"index.php?author_name=$matches[1]&paged=$matches[2]\";s:17:\"author/([^/]+)/?$\";s:33:\"index.php?author_name=$matches[1]\";s:69:\"([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/feed/(feed|rdf|rss|rss2|atom)/?$\";s:80:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&feed=$matches[4]\";s:64:\"([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/(feed|rdf|rss|rss2|atom)/?$\";s:80:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&feed=$matches[4]\";s:45:\"([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/embed/?$\";s:74:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&embed=true\";s:57:\"([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/page/?([0-9]{1,})/?$\";s:81:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&paged=$matches[4]\";s:39:\"([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/?$\";s:63:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]\";s:56:\"([0-9]{4})/([0-9]{1,2})/feed/(feed|rdf|rss|rss2|atom)/?$\";s:64:\"index.php?year=$matches[1]&monthnum=$matches[2]&feed=$matches[3]\";s:51:\"([0-9]{4})/([0-9]{1,2})/(feed|rdf|rss|rss2|atom)/?$\";s:64:\"index.php?year=$matches[1]&monthnum=$matches[2]&feed=$matches[3]\";s:32:\"([0-9]{4})/([0-9]{1,2})/embed/?$\";s:58:\"index.php?year=$matches[1]&monthnum=$matches[2]&embed=true\";s:44:\"([0-9]{4})/([0-9]{1,2})/page/?([0-9]{1,})/?$\";s:65:\"index.php?year=$matches[1]&monthnum=$matches[2]&paged=$matches[3]\";s:26:\"([0-9]{4})/([0-9]{1,2})/?$\";s:47:\"index.php?year=$matches[1]&monthnum=$matches[2]\";s:43:\"([0-9]{4})/feed/(feed|rdf|rss|rss2|atom)/?$\";s:43:\"index.php?year=$matches[1]&feed=$matches[2]\";s:38:\"([0-9]{4})/(feed|rdf|rss|rss2|atom)/?$\";s:43:\"index.php?year=$matches[1]&feed=$matches[2]\";s:19:\"([0-9]{4})/embed/?$\";s:37:\"index.php?year=$matches[1]&embed=true\";s:31:\"([0-9]{4})/page/?([0-9]{1,})/?$\";s:44:\"index.php?year=$matches[1]&paged=$matches[2]\";s:13:\"([0-9]{4})/?$\";s:26:\"index.php?year=$matches[1]\";s:58:\"[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/?$\";s:32:\"index.php?attachment=$matches[1]\";s:68:\"[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/trackback/?$\";s:37:\"index.php?attachment=$matches[1]&tb=1\";s:88:\"[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:83:\"[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:83:\"[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/comment-page-([0-9]{1,})/?$\";s:50:\"index.php?attachment=$matches[1]&cpage=$matches[2]\";s:64:\"[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/embed/?$\";s:43:\"index.php?attachment=$matches[1]&embed=true\";s:53:\"([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)/embed/?$\";s:91:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&name=$matches[4]&embed=true\";s:57:\"([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)/trackback/?$\";s:85:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&name=$matches[4]&tb=1\";s:77:\"([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:97:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&name=$matches[4]&feed=$matches[5]\";s:72:\"([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:97:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&name=$matches[4]&feed=$matches[5]\";s:65:\"([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)/page/?([0-9]{1,})/?$\";s:98:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&name=$matches[4]&paged=$matches[5]\";s:72:\"([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)/comment-page-([0-9]{1,})/?$\";s:98:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&name=$matches[4]&cpage=$matches[5]\";s:61:\"([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)(?:/([0-9]+))?/?$\";s:97:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&name=$matches[4]&page=$matches[5]\";s:47:\"[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/([^/]+)/?$\";s:32:\"index.php?attachment=$matches[1]\";s:57:\"[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/([^/]+)/trackback/?$\";s:37:\"index.php?attachment=$matches[1]&tb=1\";s:77:\"[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:72:\"[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:72:\"[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/([^/]+)/comment-page-([0-9]{1,})/?$\";s:50:\"index.php?attachment=$matches[1]&cpage=$matches[2]\";s:53:\"[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/([^/]+)/embed/?$\";s:43:\"index.php?attachment=$matches[1]&embed=true\";s:64:\"([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/comment-page-([0-9]{1,})/?$\";s:81:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&cpage=$matches[4]\";s:51:\"([0-9]{4})/([0-9]{1,2})/comment-page-([0-9]{1,})/?$\";s:65:\"index.php?year=$matches[1]&monthnum=$matches[2]&cpage=$matches[3]\";s:38:\"([0-9]{4})/comment-page-([0-9]{1,})/?$\";s:44:\"index.php?year=$matches[1]&cpage=$matches[2]\";s:27:\".?.+?/attachment/([^/]+)/?$\";s:32:\"index.php?attachment=$matches[1]\";s:37:\".?.+?/attachment/([^/]+)/trackback/?$\";s:37:\"index.php?attachment=$matches[1]&tb=1\";s:57:\".?.+?/attachment/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:52:\".?.+?/attachment/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:52:\".?.+?/attachment/([^/]+)/comment-page-([0-9]{1,})/?$\";s:50:\"index.php?attachment=$matches[1]&cpage=$matches[2]\";s:33:\".?.+?/attachment/([^/]+)/embed/?$\";s:43:\"index.php?attachment=$matches[1]&embed=true\";s:16:\"(.?.+?)/embed/?$\";s:41:\"index.php?pagename=$matches[1]&embed=true\";s:20:\"(.?.+?)/trackback/?$\";s:35:\"index.php?pagename=$matches[1]&tb=1\";s:40:\"(.?.+?)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:47:\"index.php?pagename=$matches[1]&feed=$matches[2]\";s:35:\"(.?.+?)/(feed|rdf|rss|rss2|atom)/?$\";s:47:\"index.php?pagename=$matches[1]&feed=$matches[2]\";s:28:\"(.?.+?)/page/?([0-9]{1,})/?$\";s:48:\"index.php?pagename=$matches[1]&paged=$matches[2]\";s:35:\"(.?.+?)/comment-page-([0-9]{1,})/?$\";s:48:\"index.php?pagename=$matches[1]&cpage=$matches[2]\";s:24:\"(.?.+?)(?:/([0-9]+))?/?$\";s:47:\"index.php?pagename=$matches[1]&page=$matches[2]\";}' WHERE `option_name` = 'rewrite_rules'
-2020-03-02T15:16:52.287836Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'home' LIMIT 1
-2020-03-02T15:16:52.288121Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:52.288423Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:52.288683Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'home' LIMIT 1
-2020-03-02T15:16:52.289061Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'home' LIMIT 1
-2020-03-02T15:16:52.289295Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:52.289658Z 8 Query SELECT ID, post_name, post_parent, post_type
- FROM wp_posts
- WHERE post_name IN ('hello-world')
- AND post_type IN ('post','attachment')
-2020-03-02T15:16:52.289950Z 8 Query SELECT * FROM wp_posts WHERE ID = 1 LIMIT 1
-2020-03-02T15:16:52.290314Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'permalink_structure' LIMIT 1
-2020-03-02T15:16:52.290642Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'home' LIMIT 1
-2020-03-02T15:16:52.290898Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'home' LIMIT 1
-2020-03-02T15:16:52.292067Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'permalink_structure' LIMIT 1
-2020-03-02T15:16:52.292328Z 8 Query UPDATE `wp_options` SET `option_value` = '/index.php/%year%/%monthnum%/%day%/%postname%/' WHERE `option_name` = 'permalink_structure'
-2020-03-02T15:16:52.296126Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'permalink_structure' LIMIT 1
-2020-03-02T15:16:52.296351Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'rewrite_rules' LIMIT 1
-2020-03-02T15:16:52.296660Z 8 Query UPDATE `wp_options` SET `option_value` = '' WHERE `option_name` = 'rewrite_rules'
-2020-03-02T15:16:52.304469Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'rewrite_rules' LIMIT 1
-2020-03-02T15:16:52.304733Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'home' LIMIT 1
-2020-03-02T15:16:52.304937Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.305122Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.305307Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.305536Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.305724Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.305898Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.306070Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.306242Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.306426Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.306587Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.306750Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.306923Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.307098Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.307291Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'rewrite_rules' LIMIT 1
-2020-03-02T15:16:52.307679Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:74:{s:11:\"^wp-json/?$\";s:22:\"index.php?rest_route=/\";s:14:\"^wp-json/(.*)?\";s:33:\"index.php?rest_route=/$matches[1]\";s:21:\"^index.php/wp-json/?$\";s:22:\"index.php?rest_route=/\";s:24:\"^index.php/wp-json/(.*)?\";s:33:\"index.php?rest_route=/$matches[1]\";s:48:\".*wp-(atom|rdf|rss|rss2|feed|commentsrss2)\\.php$\";s:18:\"index.php?feed=old\";s:20:\".*wp-app\\.php(/.*)?$\";s:19:\"index.php?error=403\";s:18:\".*wp-register.php$\";s:23:\"index.php?register=true\";s:42:\"index.php/feed/(feed|rdf|rss|rss2|atom)/?$\";s:27:\"index.php?&feed=$matches[1]\";s:37:\"index.php/(feed|rdf|rss|rss2|atom)/?$\";s:27:\"index.php?&feed=$matches[1]\";s:18:\"index.php/embed/?$\";s:21:\"index.php?&embed=true\";s:30:\"index.php/page/?([0-9]{1,})/?$\";s:28:\"index.php?&paged=$matches[1]\";s:51:\"index.php/comments/feed/(feed|rdf|rss|rss2|atom)/?$\";s:42:\"index.php?&feed=$matches[1]&withcomments=1\";s:46:\"index.php/comments/(feed|rdf|rss|rss2|atom)/?$\";s:42:\"index.php?&feed=$matches[1]&withcomments=1\";s:27:\"index.php/comments/embed/?$\";s:21:\"index.php?&embed=true\";s:54:\"index.php/search/(.+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:40:\"index.php?s=$matches[1]&feed=$matches[2]\";s:49:\"index.php/search/(.+)/(feed|rdf|rss|rss2|atom)/?$\";s:40:\"index.php?s=$matches[1]&feed=$matches[2]\";s:30:\"index.php/search/(.+)/embed/?$\";s:34:\"index.php?s=$matches[1]&embed=true\";s:42:\"index.php/search/(.+)/page/?([0-9]{1,})/?$\";s:41:\"index.php?s=$matches[1]&paged=$matches[2]\";s:24:\"index.php/search/(.+)/?$\";s:23:\"index.php?s=$matches[1]\";s:57:\"index.php/author/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:50:\"index.php?author_name=$matches[1]&feed=$matches[2]\";s:52:\"index.php/author/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:50:\"index.php?author_name=$matches[1]&feed=$matches[2]\";s:33:\"index.php/author/([^/]+)/embed/?$\";s:44:\"index.php?author_name=$matches[1]&embed=true\";s:45:\"index.php/author/([^/]+)/page/?([0-9]{1,})/?$\";s:51:\"index.php?author_name=$matches[1]&paged=$matches[2]\";s:27:\"index.php/author/([^/]+)/?$\";s:33:\"index.php?author_name=$matches[1]\";s:79:\"index.php/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/feed/(feed|rdf|rss|rss2|atom)/?$\";s:80:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&feed=$matches[4]\";s:74:\"index.php/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/(feed|rdf|rss|rss2|atom)/?$\";s:80:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&feed=$matches[4]\";s:55:\"index.php/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/embed/?$\";s:74:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&embed=true\";s:67:\"index.php/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/page/?([0-9]{1,})/?$\";s:81:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&paged=$matches[4]\";s:49:\"index.php/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/?$\";s:63:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]\";s:66:\"index.php/([0-9]{4})/([0-9]{1,2})/feed/(feed|rdf|rss|rss2|atom)/?$\";s:64:\"index.php?year=$matches[1]&monthnum=$matches[2]&feed=$matches[3]\";s:61:\"index.php/([0-9]{4})/([0-9]{1,2})/(feed|rdf|rss|rss2|atom)/?$\";s:64:\"index.php?year=$matches[1]&monthnum=$matches[2]&feed=$matches[3]\";s:42:\"index.php/([0-9]{4})/([0-9]{1,2})/embed/?$\";s:58:\"index.php?year=$matches[1]&monthnum=$matches[2]&embed=true\";s:54:\"index.php/([0-9]{4})/([0-9]{1,2})/page/?([0-9]{1,})/?$\";s:65:\"index.php?year=$matches[1]&monthnum=$matches[2]&paged=$matches[3]\";s:36:\"index.php/([0-9]{4})/([0-9]{1,2})/?$\";s:47:\"index.php?year=$matches[1]&monthnum=$matches[2]\";s:53:\"index.php/([0-9]{4})/feed/(feed|rdf|rss|rss2|atom)/?$\";s:43:\"index.php?year=$matches[1]&feed=$matches[2]\";s:48:\"index.php/([0-9]{4})/(feed|rdf|rss|rss2|atom)/?$\";s:43:\"index.php?year=$matches[1]&feed=$matches[2]\";s:29:\"index.php/([0-9]{4})/embed/?$\";s:37:\"index.php?year=$matches[1]&embed=true\";s:41:\"index.php/([0-9]{4})/page/?([0-9]{1,})/?$\";s:44:\"index.php?year=$matches[1]&paged=$matches[2]\";s:23:\"index.php/([0-9]{4})/?$\";s:26:\"index.php?year=$matches[1]\";s:68:\"index.php/[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/?$\";s:32:\"index.php?attachment=$matches[1]\";s:78:\"index.php/[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/trackback/?$\";s:37:\"index.php?attachment=$matches[1]&tb=1\";s:98:\"index.php/[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:93:\"index.php/[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:93:\"index.php/[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/comment-page-([0-9]{1,})/?$\";s:50:\"index.php?attachment=$matches[1]&cpage=$matches[2]\";s:74:\"index.php/[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/embed/?$\";s:43:\"index.php?attachment=$matches[1]&embed=true\";s:63:\"index.php/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)/embed/?$\";s:91:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&name=$matches[4]&embed=true\";s:67:\"index.php/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)/trackback/?$\";s:85:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&name=$matches[4]&tb=1\";s:87:\"index.php/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:97:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&name=$matches[4]&feed=$matches[5]\";s:82:\"index.php/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:97:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&name=$matches[4]&feed=$matches[5]\";s:75:\"index.php/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)/page/?([0-9]{1,})/?$\";s:98:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&name=$matches[4]&paged=$matches[5]\";s:82:\"index.php/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)/comment-page-([0-9]{1,})/?$\";s:98:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&name=$matches[4]&cpage=$matches[5]\";s:71:\"index.php/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)(?:/([0-9]+))?/?$\";s:97:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&name=$matches[4]&page=$matches[5]\";s:57:\"index.php/[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/([^/]+)/?$\";s:32:\"index.php?attachment=$matches[1]\";s:67:\"index.php/[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/([^/]+)/trackback/?$\";s:37:\"index.php?attachment=$matches[1]&tb=1\";s:87:\"index.php/[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:82:\"index.php/[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:82:\"index.php/[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/([^/]+)/comment-page-([0-9]{1,})/?$\";s:50:\"index.php?attachment=$matches[1]&cpage=$matches[2]\";s:63:\"index.php/[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/([^/]+)/embed/?$\";s:43:\"index.php?attachment=$matches[1]&embed=true\";s:74:\"index.php/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/comment-page-([0-9]{1,})/?$\";s:81:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&cpage=$matches[4]\";s:61:\"index.php/([0-9]{4})/([0-9]{1,2})/comment-page-([0-9]{1,})/?$\";s:65:\"index.php?year=$matches[1]&monthnum=$matches[2]&cpage=$matches[3]\";s:48:\"index.php/([0-9]{4})/comment-page-([0-9]{1,})/?$\";s:44:\"index.php?year=$matches[1]&cpage=$matches[2]\";s:37:\"index.php/.?.+?/attachment/([^/]+)/?$\";s:32:\"index.php?attachment=$matches[1]\";s:47:\"index.php/.?.+?/attachment/([^/]+)/trackback/?$\";s:37:\"index.php?attachment=$matches[1]&tb=1\";s:67:\"index.php/.?.+?/attachment/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:62:\"index.php/.?.+?/attachment/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:62:\"index.php/.?.+?/attachment/([^/]+)/comment-page-([0-9]{1,})/?$\";s:50:\"index.php?attachment=$matches[1]&cpage=$matches[2]\";s:43:\"index.php/.?.+?/attachment/([^/]+)/embed/?$\";s:43:\"index.php?attachment=$matches[1]&embed=true\";s:26:\"index.php/(.?.+?)/embed/?$\";s:41:\"index.php?pagename=$matches[1]&embed=true\";s:30:\"index.php/(.?.+?)/trackback/?$\";s:35:\"index.php?pagename=$matches[1]&tb=1\";s:50:\"index.php/(.?.+?)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:47:\"index.php?pagename=$matches[1]&feed=$matches[2]\";s:45:\"index.php/(.?.+?)/(feed|rdf|rss|rss2|atom)/?$\";s:47:\"index.php?pagename=$matches[1]&feed=$matches[2]\";s:38:\"index.php/(.?.+?)/page/?([0-9]{1,})/?$\";s:48:\"index.php?pagename=$matches[1]&paged=$matches[2]\";s:45:\"index.php/(.?.+?)/comment-page-([0-9]{1,})/?$\";s:48:\"index.php?pagename=$matches[1]&cpage=$matches[2]\";s:34:\"index.php/(.?.+?)(?:/([0-9]+))?/?$\";s:47:\"index.php?pagename=$matches[1]&page=$matches[2]\";}' WHERE `option_name` = 'rewrite_rules'
-2020-03-02T15:16:52.316173Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'home' LIMIT 1
-2020-03-02T15:16:52.316536Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:52.316902Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:52.317180Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'home' LIMIT 1
-2020-03-02T15:16:52.317562Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'home' LIMIT 1
-2020-03-02T15:16:52.317927Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:52.318257Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'permalink_structure' LIMIT 1
-2020-03-02T15:16:52.318477Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'home' LIMIT 1
-2020-03-02T15:16:52.318707Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'home' LIMIT 1
-2020-03-02T15:16:52.322938Z 9 Connect wp_user@localhost on using TCP/IP
-2020-03-02T15:16:52.323222Z 9 Query SET NAMES utf8mb4
-2020-03-02T15:16:52.323580Z 9 Query SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_520_ci'
-2020-03-02T15:16:52.323798Z 9 Query SELECT @@SESSION.sql_mode
-2020-03-02T15:16:52.324084Z 9 Query SET SESSION sql_mode='NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
-2020-03-02T15:16:52.324265Z 9 Init DB wordpressdb
-2020-03-02T15:16:52.324931Z 9 Query SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'
-2020-03-02T15:16:52.327435Z 9 Query SELECT option_value FROM wp_options WHERE option_name = 'cron' LIMIT 1
-2020-03-02T15:16:52.327806Z 9 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('cron', 'a:2:{i:1583162212;a:1:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}s:7:\"version\";i:2;}', 'yes') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:16:52.330154Z 9 Query SELECT option_value FROM wp_options WHERE option_name = 'WPLANG' LIMIT 1
-2020-03-02T15:16:52.336092Z 9 Query SELECT option_value FROM wp_options WHERE option_name = 'theme_mods_twentytwenty' LIMIT 1
-2020-03-02T15:16:52.336432Z 9 Query SELECT option_value FROM wp_options WHERE option_name = 'current_theme' LIMIT 1
-2020-03-02T15:16:52.337203Z 9 Query SELECT option_value FROM wp_options WHERE option_name = 'mods_Twenty Twenty' LIMIT 1
-2020-03-02T15:16:52.338716Z 9 Query SELECT option_value FROM wp_options WHERE option_name = 'widget_pages' LIMIT 1
-2020-03-02T15:16:52.338982Z 9 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('widget_pages', 'a:1:{s:12:\"_multiwidget\";i:1;}', 'yes') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:16:52.340778Z 9 Query SELECT option_value FROM wp_options WHERE option_name = 'widget_calendar' LIMIT 1
-2020-03-02T15:16:52.341099Z 9 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('widget_calendar', 'a:1:{s:12:\"_multiwidget\";i:1;}', 'yes') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:16:52.342555Z 9 Query SELECT option_value FROM wp_options WHERE option_name = 'widget_media_audio' LIMIT 1
-2020-03-02T15:16:52.342863Z 9 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('widget_media_audio', 'a:1:{s:12:\"_multiwidget\";i:1;}', 'yes') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:16:52.350655Z 9 Query SELECT option_value FROM wp_options WHERE option_name = 'widget_media_image' LIMIT 1
-2020-03-02T15:16:52.350929Z 9 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('widget_media_image', 'a:1:{s:12:\"_multiwidget\";i:1;}', 'yes') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:16:52.352115Z 9 Query SELECT option_value FROM wp_options WHERE option_name = 'widget_media_gallery' LIMIT 1
-2020-03-02T15:16:52.352329Z 9 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('widget_media_gallery', 'a:1:{s:12:\"_multiwidget\";i:1;}', 'yes') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:16:52.353436Z 9 Query SELECT option_value FROM wp_options WHERE option_name = 'widget_media_video' LIMIT 1
-2020-03-02T15:16:52.353684Z 9 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('widget_media_video', 'a:1:{s:12:\"_multiwidget\";i:1;}', 'yes') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:16:52.363950Z 9 Query SELECT option_value FROM wp_options WHERE option_name = 'can_compress_scripts' LIMIT 1
-2020-03-02T15:16:52.364491Z 9 Query SELECT option_value FROM wp_options WHERE option_name = 'widget_tag_cloud' LIMIT 1
-2020-03-02T15:16:52.364797Z 9 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('widget_tag_cloud', 'a:1:{s:12:\"_multiwidget\";i:1;}', 'yes') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:16:52.366509Z 9 Query SELECT option_value FROM wp_options WHERE option_name = 'widget_nav_menu' LIMIT 1
-2020-03-02T15:16:52.366779Z 9 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('widget_nav_menu', 'a:1:{s:12:\"_multiwidget\";i:1;}', 'yes') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:16:52.374423Z 9 Query SELECT option_value FROM wp_options WHERE option_name = 'widget_custom_html' LIMIT 1
-2020-03-02T15:16:52.374797Z 9 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('widget_custom_html', 'a:1:{s:12:\"_multiwidget\";i:1;}', 'yes') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:16:52.376661Z 9 Query SELECT option_value FROM wp_options WHERE option_name = '_transient_timeout_doing_cron' LIMIT 1
-2020-03-02T15:16:52.376982Z 9 Query SELECT option_value FROM wp_options WHERE option_name = '_transient_doing_cron' LIMIT 1
-2020-03-02T15:16:52.377292Z 9 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('_transient_doing_cron', '1583162212.3764901161193847656250', 'yes') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:16:52.379507Z 9 Query SHOW FULL COLUMNS FROM `wp_options`
-2020-03-02T15:16:52.380211Z 9 Query UPDATE `wp_options` SET `option_value` = 'a:2:{i:1583162212;a:2:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}}s:7:\"version\";i:2;}' WHERE `option_name` = 'cron'
-2020-03-02T15:16:52.380952Z 10 Connect wp_user@localhost on using TCP/IP
-2020-03-02T15:16:52.381172Z 10 Query SET NAMES utf8mb4
-2020-03-02T15:16:52.381456Z 10 Query SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_520_ci'
-2020-03-02T15:16:52.381573Z 10 Query SELECT @@SESSION.sql_mode
-2020-03-02T15:16:52.381717Z 10 Query SET SESSION sql_mode='NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
-2020-03-02T15:16:52.381855Z 10 Init DB wordpressdb
-2020-03-02T15:16:52.382266Z 10 Query SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'
-2020-03-02T15:16:52.384438Z 10 Query SELECT option_value FROM wp_options WHERE option_name = 'WPLANG' LIMIT 1
-2020-03-02T15:16:52.384894Z 10 Query SELECT option_value FROM wp_options WHERE option_name = 'theme_mods_twentytwenty' LIMIT 1
-2020-03-02T15:16:52.385156Z 10 Query SELECT option_value FROM wp_options WHERE option_name = 'current_theme' LIMIT 1
-2020-03-02T15:16:52.385929Z 10 Query SELECT option_value FROM wp_options WHERE option_name = 'mods_Twenty Twenty' LIMIT 1
-2020-03-02T15:16:52.387233Z 9 Query UPDATE `wp_options` SET `option_value` = 'a:2:{i:1583162212;a:3:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}s:16:\"wp_version_check\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}s:7:\"version\";i:2;}' WHERE `option_name` = 'cron'
-2020-03-02T15:16:52.388212Z 10 Query SELECT option_value FROM wp_options WHERE option_name = 'can_compress_scripts' LIMIT 1
-2020-03-02T15:16:52.388840Z 10 Query SHOW FULL COLUMNS FROM `wp_options`
-2020-03-02T15:16:52.389306Z 10 Query UPDATE `wp_options` SET `option_value` = 'a:2:{i:1583162212;a:3:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}s:16:\"wp_version_check\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}s:7:\"version\";i:2;}' WHERE `option_name` = 'cron'
-2020-03-02T15:16:52.395756Z 9 Query UPDATE `wp_options` SET `option_value` = 'a:2:{i:1583162212;a:4:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}s:16:\"wp_version_check\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}s:7:\"version\";i:2;}' WHERE `option_name` = 'cron'
-2020-03-02T15:16:52.404367Z 10 Query UPDATE `wp_options` SET `option_value` = 'a:2:{i:1583162212;a:3:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}s:7:\"version\";i:2;}' WHERE `option_name` = 'cron'
-2020-03-02T15:16:52.413155Z 9 Query UPDATE `wp_options` SET `option_value` = 'a:2:{i:1583162212;a:5:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}s:16:\"wp_version_check\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}s:7:\"version\";i:2;}' WHERE `option_name` = 'cron'
-2020-03-02T15:16:52.422277Z 10 Query UPDATE `wp_options` SET `option_value` = 'a:2:{i:1583162212;a:4:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}s:7:\"version\";i:2;}' WHERE `option_name` = 'cron'
-2020-03-02T15:16:52.423236Z 9 Query SELECT option_value FROM wp_options WHERE option_name = 'theme_switched' LIMIT 1
-2020-03-02T15:16:52.424676Z 9 Query SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND (
- ( YEAR( wp_posts.post_date ) = 2020 AND MONTH( wp_posts.post_date ) = 3 AND DAYOFMONTH( wp_posts.post_date ) = 2 )
-) AND wp_posts.post_name = 'hello-world' AND wp_posts.post_type = 'post' ORDER BY wp_posts.post_date DESC
-2020-03-02T15:16:52.425288Z 9 Query SELECT t.*, tt.*, tr.object_id FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category', 'post_tag', 'post_format') AND tr.object_id IN (1) ORDER BY t.name ASC
-2020-03-02T15:16:52.425638Z 9 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1) ORDER BY meta_id ASC
-2020-03-02T15:16:52.428555Z 9 Query SELECT p.ID FROM wp_posts AS p WHERE p.post_date < '2020-03-02 15:16:52' AND p.post_type = 'post' AND p.post_status = 'publish' ORDER BY p.post_date DESC LIMIT 1
-2020-03-02T15:16:52.428762Z 9 Query SELECT p.ID FROM wp_posts AS p WHERE p.post_date > '2020-03-02 15:16:52' AND p.post_type = 'post' AND p.post_status = 'publish' ORDER BY p.post_date ASC LIMIT 1
-2020-03-02T15:16:52.429464Z 9 Query SELECT wp_posts.* FROM wp_posts WHERE 1=1 AND wp_posts.post_name = 'twentytwenty' AND wp_posts.post_type = 'custom_css' AND ((wp_posts.post_status = 'publish' OR wp_posts.post_status = 'future' OR wp_posts.post_status = 'draft' OR wp_posts.post_status = 'pending' OR wp_posts.post_status = 'trash' OR wp_posts.post_status = 'auto-draft' OR wp_posts.post_status = 'inherit' OR wp_posts.post_status = 'request-pending' OR wp_posts.post_status = 'request-confirmed' OR wp_posts.post_status = 'request-failed' OR wp_posts.post_status = 'request-completed' OR wp_posts.post_status = 'private')) ORDER BY wp_posts.post_date DESC
-2020-03-02T15:16:52.429846Z 9 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('theme_mods_twentytwenty', 'a:1:{s:18:\"custom_css_post_id\";i:-1;}', 'yes') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:16:52.431257Z 10 Query SELECT option_value FROM wp_options WHERE option_name = 'theme_switched' LIMIT 1
-2020-03-02T15:16:52.431999Z 10 Query UPDATE `wp_options` SET `option_value` = 'a:3:{i:1583162212;a:4:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583248612;a:1:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}s:7:\"version\";i:2;}' WHERE `option_name` = 'cron'
-2020-03-02T15:16:52.433867Z 9 Query SELECT * FROM wp_posts WHERE (post_type = 'page' AND post_status = 'publish') ORDER BY menu_order,wp_posts.post_title ASC
-2020-03-02T15:16:52.435357Z 9 Query SELECT * FROM wp_users WHERE ID = '1' LIMIT 1
-2020-03-02T15:16:52.435693Z 9 Query SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC
-2020-03-02T15:16:52.438900Z 9 Query SELECT SQL_CALC_FOUND_ROWS wp_comments.comment_ID FROM wp_comments WHERE ( comment_approved = '1' ) AND comment_post_ID = 1 AND comment_parent = 0 ORDER BY wp_comments.comment_date_gmt ASC, wp_comments.comment_ID ASC
-2020-03-02T15:16:52.439455Z 9 Query SELECT wp_comments.* FROM wp_comments WHERE comment_ID IN (1)
-2020-03-02T15:16:52.439911Z 9 Query SELECT wp_comments.comment_ID FROM wp_comments WHERE ( comment_approved = '1' ) AND comment_post_ID = 1 AND comment_parent IN ( 1 ) ORDER BY wp_comments.comment_date_gmt ASC, wp_comments.comment_ID ASC
-2020-03-02T15:16:52.441133Z 10 Query UPDATE `wp_options` SET `option_value` = 'a:3:{i:1583162212;a:3:{s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583248612;a:1:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}s:7:\"version\";i:2;}' WHERE `option_name` = 'cron'
-2020-03-02T15:16:52.443008Z 9 Query SELECT wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AND ((wp_posts.post_status = 'publish')) ORDER BY wp_posts.post_date DESC LIMIT 0, 5
-2020-03-02T15:16:52.443676Z 9 Query SELECT wp_comments.comment_ID FROM wp_comments JOIN wp_posts ON wp_posts.ID = wp_comments.comment_post_ID WHERE ( comment_approved = '1' ) AND wp_posts.post_status IN ('publish') ORDER BY wp_comments.comment_date_gmt DESC LIMIT 0,5
-2020-03-02T15:16:52.444274Z 9 Query SELECT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, count(ID) as posts FROM wp_posts WHERE post_type = 'post' AND post_status = 'publish' GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC
-2020-03-02T15:16:52.444795Z 9 Query SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id WHERE tt.taxonomy IN ('category') AND tt.count > 0 ORDER BY t.name ASC
-2020-03-02T15:16:52.445131Z 9 Query SELECT term_id, meta_key, meta_value FROM wp_termmeta WHERE term_id IN (1) ORDER BY meta_id ASC
-2020-03-02T15:16:52.446432Z 9 Quit
-2020-03-02T15:16:52.447451Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:52.447782Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'rewrite_rules' LIMIT 1
-2020-03-02T15:16:52.448187Z 8 Query UPDATE `wp_options` SET `option_value` = '' WHERE `option_name` = 'rewrite_rules'
-2020-03-02T15:16:52.449835Z 10 Query SELECT option_value FROM wp_options WHERE option_name = 'recovery_keys' LIMIT 1
-2020-03-02T15:16:52.450177Z 10 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('recovery_keys', 'a:0:{}', 'yes') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:16:52.458212Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'rewrite_rules' LIMIT 1
-2020-03-02T15:16:52.458513Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'home' LIMIT 1
-2020-03-02T15:16:52.458779Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.459038Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.459301Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.459532Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.459921Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.460185Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.460414Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.460618Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.460782Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.460960Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.461135Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.461322Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.461529Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'page_on_front' LIMIT 1
-2020-03-02T15:16:52.461723Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'rewrite_rules' LIMIT 1
-2020-03-02T15:16:52.462083Z 8 Query UPDATE `wp_options` SET `option_value` = 'a:74:{s:11:\"^wp-json/?$\";s:22:\"index.php?rest_route=/\";s:14:\"^wp-json/(.*)?\";s:33:\"index.php?rest_route=/$matches[1]\";s:21:\"^index.php/wp-json/?$\";s:22:\"index.php?rest_route=/\";s:24:\"^index.php/wp-json/(.*)?\";s:33:\"index.php?rest_route=/$matches[1]\";s:48:\".*wp-(atom|rdf|rss|rss2|feed|commentsrss2)\\.php$\";s:18:\"index.php?feed=old\";s:20:\".*wp-app\\.php(/.*)?$\";s:19:\"index.php?error=403\";s:18:\".*wp-register.php$\";s:23:\"index.php?register=true\";s:42:\"index.php/feed/(feed|rdf|rss|rss2|atom)/?$\";s:27:\"index.php?&feed=$matches[1]\";s:37:\"index.php/(feed|rdf|rss|rss2|atom)/?$\";s:27:\"index.php?&feed=$matches[1]\";s:18:\"index.php/embed/?$\";s:21:\"index.php?&embed=true\";s:30:\"index.php/page/?([0-9]{1,})/?$\";s:28:\"index.php?&paged=$matches[1]\";s:51:\"index.php/comments/feed/(feed|rdf|rss|rss2|atom)/?$\";s:42:\"index.php?&feed=$matches[1]&withcomments=1\";s:46:\"index.php/comments/(feed|rdf|rss|rss2|atom)/?$\";s:42:\"index.php?&feed=$matches[1]&withcomments=1\";s:27:\"index.php/comments/embed/?$\";s:21:\"index.php?&embed=true\";s:54:\"index.php/search/(.+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:40:\"index.php?s=$matches[1]&feed=$matches[2]\";s:49:\"index.php/search/(.+)/(feed|rdf|rss|rss2|atom)/?$\";s:40:\"index.php?s=$matches[1]&feed=$matches[2]\";s:30:\"index.php/search/(.+)/embed/?$\";s:34:\"index.php?s=$matches[1]&embed=true\";s:42:\"index.php/search/(.+)/page/?([0-9]{1,})/?$\";s:41:\"index.php?s=$matches[1]&paged=$matches[2]\";s:24:\"index.php/search/(.+)/?$\";s:23:\"index.php?s=$matches[1]\";s:57:\"index.php/author/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:50:\"index.php?author_name=$matches[1]&feed=$matches[2]\";s:52:\"index.php/author/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:50:\"index.php?author_name=$matches[1]&feed=$matches[2]\";s:33:\"index.php/author/([^/]+)/embed/?$\";s:44:\"index.php?author_name=$matches[1]&embed=true\";s:45:\"index.php/author/([^/]+)/page/?([0-9]{1,})/?$\";s:51:\"index.php?author_name=$matches[1]&paged=$matches[2]\";s:27:\"index.php/author/([^/]+)/?$\";s:33:\"index.php?author_name=$matches[1]\";s:79:\"index.php/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/feed/(feed|rdf|rss|rss2|atom)/?$\";s:80:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&feed=$matches[4]\";s:74:\"index.php/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/(feed|rdf|rss|rss2|atom)/?$\";s:80:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&feed=$matches[4]\";s:55:\"index.php/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/embed/?$\";s:74:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&embed=true\";s:67:\"index.php/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/page/?([0-9]{1,})/?$\";s:81:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&paged=$matches[4]\";s:49:\"index.php/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/?$\";s:63:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]\";s:66:\"index.php/([0-9]{4})/([0-9]{1,2})/feed/(feed|rdf|rss|rss2|atom)/?$\";s:64:\"index.php?year=$matches[1]&monthnum=$matches[2]&feed=$matches[3]\";s:61:\"index.php/([0-9]{4})/([0-9]{1,2})/(feed|rdf|rss|rss2|atom)/?$\";s:64:\"index.php?year=$matches[1]&monthnum=$matches[2]&feed=$matches[3]\";s:42:\"index.php/([0-9]{4})/([0-9]{1,2})/embed/?$\";s:58:\"index.php?year=$matches[1]&monthnum=$matches[2]&embed=true\";s:54:\"index.php/([0-9]{4})/([0-9]{1,2})/page/?([0-9]{1,})/?$\";s:65:\"index.php?year=$matches[1]&monthnum=$matches[2]&paged=$matches[3]\";s:36:\"index.php/([0-9]{4})/([0-9]{1,2})/?$\";s:47:\"index.php?year=$matches[1]&monthnum=$matches[2]\";s:53:\"index.php/([0-9]{4})/feed/(feed|rdf|rss|rss2|atom)/?$\";s:43:\"index.php?year=$matches[1]&feed=$matches[2]\";s:48:\"index.php/([0-9]{4})/(feed|rdf|rss|rss2|atom)/?$\";s:43:\"index.php?year=$matches[1]&feed=$matches[2]\";s:29:\"index.php/([0-9]{4})/embed/?$\";s:37:\"index.php?year=$matches[1]&embed=true\";s:41:\"index.php/([0-9]{4})/page/?([0-9]{1,})/?$\";s:44:\"index.php?year=$matches[1]&paged=$matches[2]\";s:23:\"index.php/([0-9]{4})/?$\";s:26:\"index.php?year=$matches[1]\";s:68:\"index.php/[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/?$\";s:32:\"index.php?attachment=$matches[1]\";s:78:\"index.php/[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/trackback/?$\";s:37:\"index.php?attachment=$matches[1]&tb=1\";s:98:\"index.php/[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:93:\"index.php/[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:93:\"index.php/[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/comment-page-([0-9]{1,})/?$\";s:50:\"index.php?attachment=$matches[1]&cpage=$matches[2]\";s:74:\"index.php/[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/attachment/([^/]+)/embed/?$\";s:43:\"index.php?attachment=$matches[1]&embed=true\";s:63:\"index.php/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)/embed/?$\";s:91:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&name=$matches[4]&embed=true\";s:67:\"index.php/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)/trackback/?$\";s:85:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&name=$matches[4]&tb=1\";s:87:\"index.php/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:97:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&name=$matches[4]&feed=$matches[5]\";s:82:\"index.php/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:97:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&name=$matches[4]&feed=$matches[5]\";s:75:\"index.php/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)/page/?([0-9]{1,})/?$\";s:98:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&name=$matches[4]&paged=$matches[5]\";s:82:\"index.php/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)/comment-page-([0-9]{1,})/?$\";s:98:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&name=$matches[4]&cpage=$matches[5]\";s:71:\"index.php/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/([^/]+)(?:/([0-9]+))?/?$\";s:97:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&name=$matches[4]&page=$matches[5]\";s:57:\"index.php/[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/([^/]+)/?$\";s:32:\"index.php?attachment=$matches[1]\";s:67:\"index.php/[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/([^/]+)/trackback/?$\";s:37:\"index.php?attachment=$matches[1]&tb=1\";s:87:\"index.php/[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:82:\"index.php/[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:82:\"index.php/[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/([^/]+)/comment-page-([0-9]{1,})/?$\";s:50:\"index.php?attachment=$matches[1]&cpage=$matches[2]\";s:63:\"index.php/[0-9]{4}/[0-9]{1,2}/[0-9]{1,2}/[^/]+/([^/]+)/embed/?$\";s:43:\"index.php?attachment=$matches[1]&embed=true\";s:74:\"index.php/([0-9]{4})/([0-9]{1,2})/([0-9]{1,2})/comment-page-([0-9]{1,})/?$\";s:81:\"index.php?year=$matches[1]&monthnum=$matches[2]&day=$matches[3]&cpage=$matches[4]\";s:61:\"index.php/([0-9]{4})/([0-9]{1,2})/comment-page-([0-9]{1,})/?$\";s:65:\"index.php?year=$matches[1]&monthnum=$matches[2]&cpage=$matches[3]\";s:48:\"index.php/([0-9]{4})/comment-page-([0-9]{1,})/?$\";s:44:\"index.php?year=$matches[1]&cpage=$matches[2]\";s:37:\"index.php/.?.+?/attachment/([^/]+)/?$\";s:32:\"index.php?attachment=$matches[1]\";s:47:\"index.php/.?.+?/attachment/([^/]+)/trackback/?$\";s:37:\"index.php?attachment=$matches[1]&tb=1\";s:67:\"index.php/.?.+?/attachment/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:62:\"index.php/.?.+?/attachment/([^/]+)/(feed|rdf|rss|rss2|atom)/?$\";s:49:\"index.php?attachment=$matches[1]&feed=$matches[2]\";s:62:\"index.php/.?.+?/attachment/([^/]+)/comment-page-([0-9]{1,})/?$\";s:50:\"index.php?attachment=$matches[1]&cpage=$matches[2]\";s:43:\"index.php/.?.+?/attachment/([^/]+)/embed/?$\";s:43:\"index.php?attachment=$matches[1]&embed=true\";s:26:\"index.php/(.?.+?)/embed/?$\";s:41:\"index.php?pagename=$matches[1]&embed=true\";s:30:\"index.php/(.?.+?)/trackback/?$\";s:35:\"index.php?pagename=$matches[1]&tb=1\";s:50:\"index.php/(.?.+?)/feed/(feed|rdf|rss|rss2|atom)/?$\";s:47:\"index.php?pagename=$matches[1]&feed=$matches[2]\";s:45:\"index.php/(.?.+?)/(feed|rdf|rss|rss2|atom)/?$\";s:47:\"index.php?pagename=$matches[1]&feed=$matches[2]\";s:38:\"index.php/(.?.+?)/page/?([0-9]{1,})/?$\";s:48:\"index.php?pagename=$matches[1]&paged=$matches[2]\";s:45:\"index.php/(.?.+?)/comment-page-([0-9]{1,})/?$\";s:48:\"index.php?pagename=$matches[1]&cpage=$matches[2]\";s:34:\"index.php/(.?.+?)(?:/([0-9]+))?/?$\";s:47:\"index.php?pagename=$matches[1]&page=$matches[2]\";}' WHERE `option_name` = 'rewrite_rules'
-2020-03-02T15:16:52.466398Z 10 Query SELECT option_value FROM wp_options WHERE option_name = '_transient_doing_cron' LIMIT 1
-2020-03-02T15:16:52.466760Z 10 Query UPDATE `wp_options` SET `option_value` = 'a:4:{i:1583162212;a:3:{s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583165812;a:1:{s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}}i:1583248612;a:1:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}s:7:\"version\";i:2;}' WHERE `option_name` = 'cron'
-2020-03-02T15:16:52.475393Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'home' LIMIT 1
-2020-03-02T15:16:52.475993Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:52.476310Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:52.476596Z 10 Query UPDATE `wp_options` SET `option_value` = 'a:4:{i:1583162212;a:2:{s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583165812;a:1:{s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}}i:1583248612;a:1:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}s:7:\"version\";i:2;}' WHERE `option_name` = 'cron'
-2020-03-02T15:16:52.480477Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'home' LIMIT 1
-2020-03-02T15:16:52.481627Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'home' LIMIT 1
-2020-03-02T15:16:52.481899Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:52.482166Z 8 Query SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC
-2020-03-02T15:16:52.482442Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:52.485717Z 10 Query SELECT option_value FROM wp_options WHERE option_name = '_transient_doing_cron' LIMIT 1
-2020-03-02T15:16:52.486126Z 10 Query UPDATE `wp_options` SET `option_value` = 'a:5:{i:1583162212;a:2:{s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583165812;a:1:{s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}}i:1583205412;a:1:{s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583248612;a:1:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}s:7:\"version\";i:2;}' WHERE `option_name` = 'cron'
-2020-03-02T15:16:52.492497Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'blog_charset' LIMIT 1
-2020-03-02T15:16:52.494185Z 10 Query UPDATE `wp_options` SET `option_value` = 'a:5:{i:1583162212;a:1:{s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583165812;a:1:{s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}}i:1583205412;a:1:{s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583248612;a:1:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}s:7:\"version\";i:2;}' WHERE `option_name` = 'cron'
-2020-03-02T15:16:52.495389Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:52.495798Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:52.496069Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:52.496314Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'permalink_structure' LIMIT 1
-2020-03-02T15:16:52.496616Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'home' LIMIT 1
-2020-03-02T15:16:52.496839Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:52.497102Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:52.497337Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:52.497644Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:52.497852Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:52.498085Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:52.498304Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:52.498574Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'start_of_week' LIMIT 1
-2020-03-02T15:16:52.498763Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'time_format' LIMIT 1
-2020-03-02T15:16:52.498933Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'date_format' LIMIT 1
-2020-03-02T15:16:52.499120Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'can_compress_scripts' LIMIT 1
-2020-03-02T15:16:52.499279Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'can_compress_scripts' LIMIT 1
-2020-03-02T15:16:52.499428Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:52.499593Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:52.499835Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:52.500249Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'permalink_structure' LIMIT 1
-2020-03-02T15:16:52.500484Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'home' LIMIT 1
-2020-03-02T15:16:52.500759Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'siteurl' LIMIT 1
-2020-03-02T15:16:52.501072Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'time_format' LIMIT 1
-2020-03-02T15:16:52.501332Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'date_format' LIMIT 1
-2020-03-02T15:16:52.501537Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'timezone_string' LIMIT 1
-2020-03-02T15:16:52.501732Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'gmt_offset' LIMIT 1
-2020-03-02T15:16:52.501953Z 8 Query SELECT option_value FROM wp_options WHERE option_name = 'timezone_string' LIMIT 1
-2020-03-02T15:16:52.503867Z 10 Query SELECT option_value FROM wp_options WHERE option_name = '_site_transient_update_plugins' LIMIT 1
-2020-03-02T15:16:52.503968Z 8 Quit
-2020-03-02T15:16:52.504560Z 10 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('_site_transient_update_plugins', 'O:8:\"stdClass\":1:{s:12:\"last_checked\";i:1583162212;}', 'no') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:16:52.925193Z 10 Query UPDATE `wp_options` SET `option_value` = 'O:8:\"stdClass\":4:{s:12:\"last_checked\";i:1583162212;s:8:\"response\";a:0:{}s:12:\"translations\";a:0:{}s:9:\"no_update\";a:2:{s:19:\"akismet/akismet.php\";O:8:\"stdClass\":9:{s:2:\"id\";s:21:\"w.org/plugins/akismet\";s:4:\"slug\";s:7:\"akismet\";s:6:\"plugin\";s:19:\"akismet/akismet.php\";s:11:\"new_version\";s:5:\"4.1.3\";s:3:\"url\";s:38:\"https://wordpress.org/plugins/akismet/\";s:7:\"package\";s:56:\"https://downloads.wordpress.org/plugin/akismet.4.1.3.zip\";s:5:\"icons\";a:2:{s:2:\"2x\";s:59:\"https://ps.w.org/akismet/assets/icon-256x256.png?rev=969272\";s:2:\"1x\";s:59:\"https://ps.w.org/akismet/assets/icon-128x128.png?rev=969272\";}s:7:\"banners\";a:1:{s:2:\"1x\";s:61:\"https://ps.w.org/akismet/assets/banner-772x250.jpg?rev=479904\";}s:11:\"banners_rtl\";a:0:{}}s:9:\"hello.php\";O:8:\"stdClass\":9:{s:2:\"id\";s:25:\"w.org/plugins/hello-dolly\";s:4:\"slug\";s:11:\"hello-dolly\";s:6:\"plugin\";s:9:\"hello.php\";s:11:\"new_version\";s:5:\"1.7.2\";s:3:\"url\";s:42:\"https://wordpress.org/plugins/hello-dolly/\";s:7:\"package\";s:60:\"https://downloads.wordpress.org/plugin/hello-dolly.1.7.2.zip\";s:5:\"icons\";a:2:{s:2:\"2x\";s:64:\"https://ps.w.org/hello-dolly/assets/icon-256x256.jpg?rev=2052855\";s:2:\"1x\";s:64:\"https://ps.w.org/hello-dolly/assets/icon-128x128.jpg?rev=2052855\";}s:7:\"banners\";a:1:{s:2:\"1x\";s:66:\"https://ps.w.org/hello-dolly/assets/banner-772x250.jpg?rev=2052855\";}s:11:\"banners_rtl\";a:0:{}}}}', `autoload` = 'no' WHERE `option_name` = '_site_transient_update_plugins'
-2020-03-02T15:16:52.928240Z 10 Query SELECT option_value FROM wp_options WHERE option_name = '_transient_doing_cron' LIMIT 1
-2020-03-02T15:16:52.928650Z 10 Query UPDATE `wp_options` SET `option_value` = 'a:5:{i:1583162212;a:1:{s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583165812;a:1:{s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}}i:1583205412;a:2:{s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583248612;a:1:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}s:7:\"version\";i:2;}' WHERE `option_name` = 'cron'
-2020-03-02T15:16:52.936196Z 10 Query UPDATE `wp_options` SET `option_value` = 'a:4:{i:1583165812;a:1:{s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}}i:1583205412;a:2:{s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583248612;a:1:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}s:7:\"version\";i:2;}' WHERE `option_name` = 'cron'
-2020-03-02T15:16:52.945282Z 10 Query SELECT option_value FROM wp_options WHERE option_name = '_site_transient_timeout_theme_roots' LIMIT 1
-2020-03-02T15:16:52.945600Z 10 Query SELECT option_value FROM wp_options WHERE option_name = '_site_transient_theme_roots' LIMIT 1
-2020-03-02T15:16:52.945839Z 10 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('_site_transient_timeout_theme_roots', '1583164012', 'no') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:16:52.953834Z 10 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('_site_transient_theme_roots', 'a:4:{s:14:\"twentynineteen\";s:7:\"/themes\";s:15:\"twentyseventeen\";s:7:\"/themes\";s:13:\"twentysixteen\";s:7:\"/themes\";s:12:\"twentytwenty\";s:7:\"/themes\";}', 'no') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:16:52.962702Z 10 Query SELECT option_value FROM wp_options WHERE option_name = '_site_transient_update_themes' LIMIT 1
-2020-03-02T15:16:52.963126Z 10 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('_site_transient_update_themes', 'O:8:\"stdClass\":1:{s:12:\"last_checked\";i:1583162212;}', 'no') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:16:53.351275Z 10 Query UPDATE `wp_options` SET `option_value` = 'O:8:\"stdClass\":4:{s:12:\"last_checked\";i:1583162213;s:7:\"checked\";a:4:{s:14:\"twentynineteen\";s:3:\"1.4\";s:15:\"twentyseventeen\";s:3:\"2.2\";s:13:\"twentysixteen\";s:3:\"2.0\";s:12:\"twentytwenty\";s:3:\"1.1\";}s:8:\"response\";a:0:{}s:12:\"translations\";a:0:{}}', `autoload` = 'no' WHERE `option_name` = '_site_transient_update_themes'
-2020-03-02T15:16:53.353509Z 10 Query SELECT option_value FROM wp_options WHERE option_name = '_transient_doing_cron' LIMIT 1
-2020-03-02T15:16:53.353722Z 10 Query SELECT option_value FROM wp_options WHERE option_name = '_transient_doing_cron' LIMIT 1
-2020-03-02T15:16:53.353905Z 10 Query SELECT autoload FROM wp_options WHERE option_name = '_transient_doing_cron'
-2020-03-02T15:16:53.354101Z 10 Query DELETE FROM `wp_options` WHERE `option_name` = '_transient_doing_cron'
-2020-03-02T15:16:53.362902Z 10 Query SELECT autoload FROM wp_options WHERE option_name = '_transient_timeout_doing_cron'
-2020-03-02T15:16:53.363115Z 10 Quit
-2020-03-02T15:17:01.763891Z 11 Connect wp_user@localhost on using TCP/IP
-2020-03-02T15:17:01.764030Z 11 Query SET NAMES utf8mb4
-2020-03-02T15:17:01.764380Z 11 Query SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_520_ci'
-2020-03-02T15:17:01.764464Z 11 Query SELECT @@SESSION.sql_mode
-2020-03-02T15:17:01.764571Z 11 Query SET SESSION sql_mode='NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
-2020-03-02T15:17:01.764652Z 11 Init DB wordpressdb
-2020-03-02T15:17:01.765052Z 11 Query SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'
-2020-03-02T15:17:01.767773Z 11 Query SELECT option_value FROM wp_options WHERE option_name = 'WPLANG' LIMIT 1
-2020-03-02T15:17:01.770199Z 11 Query SELECT option_value FROM wp_options WHERE option_name = 'can_compress_scripts' LIMIT 1
-2020-03-02T15:17:01.770811Z 11 Query SHOW FULL COLUMNS FROM `wp_options`
-2020-03-02T15:17:01.771236Z 11 Query UPDATE `wp_options` SET `option_value` = 'a:5:{i:1583162221;a:1:{s:16:\"wp_version_check\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583165812;a:1:{s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}}i:1583205412;a:2:{s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583248612;a:1:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}s:7:\"version\";i:2;}' WHERE `option_name` = 'cron'
-2020-03-02T15:17:01.773276Z 11 Query SELECT option_value FROM wp_options WHERE option_name = 'theme_switched' LIMIT 1
-2020-03-02T15:17:01.774508Z 11 Query SELECT * FROM wp_posts WHERE ID = 3 LIMIT 1
-2020-03-02T15:17:01.775539Z 11 Quit
-2020-03-02T15:17:15.872810Z 12 Connect wp_user@localhost on using TCP/IP
-2020-03-02T15:17:15.873140Z 12 Query SET NAMES utf8mb4
-2020-03-02T15:17:15.873517Z 12 Query SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_520_ci'
-2020-03-02T15:17:15.873646Z 12 Query SELECT @@SESSION.sql_mode
-2020-03-02T15:17:15.873868Z 12 Query SET SESSION sql_mode='NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
-2020-03-02T15:17:15.873994Z 12 Init DB wordpressdb
-2020-03-02T15:17:15.874704Z 12 Query SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'
-2020-03-02T15:17:15.878765Z 12 Query SELECT option_value FROM wp_options WHERE option_name = 'WPLANG' LIMIT 1
-2020-03-02T15:17:15.881708Z 12 Query SELECT option_value FROM wp_options WHERE option_name = 'can_compress_scripts' LIMIT 1
-2020-03-02T15:17:15.882296Z 12 Query SELECT option_value FROM wp_options WHERE option_name = '_transient_timeout_doing_cron' LIMIT 1
-2020-03-02T15:17:15.882561Z 12 Query SELECT option_value FROM wp_options WHERE option_name = '_transient_doing_cron' LIMIT 1
-2020-03-02T15:17:15.882833Z 12 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('_transient_doing_cron', '1583162235.8821659088134765625000', 'yes') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:17:15.885087Z 12 Query SELECT option_value FROM wp_options WHERE option_name = 'theme_switched' LIMIT 1
-2020-03-02T15:17:15.885608Z 12 Query SELECT * FROM wp_users WHERE user_login = 'wordpress-user' LIMIT 1
-2020-03-02T15:17:15.885981Z 12 Query SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC
-2020-03-02T15:17:15.887489Z 13 Connect wp_user@localhost on using TCP/IP
-2020-03-02T15:17:15.887809Z 13 Query SET NAMES utf8mb4
-2020-03-02T15:17:15.888083Z 13 Query SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_520_ci'
-2020-03-02T15:17:15.888138Z 12 Query SELECT umeta_id FROM wp_usermeta WHERE meta_key = 'session_tokens' AND user_id = 1
-2020-03-02T15:17:15.888228Z 13 Query SELECT @@SESSION.sql_mode
-2020-03-02T15:17:15.888446Z 13 Query SET SESSION sql_mode='NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
-2020-03-02T15:17:15.888536Z 12 Query SHOW FULL COLUMNS FROM `wp_usermeta`
-2020-03-02T15:17:15.888792Z 13 Init DB wordpressdb
-2020-03-02T15:17:15.889142Z 12 Query INSERT INTO `wp_usermeta` (`user_id`, `meta_key`, `meta_value`) VALUES (1, 'session_tokens', 'a:1:{s:64:\"a8de5451b91c16bb0e59143e24d3295511cdcb161b31c92ed41d5deef00d021e\";a:4:{s:10:\"expiration\";i:1583335035;s:2:\"ip\";s:9:\"127.0.0.1\";s:2:\"ua\";s:76:\"Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:73.0) Gecko/20100101 Firefox/73.0\";s:5:\"login\";i:1583162235;}}')
-2020-03-02T15:17:15.889280Z 13 Query SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'
-2020-03-02T15:17:15.890570Z 12 Query SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC
-2020-03-02T15:17:15.891243Z 13 Query SELECT option_value FROM wp_options WHERE option_name = 'WPLANG' LIMIT 1
-2020-03-02T15:17:15.891244Z 12 Quit
-2020-03-02T15:17:15.893888Z 13 Query SELECT option_value FROM wp_options WHERE option_name = 'can_compress_scripts' LIMIT 1
-2020-03-02T15:17:15.894784Z 13 Query SELECT option_value FROM wp_options WHERE option_name = 'theme_switched' LIMIT 1
-2020-03-02T15:17:15.896123Z 13 Query SHOW FULL COLUMNS FROM `wp_options`
-2020-03-02T15:17:15.896596Z 13 Query UPDATE `wp_options` SET `option_value` = 'a:6:{i:1583162221;a:1:{s:16:\"wp_version_check\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583165812;a:1:{s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}}i:1583205412;a:2:{s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583205421;a:1:{s:16:\"wp_version_check\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583248612;a:1:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}s:7:\"version\";i:2;}' WHERE `option_name` = 'cron'
-2020-03-02T15:17:15.898488Z 14 Connect wp_user@localhost on using TCP/IP
-2020-03-02T15:17:15.898491Z 13 Query UPDATE `wp_options` SET `option_value` = 'a:5:{i:1583165812;a:1:{s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}}i:1583205412;a:2:{s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583205421;a:1:{s:16:\"wp_version_check\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583248612;a:1:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}s:7:\"version\";i:2;}' WHERE `option_name` = 'cron'
-2020-03-02T15:17:15.898731Z 14 Query SET NAMES utf8mb4
-2020-03-02T15:17:15.899003Z 14 Query SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_520_ci'
-2020-03-02T15:17:15.899454Z 13 Query SELECT option_value FROM wp_options WHERE option_name = '_site_transient_update_core' LIMIT 1
-2020-03-02T15:17:15.899831Z 13 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('_site_transient_update_core', 'O:8:\"stdClass\":3:{s:7:\"updates\";a:0:{}s:15:\"version_checked\";s:5:\"5.3.2\";s:12:\"last_checked\";i:1583162235;}', 'no') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:17:15.900314Z 14 Query SELECT @@SESSION.sql_mode
-2020-03-02T15:17:15.901088Z 14 Query SET SESSION sql_mode='NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
-2020-03-02T15:17:15.901229Z 14 Init DB wordpressdb
-2020-03-02T15:17:15.901260Z 13 Query SELECT COUNT(NULLIF(`meta_value` LIKE '%\"administrator\"%', false)), COUNT(NULLIF(`meta_value` LIKE '%\"editor\"%', false)), COUNT(NULLIF(`meta_value` LIKE '%\"author\"%', false)), COUNT(NULLIF(`meta_value` LIKE '%\"contributor\"%', false)), COUNT(NULLIF(`meta_value` LIKE '%\"subscriber\"%', false)), COUNT(NULLIF(`meta_value` = 'a:0:{}', false)), COUNT(*)
- FROM wp_usermeta
- INNER JOIN wp_users ON user_id = ID
- WHERE meta_key = 'wp_capabilities'
-2020-03-02T15:17:15.902471Z 14 Query SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'
-2020-03-02T15:17:15.904540Z 14 Query SELECT option_value FROM wp_options WHERE option_name = 'WPLANG' LIMIT 1
-2020-03-02T15:17:15.904860Z 14 Query SELECT * FROM wp_users WHERE user_login = 'wordpress-user' LIMIT 1
-2020-03-02T15:17:15.905205Z 14 Query SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC
-2020-03-02T15:17:15.907503Z 14 Query SELECT option_value FROM wp_options WHERE option_name = 'can_compress_scripts' LIMIT 1
-2020-03-02T15:17:15.908200Z 14 Query SELECT option_value FROM wp_options WHERE option_name = 'theme_switched' LIMIT 1
-2020-03-02T15:17:15.909633Z 14 Query SELECT option_value FROM wp_options WHERE option_name = 'db_upgraded' LIMIT 1
-2020-03-02T15:17:15.910426Z 14 Query SHOW FULL COLUMNS FROM `wp_options`
-2020-03-02T15:17:15.910944Z 14 Query UPDATE `wp_options` SET `option_value` = 'a:6:{i:1583162235;a:1:{s:19:\"wp_scheduled_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1583165812;a:1:{s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}}i:1583205412;a:2:{s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583205421;a:1:{s:16:\"wp_version_check\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583248612;a:1:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}s:7:\"version\";i:2;}' WHERE `option_name` = 'cron'
-2020-03-02T15:17:15.912764Z 14 Query UPDATE `wp_options` SET `option_value` = 'a:6:{i:1583162235;a:2:{s:19:\"wp_scheduled_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}s:25:\"delete_expired_transients\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1583165812;a:1:{s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}}i:1583205412;a:2:{s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583205421;a:1:{s:16:\"wp_version_check\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583248612;a:1:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}s:7:\"version\";i:2;}' WHERE `option_name` = 'cron'
-2020-03-02T15:17:15.914987Z 14 Query SELECT option_value FROM wp_options WHERE option_name = '_site_transient_update_plugins' LIMIT 1
-2020-03-02T15:17:15.915344Z 14 Query SELECT option_value FROM wp_options WHERE option_name = '_site_transient_update_themes' LIMIT 1
-2020-03-02T15:17:15.915635Z 14 Query SELECT option_value FROM wp_options WHERE option_name = 'dismissed_update_core' LIMIT 1
-2020-03-02T15:17:15.916109Z 14 Query SELECT option_value FROM wp_options WHERE option_name = '_site_transient_update_core' LIMIT 1
-2020-03-02T15:17:15.916468Z 14 Query SELECT comment_approved, COUNT( * ) AS total
- FROM wp_comments
-
- GROUP BY comment_approved
-2020-03-02T15:17:15.920134Z 14 Query SELECT * FROM wp_posts WHERE ID = 3 LIMIT 1
-2020-03-02T15:17:15.920566Z 14 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (3) ORDER BY meta_id ASC
-2020-03-02T15:17:15.924056Z 14 Query SELECT option_value FROM wp_options WHERE option_name = '_site_transient_timeout_browser_4f751766cc0d0d56b9173e9922c01a88' LIMIT 1
-2020-03-02T15:17:15.924342Z 14 Query SELECT option_value FROM wp_options WHERE option_name = '_site_transient_browser_4f751766cc0d0d56b9173e9922c01a88' LIMIT 1
-2020-03-02T15:17:16.307911Z 13 Query UPDATE `wp_options` SET `option_value` = 'O:8:\"stdClass\":4:{s:7:\"updates\";a:1:{i:0;O:8:\"stdClass\":10:{s:8:\"response\";s:6:\"latest\";s:8:\"download\";s:59:\"https://downloads.wordpress.org/release/wordpress-5.3.2.zip\";s:6:\"locale\";s:5:\"en_US\";s:8:\"packages\";O:8:\"stdClass\":5:{s:4:\"full\";s:59:\"https://downloads.wordpress.org/release/wordpress-5.3.2.zip\";s:10:\"no_content\";s:70:\"https://downloads.wordpress.org/release/wordpress-5.3.2-no-content.zip\";s:11:\"new_bundled\";s:71:\"https://downloads.wordpress.org/release/wordpress-5.3.2-new-bundled.zip\";s:7:\"partial\";b:0;s:8:\"rollback\";b:0;}s:7:\"current\";s:5:\"5.3.2\";s:7:\"version\";s:5:\"5.3.2\";s:11:\"php_version\";s:6:\"5.6.20\";s:13:\"mysql_version\";s:3:\"5.0\";s:11:\"new_bundled\";s:3:\"5.3\";s:15:\"partial_version\";s:0:\"\";}}s:12:\"last_checked\";i:1583162236;s:15:\"version_checked\";s:5:\"5.3.2\";s:12:\"translations\";a:0:{}}', `autoload` = 'no' WHERE `option_name` = '_site_transient_update_core'
-2020-03-02T15:17:16.310513Z 13 Query INSERT IGNORE INTO `wp_options` ( `option_name`, `option_value`, `autoload` ) VALUES ('auto_updater.lock', '1583162236', 'no') /* LOCK */
-2020-03-02T15:17:16.311659Z 13 Query SELECT option_value FROM wp_options WHERE option_name = 'auto_updater.lock' LIMIT 1
-2020-03-02T15:17:16.312159Z 13 Query UPDATE `wp_options` SET `option_value` = '1583162236' WHERE `option_name` = 'auto_updater.lock'
-2020-03-02T15:17:16.312242Z 14 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('_site_transient_timeout_browser_4f751766cc0d0d56b9173e9922c01a88', '1583767036', 'no') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:17:16.315097Z 13 Query SELECT option_value FROM wp_options WHERE option_name = '_site_transient_update_plugins' LIMIT 1
-2020-03-02T15:17:16.315229Z 14 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('_site_transient_browser_4f751766cc0d0d56b9173e9922c01a88', 'a:10:{s:4:\"name\";s:7:\"Firefox\";s:7:\"version\";s:4:\"73.0\";s:8:\"platform\";s:5:\"Linux\";s:10:\"update_url\";s:32:\"https://www.mozilla.org/firefox/\";s:7:\"img_src\";s:44:\"http://s.w.org/images/browsers/firefox.png?1\";s:11:\"img_src_ssl\";s:45:\"https://s.w.org/images/browsers/firefox.png?1\";s:15:\"current_version\";s:2:\"56\";s:7:\"upgrade\";b:0;s:8:\"insecure\";b:0;s:6:\"mobile\";b:0;}', 'no') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:17:16.315488Z 13 Query UPDATE `wp_options` SET `option_value` = 'O:8:\"stdClass\":4:{s:12:\"last_checked\";i:1583162236;s:8:\"response\";a:0:{}s:12:\"translations\";a:0:{}s:9:\"no_update\";a:2:{s:19:\"akismet/akismet.php\";O:8:\"stdClass\":9:{s:2:\"id\";s:21:\"w.org/plugins/akismet\";s:4:\"slug\";s:7:\"akismet\";s:6:\"plugin\";s:19:\"akismet/akismet.php\";s:11:\"new_version\";s:5:\"4.1.3\";s:3:\"url\";s:38:\"https://wordpress.org/plugins/akismet/\";s:7:\"package\";s:56:\"https://downloads.wordpress.org/plugin/akismet.4.1.3.zip\";s:5:\"icons\";a:2:{s:2:\"2x\";s:59:\"https://ps.w.org/akismet/assets/icon-256x256.png?rev=969272\";s:2:\"1x\";s:59:\"https://ps.w.org/akismet/assets/icon-128x128.png?rev=969272\";}s:7:\"banners\";a:1:{s:2:\"1x\";s:61:\"https://ps.w.org/akismet/assets/banner-772x250.jpg?rev=479904\";}s:11:\"banners_rtl\";a:0:{}}s:9:\"hello.php\";O:8:\"stdClass\":9:{s:2:\"id\";s:25:\"w.org/plugins/hello-dolly\";s:4:\"slug\";s:11:\"hello-dolly\";s:6:\"plugin\";s:9:\"hello.php\";s:11:\"new_version\";s:5:\"1.7.2\";s:3:\"url\";s:42:\"https://wordpress.org/plugins/hello-dolly/\";s:7:\"package\";s:60:\"https://downloads.wordpress.org/plugin/hello-dolly.1.7.2.zip\";s:5:\"icons\";a:2:{s:2:\"2x\";s:64:\"https://ps.w.org/hello-dolly/assets/icon-256x256.jpg?rev=2052855\";s:2:\"1x\";s:64:\"https://ps.w.org/hello-dolly/assets/icon-128x128.jpg?rev=2052855\";}s:7:\"banners\";a:1:{s:2:\"1x\";s:66:\"https://ps.w.org/hello-dolly/assets/banner-772x250.jpg?rev=2052855\";}s:11:\"banners_rtl\";a:0:{}}}}', `autoload` = 'no' WHERE `option_name` = '_site_transient_update_plugins'
-2020-03-02T15:17:16.316191Z 14 Query SELECT option_value FROM wp_options WHERE option_name = '_site_transient_timeout_php_check_7e6c1a8668674f8cf640a3994d949207' LIMIT 1
-2020-03-02T15:17:16.316552Z 14 Query SELECT option_value FROM wp_options WHERE option_name = '_site_transient_php_check_7e6c1a8668674f8cf640a3994d949207' LIMIT 1
-2020-03-02T15:17:16.677702Z 13 Query UPDATE `wp_options` SET `option_value` = 'O:8:\"stdClass\":5:{s:12:\"last_checked\";i:1583162236;s:7:\"checked\";a:2:{s:19:\"akismet/akismet.php\";s:5:\"4.1.3\";s:9:\"hello.php\";s:5:\"1.7.2\";}s:8:\"response\";a:0:{}s:12:\"translations\";a:0:{}s:9:\"no_update\";a:2:{s:19:\"akismet/akismet.php\";O:8:\"stdClass\":9:{s:2:\"id\";s:21:\"w.org/plugins/akismet\";s:4:\"slug\";s:7:\"akismet\";s:6:\"plugin\";s:19:\"akismet/akismet.php\";s:11:\"new_version\";s:5:\"4.1.3\";s:3:\"url\";s:38:\"https://wordpress.org/plugins/akismet/\";s:7:\"package\";s:56:\"https://downloads.wordpress.org/plugin/akismet.4.1.3.zip\";s:5:\"icons\";a:2:{s:2:\"2x\";s:59:\"https://ps.w.org/akismet/assets/icon-256x256.png?rev=969272\";s:2:\"1x\";s:59:\"https://ps.w.org/akismet/assets/icon-128x128.png?rev=969272\";}s:7:\"banners\";a:1:{s:2:\"1x\";s:61:\"https://ps.w.org/akismet/assets/banner-772x250.jpg?rev=479904\";}s:11:\"banners_rtl\";a:0:{}}s:9:\"hello.php\";O:8:\"stdClass\":9:{s:2:\"id\";s:25:\"w.org/plugins/hello-dolly\";s:4:\"slug\";s:11:\"hello-dolly\";s:6:\"plugin\";s:9:\"hello.php\";s:11:\"new_version\";s:5:\"1.7.2\";s:3:\"url\";s:42:\"https://wordpress.org/plugins/hello-dolly/\";s:7:\"package\";s:60:\"https://downloads.wordpress.org/plugin/hello-dolly.1.7.2.zip\";s:5:\"icons\";a:2:{s:2:\"2x\";s:64:\"https://ps.w.org/hello-dolly/assets/icon-256x256.jpg?rev=2052855\";s:2:\"1x\";s:64:\"https://ps.w.org/hello-dolly/assets/icon-128x128.jpg?rev=2052855\";}s:7:\"banners\";a:1:{s:2:\"1x\";s:66:\"https://ps.w.org/hello-dolly/assets/banner-772x250.jpg?rev=2052855\";}s:11:\"banners_rtl\";a:0:{}}}}', `autoload` = 'no' WHERE `option_name` = '_site_transient_update_plugins'
-2020-03-02T15:17:16.680502Z 13 Query SELECT option_value FROM wp_options WHERE option_name = '_site_transient_timeout_theme_roots' LIMIT 1
-2020-03-02T15:17:16.680776Z 13 Query SELECT option_value FROM wp_options WHERE option_name = '_site_transient_theme_roots' LIMIT 1
-2020-03-02T15:17:16.681683Z 13 Query SELECT option_value FROM wp_options WHERE option_name = '_site_transient_update_themes' LIMIT 1
-2020-03-02T15:17:16.682291Z 14 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('_site_transient_timeout_php_check_7e6c1a8668674f8cf640a3994d949207', '1583767036', 'no') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:17:16.682540Z 13 Query SELECT autoload FROM wp_options WHERE option_name = 'auto_updater.lock'
-2020-03-02T15:17:16.682893Z 13 Query DELETE FROM `wp_options` WHERE `option_name` = 'auto_updater.lock'
-2020-03-02T15:17:16.683618Z 14 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('_site_transient_php_check_7e6c1a8668674f8cf640a3994d949207', 'a:5:{s:19:\"recommended_version\";s:3:\"7.3\";s:15:\"minimum_version\";s:6:\"5.6.20\";s:12:\"is_supported\";b:1;s:9:\"is_secure\";b:1;s:13:\"is_acceptable\";b:1;}', 'no') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:17:16.683950Z 13 Query SELECT option_value FROM wp_options WHERE option_name = '_transient_doing_cron' LIMIT 1
-2020-03-02T15:17:16.684340Z 13 Query SELECT option_value FROM wp_options WHERE option_name = '_transient_doing_cron' LIMIT 1
-2020-03-02T15:17:16.684617Z 13 Query SELECT autoload FROM wp_options WHERE option_name = '_transient_doing_cron'
-2020-03-02T15:17:16.684842Z 13 Query DELETE FROM `wp_options` WHERE `option_name` = '_transient_doing_cron'
-2020-03-02T15:17:16.687292Z 14 Query SELECT option_value FROM wp_options WHERE option_name = '_site_transient_timeout_' LIMIT 1
-2020-03-02T15:17:16.687431Z 13 Query SELECT autoload FROM wp_options WHERE option_name = '_transient_timeout_doing_cron'
-2020-03-02T15:17:16.687756Z 13 Quit
-2020-03-02T15:17:16.687769Z 14 Query SELECT option_value FROM wp_options WHERE option_name = '_site_transient_' LIMIT 1
-2020-03-02T15:17:16.692794Z 14 Query SELECT option_value FROM wp_options WHERE option_name = 'auto_core_update_failed' LIMIT 1
-2020-03-02T15:17:16.694312Z 14 Query SELECT post_status, COUNT( * ) AS num_posts FROM wp_posts WHERE post_type = 'post' GROUP BY post_status
-2020-03-02T15:17:16.694818Z 14 Query SELECT post_status, COUNT( * ) AS num_posts FROM wp_posts WHERE post_type = 'page' GROUP BY post_status
-2020-03-02T15:17:16.695893Z 14 Query SELECT wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AND ((wp_posts.post_status = 'future')) ORDER BY wp_posts.post_date ASC LIMIT 0, 5
-2020-03-02T15:17:16.696436Z 14 Query SELECT wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = 'post' AND ((wp_posts.post_status = 'publish')) ORDER BY wp_posts.post_date DESC LIMIT 0, 5
-2020-03-02T15:17:16.696826Z 14 Query SELECT wp_posts.* FROM wp_posts WHERE ID IN (1)
-2020-03-02T15:17:16.697295Z 14 Query SELECT t.*, tt.*, tr.object_id FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category', 'post_tag', 'post_format') AND tr.object_id IN (1) ORDER BY t.name ASC
-2020-03-02T15:17:16.697942Z 14 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (1) ORDER BY meta_id ASC
-2020-03-02T15:17:16.699112Z 14 Query SELECT wp_comments.comment_ID FROM wp_comments WHERE ( ( comment_approved = '0' OR comment_approved = '1' ) ) ORDER BY wp_comments.comment_date_gmt DESC LIMIT 0,25
-2020-03-02T15:17:16.699460Z 14 Query SELECT wp_comments.* FROM wp_comments WHERE comment_ID IN (1)
-2020-03-02T15:17:16.699992Z 14 Query SELECT comment_id, meta_key, meta_value FROM wp_commentmeta WHERE comment_id IN (1) ORDER BY meta_id ASC
-2020-03-02T15:17:16.700633Z 14 Query SELECT wp_comments.comment_ID FROM wp_comments WHERE ( ( comment_approved = '0' OR comment_approved = '1' ) ) ORDER BY wp_comments.comment_date_gmt DESC LIMIT 25,50
-2020-03-02T15:17:16.703967Z 14 Query SELECT COUNT(*) FROM wp_comments WHERE ( ( comment_approved = '0' OR comment_approved = '1' ) ) AND user_id = 1 ORDER BY wp_comments.comment_date_gmt DESC
-2020-03-02T15:17:16.708236Z 14 Query SHOW FULL COLUMNS FROM `wp_posts`
-2020-03-02T15:17:16.709068Z 14 Query INSERT INTO `wp_posts` (`post_author`, `post_date`, `post_date_gmt`, `post_content`, `post_content_filtered`, `post_title`, `post_excerpt`, `post_status`, `post_type`, `comment_status`, `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`, `post_modified_gmt`, `post_parent`, `menu_order`, `post_mime_type`, `guid`) VALUES (1, '2020-03-02 15:17:16', '0000-00-00 00:00:00', '', '', 'Auto Draft', '', 'auto-draft', 'post', 'open', 'open', '', '', '', '', '2020-03-02 15:17:16', '0000-00-00 00:00:00', 0, 0, '', '')
-2020-03-02T15:17:16.710964Z 14 Query SELECT * FROM wp_posts WHERE ID = 4 LIMIT 1
-2020-03-02T15:17:16.711330Z 14 Query SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (4)
-2020-03-02T15:17:16.711947Z 14 Query UPDATE `wp_posts` SET `guid` = 'http://127.0.0.1/wordpress/?p=4' WHERE `ID` = 4
-2020-03-02T15:17:16.713531Z 14 Query SELECT * FROM wp_posts WHERE ID = 4 LIMIT 1
-2020-03-02T15:17:16.713985Z 14 Query SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('category') AND tr.object_id IN (4) ORDER BY t.name ASC
-2020-03-02T15:17:16.714399Z 14 Query SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('post_tag') AND tr.object_id IN (4) ORDER BY t.name ASC
-2020-03-02T15:17:16.714781Z 14 Query SELECT t.*, tt.* FROM wp_terms AS t INNER JOIN wp_term_taxonomy AS tt ON t.term_id = tt.term_id INNER JOIN wp_term_relationships AS tr ON tr.term_taxonomy_id = tt.term_taxonomy_id WHERE tt.taxonomy IN ('post_format') AND tr.object_id IN (4) ORDER BY t.name ASC
-2020-03-02T15:17:16.715095Z 14 Query SELECT autoload FROM wp_options WHERE option_name = '_transient_is_multi_author'
-2020-03-02T15:17:16.715452Z 14 Query UPDATE `wp_options` SET `option_value` = 'a:7:{i:1583162235;a:2:{s:19:\"wp_scheduled_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}s:25:\"delete_expired_transients\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1583162236;a:1:{s:30:\"wp_scheduled_auto_draft_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1583165812;a:1:{s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}}i:1583205412;a:2:{s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583205421;a:1:{s:16:\"wp_version_check\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583248612;a:1:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}s:7:\"version\";i:2;}' WHERE `option_name` = 'cron'
-2020-03-02T15:17:16.716560Z 14 Query SELECT umeta_id FROM wp_usermeta WHERE meta_key = 'wp_dashboard_quick_press_last_post_id' AND user_id = 1
-2020-03-02T15:17:16.716836Z 14 Query SHOW FULL COLUMNS FROM `wp_usermeta`
-2020-03-02T15:17:16.717261Z 14 Query INSERT INTO `wp_usermeta` (`user_id`, `meta_key`, `meta_value`) VALUES (1, 'wp_dashboard_quick_press_last_post_id', '4')
-2020-03-02T15:17:16.719013Z 14 Query SELECT wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_author IN (1) AND wp_posts.post_type = 'post' AND ((wp_posts.post_status = 'draft')) ORDER BY wp_posts.post_modified DESC LIMIT 0, 4
-2020-03-02T15:17:16.719490Z 14 Query SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC
-2020-03-02T15:17:16.720163Z 14 Query SELECT option_value FROM wp_options WHERE option_name = '_transient_timeout_dash_v2_88ae138922fe95674369b1cb3d215a2b' LIMIT 1
-2020-03-02T15:17:16.720462Z 14 Query SELECT option_value FROM wp_options WHERE option_name = '_transient_dash_v2_88ae138922fe95674369b1cb3d215a2b' LIMIT 1
-2020-03-02T15:17:16.723149Z 14 Quit
-2020-03-02T15:17:16.975855Z 15 Connect wp_user@localhost on using TCP/IP
-2020-03-02T15:17:16.976094Z 15 Query SET NAMES utf8mb4
-2020-03-02T15:17:16.976276Z 15 Query SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_520_ci'
-2020-03-02T15:17:16.976431Z 15 Query SELECT @@SESSION.sql_mode
-2020-03-02T15:17:16.976598Z 15 Query SET SESSION sql_mode='NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
-2020-03-02T15:17:16.976764Z 15 Init DB wordpressdb
-2020-03-02T15:17:16.977218Z 15 Query SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'
-2020-03-02T15:17:16.979525Z 15 Query SELECT option_value FROM wp_options WHERE option_name = 'WPLANG' LIMIT 1
-2020-03-02T15:17:16.979938Z 15 Query SELECT * FROM wp_users WHERE user_login = 'wordpress-user' LIMIT 1
-2020-03-02T15:17:16.980401Z 15 Query SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC
-2020-03-02T15:17:16.982944Z 15 Query SELECT option_value FROM wp_options WHERE option_name = 'can_compress_scripts' LIMIT 1
-2020-03-02T15:17:16.983590Z 15 Query SELECT option_value FROM wp_options WHERE option_name = '_transient_timeout_doing_cron' LIMIT 1
-2020-03-02T15:17:16.983912Z 15 Query SELECT option_value FROM wp_options WHERE option_name = '_transient_doing_cron' LIMIT 1
-2020-03-02T15:17:16.984214Z 15 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('_transient_doing_cron', '1583162236.9834411144256591796875', 'yes') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:17:16.990926Z 16 Connect wp_user@localhost on using TCP/IP
-2020-03-02T15:17:16.991136Z 16 Query SET NAMES utf8mb4
-2020-03-02T15:17:16.991255Z 15 Query SELECT option_value FROM wp_options WHERE option_name = 'theme_switched' LIMIT 1
-2020-03-02T15:17:16.991485Z 16 Query SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_520_ci'
-2020-03-02T15:17:16.991610Z 16 Query SELECT @@SESSION.sql_mode
-2020-03-02T15:17:16.991818Z 16 Query SET SESSION sql_mode='NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
-2020-03-02T15:17:16.991953Z 16 Init DB wordpressdb
-2020-03-02T15:17:16.992587Z 16 Query SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'
-2020-03-02T15:17:16.995301Z 16 Query SELECT option_value FROM wp_options WHERE option_name = 'WPLANG' LIMIT 1
-2020-03-02T15:17:16.998866Z 16 Query SELECT option_value FROM wp_options WHERE option_name = 'can_compress_scripts' LIMIT 1
-2020-03-02T15:17:16.999629Z 16 Query SELECT option_value FROM wp_options WHERE option_name = 'theme_switched' LIMIT 1
-2020-03-02T15:17:17.000190Z 16 Query SHOW FULL COLUMNS FROM `wp_options`
-2020-03-02T15:17:17.000688Z 16 Query UPDATE `wp_options` SET `option_value` = 'a:8:{i:1583162235;a:2:{s:19:\"wp_scheduled_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}s:25:\"delete_expired_transients\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1583162236;a:1:{s:30:\"wp_scheduled_auto_draft_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1583165812;a:1:{s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}}i:1583205412;a:2:{s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583205421;a:1:{s:16:\"wp_version_check\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583248612;a:1:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1583248635;a:1:{s:19:\"wp_scheduled_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}s:7:\"version\";i:2;}' WHERE `option_name` = 'cron'
-2020-03-02T15:17:17.002679Z 16 Query UPDATE `wp_options` SET `option_value` = 'a:8:{i:1583162235;a:1:{s:25:\"delete_expired_transients\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1583162236;a:1:{s:30:\"wp_scheduled_auto_draft_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1583165812;a:1:{s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}}i:1583205412;a:2:{s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583205421;a:1:{s:16:\"wp_version_check\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583248612;a:1:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1583248635;a:1:{s:19:\"wp_scheduled_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}s:7:\"version\";i:2;}' WHERE `option_name` = 'cron'
-2020-03-02T15:17:17.003540Z 16 Query SELECT post_id FROM wp_postmeta WHERE meta_key = '_wp_trash_meta_time' AND meta_value < 1580570237
-2020-03-02T15:17:17.003934Z 16 Query SELECT comment_id FROM wp_commentmeta WHERE meta_key = '_wp_trash_meta_time' AND meta_value < 1580570237
-2020-03-02T15:17:17.004264Z 16 Query SELECT option_value FROM wp_options WHERE option_name = '_transient_doing_cron' LIMIT 1
-2020-03-02T15:17:17.004585Z 16 Query UPDATE `wp_options` SET `option_value` = 'a:8:{i:1583162235;a:1:{s:25:\"delete_expired_transients\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1583162236;a:1:{s:30:\"wp_scheduled_auto_draft_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1583165812;a:1:{s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}}i:1583205412;a:2:{s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583205421;a:1:{s:16:\"wp_version_check\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583248612;a:1:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1583248635;a:2:{s:19:\"wp_scheduled_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}s:25:\"delete_expired_transients\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}s:7:\"version\";i:2;}' WHERE `option_name` = 'cron'
-2020-03-02T15:17:17.006163Z 16 Query UPDATE `wp_options` SET `option_value` = 'a:7:{i:1583162236;a:1:{s:30:\"wp_scheduled_auto_draft_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1583165812;a:1:{s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}}i:1583205412;a:2:{s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583205421;a:1:{s:16:\"wp_version_check\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583248612;a:1:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1583248635;a:2:{s:19:\"wp_scheduled_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}s:25:\"delete_expired_transients\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}s:7:\"version\";i:2;}' WHERE `option_name` = 'cron'
-2020-03-02T15:17:17.006988Z 16 Query DELETE a, b FROM wp_options a, wp_options b
- WHERE a.option_name LIKE '\\_transient\\_%'
- AND a.option_name NOT LIKE '\\_transient\\_timeout\\_%'
- AND b.option_name = CONCAT( '_transient_timeout_', SUBSTRING( a.option_name, 12 ) )
- AND b.option_value < 1583162237
-2020-03-02T15:17:17.007331Z 16 Query DELETE a, b FROM wp_options a, wp_options b
- WHERE a.option_name LIKE '\\_site\\_transient\\_%'
- AND a.option_name NOT LIKE '\\_site\\_transient\\_timeout\\_%'
- AND b.option_name = CONCAT( '_site_transient_timeout_', SUBSTRING( a.option_name, 17 ) )
- AND b.option_value < 1583162237
-2020-03-02T15:17:17.007793Z 16 Query SELECT option_value FROM wp_options WHERE option_name = '_transient_doing_cron' LIMIT 1
-2020-03-02T15:17:17.008118Z 16 Query UPDATE `wp_options` SET `option_value` = 'a:8:{i:1583162236;a:1:{s:30:\"wp_scheduled_auto_draft_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1583165812;a:1:{s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}}i:1583205412;a:2:{s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583205421;a:1:{s:16:\"wp_version_check\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583248612;a:1:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1583248635;a:2:{s:19:\"wp_scheduled_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}s:25:\"delete_expired_transients\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1583248636;a:1:{s:30:\"wp_scheduled_auto_draft_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}s:7:\"version\";i:2;}' WHERE `option_name` = 'cron'
-2020-03-02T15:17:17.009396Z 16 Query UPDATE `wp_options` SET `option_value` = 'a:7:{i:1583165812;a:1:{s:34:\"wp_privacy_delete_old_export_files\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:6:\"hourly\";s:4:\"args\";a:0:{}s:8:\"interval\";i:3600;}}}i:1583205412;a:2:{s:17:\"wp_update_plugins\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}s:16:\"wp_update_themes\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583205421;a:1:{s:16:\"wp_version_check\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:10:\"twicedaily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:43200;}}}i:1583248612;a:1:{s:32:\"recovery_mode_clean_expired_keys\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1583248635;a:2:{s:19:\"wp_scheduled_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}s:25:\"delete_expired_transients\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}i:1583248636;a:1:{s:30:\"wp_scheduled_auto_draft_delete\";a:1:{s:32:\"40cd750bba9870f18aada2478b24840a\";a:3:{s:8:\"schedule\";s:5:\"daily\";s:4:\"args\";a:0:{}s:8:\"interval\";i:86400;}}}s:7:\"version\";i:2;}' WHERE `option_name` = 'cron'
-2020-03-02T15:17:17.010108Z 16 Query SELECT ID FROM wp_posts WHERE post_status = 'auto-draft' AND DATE_SUB( NOW(), INTERVAL 7 DAY ) > post_date
-2020-03-02T15:17:17.010419Z 16 Query SELECT option_value FROM wp_options WHERE option_name = '_transient_doing_cron' LIMIT 1
-2020-03-02T15:17:17.010605Z 16 Query SELECT option_value FROM wp_options WHERE option_name = '_transient_doing_cron' LIMIT 1
-2020-03-02T15:17:17.010817Z 16 Query SELECT autoload FROM wp_options WHERE option_name = '_transient_doing_cron'
-2020-03-02T15:17:17.011035Z 16 Query DELETE FROM `wp_options` WHERE `option_name` = '_transient_doing_cron'
-2020-03-02T15:17:17.012051Z 16 Query SELECT autoload FROM wp_options WHERE option_name = '_transient_timeout_doing_cron'
-2020-03-02T15:17:17.012264Z 16 Quit
-2020-03-02T15:17:17.012761Z 15 Query SELECT * FROM wp_posts WHERE ID = 3 LIMIT 1
-2020-03-02T15:17:17.013765Z 15 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (3) ORDER BY meta_id ASC
-2020-03-02T15:17:17.014179Z 15 Quit
-2020-03-02T15:17:17.065445Z 17 Connect wp_user@localhost on using TCP/IP
-2020-03-02T15:17:17.065669Z 17 Query SET NAMES utf8mb4
-2020-03-02T15:17:17.065879Z 17 Query SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_520_ci'
-2020-03-02T15:17:17.066018Z 17 Query SELECT @@SESSION.sql_mode
-2020-03-02T15:17:17.066190Z 17 Query SET SESSION sql_mode='NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
-2020-03-02T15:17:17.066335Z 17 Init DB wordpressdb
-2020-03-02T15:17:17.066828Z 17 Query SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'
-2020-03-02T15:17:17.069409Z 17 Query SELECT option_value FROM wp_options WHERE option_name = 'WPLANG' LIMIT 1
-2020-03-02T15:17:17.069901Z 17 Query SELECT * FROM wp_users WHERE user_login = 'wordpress-user' LIMIT 1
-2020-03-02T15:17:17.070416Z 17 Query SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC
-2020-03-02T15:17:17.073190Z 17 Query SELECT option_value FROM wp_options WHERE option_name = 'can_compress_scripts' LIMIT 1
-2020-03-02T15:17:17.074008Z 17 Query SELECT option_value FROM wp_options WHERE option_name = 'theme_switched' LIMIT 1
-2020-03-02T15:17:17.074870Z 17 Query SELECT * FROM wp_posts WHERE ID = 3 LIMIT 1
-2020-03-02T15:17:17.075371Z 17 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (3) ORDER BY meta_id ASC
-2020-03-02T15:17:17.075861Z 17 Query SELECT option_value FROM wp_options WHERE option_name = '_site_transient_timeout_' LIMIT 1
-2020-03-02T15:17:17.076130Z 17 Query SELECT option_value FROM wp_options WHERE option_name = '_site_transient_' LIMIT 1
-2020-03-02T15:17:17.127094Z 18 Connect wp_user@localhost on using TCP/IP
-2020-03-02T15:17:17.127352Z 18 Query SET NAMES utf8mb4
-2020-03-02T15:17:17.128611Z 18 Query SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_520_ci'
-2020-03-02T15:17:17.128771Z 18 Query SELECT @@SESSION.sql_mode
-2020-03-02T15:17:17.129009Z 18 Query SET SESSION sql_mode='NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
-2020-03-02T15:17:17.129197Z 18 Init DB wordpressdb
-2020-03-02T15:17:17.129758Z 18 Query SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'
-2020-03-02T15:17:17.129849Z 19 Connect wp_user@localhost on using TCP/IP
-2020-03-02T15:17:17.129961Z 19 Query SET NAMES utf8mb4
-2020-03-02T15:17:17.130083Z 19 Query SET NAMES 'utf8mb4' COLLATE 'utf8mb4_unicode_520_ci'
-2020-03-02T15:17:17.130174Z 19 Query SELECT @@SESSION.sql_mode
-2020-03-02T15:17:17.130301Z 19 Query SET SESSION sql_mode='NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
-2020-03-02T15:17:17.130376Z 19 Init DB wordpressdb
-2020-03-02T15:17:17.130767Z 19 Query SELECT option_name, option_value FROM wp_options WHERE autoload = 'yes'
-2020-03-02T15:17:17.132315Z 18 Query SELECT option_value FROM wp_options WHERE option_name = 'WPLANG' LIMIT 1
-2020-03-02T15:17:17.132673Z 18 Query SELECT * FROM wp_users WHERE user_login = 'wordpress-user' LIMIT 1
-2020-03-02T15:17:17.132873Z 19 Query SELECT option_value FROM wp_options WHERE option_name = 'WPLANG' LIMIT 1
-2020-03-02T15:17:17.133055Z 18 Query SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC
-2020-03-02T15:17:17.133105Z 19 Query SELECT * FROM wp_users WHERE user_login = 'wordpress-user' LIMIT 1
-2020-03-02T15:17:17.133437Z 19 Query SELECT user_id, meta_key, meta_value FROM wp_usermeta WHERE user_id IN (1) ORDER BY umeta_id ASC
-2020-03-02T15:17:17.136165Z 18 Query SELECT option_value FROM wp_options WHERE option_name = 'can_compress_scripts' LIMIT 1
-2020-03-02T15:17:17.136288Z 19 Query SELECT option_value FROM wp_options WHERE option_name = 'can_compress_scripts' LIMIT 1
-2020-03-02T15:17:17.137160Z 19 Query SELECT option_value FROM wp_options WHERE option_name = 'theme_switched' LIMIT 1
-2020-03-02T15:17:17.137889Z 19 Query SELECT * FROM wp_posts WHERE ID = 3 LIMIT 1
-2020-03-02T15:17:17.138244Z 19 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (3) ORDER BY meta_id ASC
-2020-03-02T15:17:17.138578Z 19 Query SELECT option_value FROM wp_options WHERE option_name = '_transient_timeout_dash_v2_88ae138922fe95674369b1cb3d215a2b' LIMIT 1
-2020-03-02T15:17:17.138733Z 19 Query SELECT option_value FROM wp_options WHERE option_name = '_transient_dash_v2_88ae138922fe95674369b1cb3d215a2b' LIMIT 1
-2020-03-02T15:17:17.140723Z 18 Query SELECT option_value FROM wp_options WHERE option_name = 'theme_switched' LIMIT 1
-2020-03-02T15:17:17.141490Z 18 Query SELECT * FROM wp_posts WHERE ID = 3 LIMIT 1
-2020-03-02T15:17:17.141871Z 18 Query SELECT post_id, meta_key, meta_value FROM wp_postmeta WHERE post_id IN (3) ORDER BY meta_id ASC
-2020-03-02T15:17:17.142231Z 18 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('can_compress_scripts', '0', 'no') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:17:17.144550Z 18 Quit
-2020-03-02T15:17:17.168484Z 19 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('_transient_timeout_dash_v2_88ae138922fe95674369b1cb3d215a2b', '1583205437', 'no') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:17:17.171198Z 19 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('_transient_dash_v2_88ae138922fe95674369b1cb3d215a2b', '', 'no') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:17:17.171963Z 19 Quit
-2020-03-02T15:17:17.604643Z 17 Query SELECT option_value FROM wp_options WHERE option_name = '_site_transient_community-events-1aecf33ab8525ff212ebdffbb438372e' LIMIT 1
-2020-03-02T15:17:17.604952Z 17 Query SELECT option_value FROM wp_options WHERE option_name = '_site_transient_timeout_community-events-1aecf33ab8525ff212ebdffbb438372e' LIMIT 1
-2020-03-02T15:17:17.605221Z 17 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('_site_transient_timeout_community-events-1aecf33ab8525ff212ebdffbb438372e', '1583205437', 'no') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:17:17.607075Z 17 Query SHOW FULL COLUMNS FROM `wp_options`
-2020-03-02T15:17:17.607684Z 17 Query INSERT INTO `wp_options` (`option_name`, `option_value`, `autoload`) VALUES ('_site_transient_community-events-1aecf33ab8525ff212ebdffbb438372e', 'a:3:{s:9:\"sandboxed\";b:0;s:8:\"location\";a:1:{s:2:\"ip\";s:9:\"127.0.0.0\";}s:6:\"events\";a:2:{i:0;a:8:{s:4:\"type\";s:6:\"meetup\";s:5:\"title\";s:22:\"Marts WordPress Meetup\";s:3:\"url\";s:61:\"https://www.meetup.com/WordPress-Copenhagen/events/268822657/\";s:6:\"meetup\";s:20:\"WordPress Copenhagen\";s:10:\"meetup_url\";s:44:\"https://www.meetup.com/WordPress-Copenhagen/\";s:4:\"date\";s:19:\"2020-03-17 17:00:00\";s:8:\"end_date\";s:19:\"2020-03-17 19:00:00\";s:8:\"location\";a:4:{s:8:\"location\";s:19:\"København, Denmark\";s:7:\"country\";s:2:\"dk\";s:8:\"latitude\";d:55.668365478516;s:9:\"longitude\";d:12.541541099548;}}i:1;a:8:{s:4:\"type\";s:8:\"wordcamp\";s:5:\"title\";s:23:\"WordCamp Retreat Soltau\";s:3:\"url\";s:40:\"https://2020-soltau.retreat.wordcamp.org\";s:6:\"meetup\";N;s:10:\"meetup_url\";N;s:4:\"date\";s:19:\"2020-04-30 00:00:00\";s:8:\"end_date\";s:19:\"2020-05-03 00:00:00\";s:8:\"location\";a:4:{s:8:\"location\";s:6:\"Soltau\";s:7:\"country\";s:2:\"DE\";s:8:\"latitude\";d:53.0016247;s:9:\"longitude\";d:9.8596896;}}}}', 'no') ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)
-2020-03-02T15:17:17.609070Z 17 Query SELECT umeta_id FROM wp_usermeta WHERE meta_key = 'community-events-location' AND user_id = 1
-2020-03-02T15:17:17.609425Z 17 Query SHOW FULL COLUMNS FROM `wp_usermeta`
-2020-03-02T15:17:17.609906Z 17 Query INSERT INTO `wp_usermeta` (`user_id`, `meta_key`, `meta_value`) VALUES (1, 'community-events-location', 'a:1:{s:2:\"ip\";s:9:\"127.0.0.0\";}')
-2020-03-02T15:17:17.610664Z 17 Quit
\ No newline at end of file
diff --git a/go/test/endtoend/apps/wordpress/wordpress.cnf b/go/test/endtoend/apps/wordpress/wordpress.cnf
deleted file mode 100644
index d7a0576f1fb..00000000000
--- a/go/test/endtoend/apps/wordpress/wordpress.cnf
+++ /dev/null
@@ -1 +0,0 @@
-sql_mode = NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
\ No newline at end of file
diff --git a/go/test/endtoend/backup/vtbackup/backup_only_test.go b/go/test/endtoend/backup/vtbackup/backup_only_test.go
index 0a128f47a50..bfd00fce818 100644
--- a/go/test/endtoend/backup/vtbackup/backup_only_test.go
+++ b/go/test/endtoend/backup/vtbackup/backup_only_test.go
@@ -296,9 +296,10 @@ func tearDown(t *testing.T, initMysql bool) {
//Tear down Tablet
//err := tablet.VttabletProcess.TearDown()
//require.Nil(t, err)
- err := localCluster.VtctlclientProcess.ExecuteCommand("DeleteTablet", "-allow_master", tablet.Alias)
- require.Nil(t, err)
resetTabletDirectory(t, tablet, initMysql)
+ // DeleteTablet on a primary will cause tablet to shutdown, so should only call it after tablet is already shut down
+ err := localCluster.VtctlclientProcess.ExecuteCommand("DeleteTablet", "-allow_master", tablet.Alias)
+ require.Nil(t, err)
}
}
diff --git a/go/test/endtoend/cluster/vtctlclient_process.go b/go/test/endtoend/cluster/vtctlclient_process.go
index 1fd5d9ef00b..99b68b7cba4 100644
--- a/go/test/endtoend/cluster/vtctlclient_process.go
+++ b/go/test/endtoend/cluster/vtctlclient_process.go
@@ -21,6 +21,8 @@ import (
"os/exec"
"strings"
+ "vitess.io/vitess/go/vt/vterrors"
+
"vitess.io/vitess/go/vt/log"
)
@@ -61,9 +63,10 @@ func (vtctlclient *VtctlClientProcess) ApplySchemaWithOutput(Keyspace string, SQ
}
// ApplySchema applies SQL schema to the keyspace
-func (vtctlclient *VtctlClientProcess) ApplySchema(Keyspace string, SQL string) (err error) {
- _, err = vtctlclient.ApplySchemaWithOutput(Keyspace, SQL, "direct")
- return err
+func (vtctlclient *VtctlClientProcess) ApplySchema(Keyspace string, SQL string) error {
+ message, err := vtctlclient.ApplySchemaWithOutput(Keyspace, SQL, "direct")
+
+ return vterrors.Wrap(err, message)
}
// ApplyVSchema applies vitess schema (JSON format) to the keyspace
@@ -119,6 +122,25 @@ func (vtctlclient *VtctlClientProcess) OnlineDDLRetryMigration(Keyspace, uuid st
)
}
+// OnlineDDLRevertMigration reverts a given migration uuid
+func (vtctlclient *VtctlClientProcess) OnlineDDLRevertMigration(Keyspace, uuid string) (result string, err error) {
+ return vtctlclient.ExecuteCommandWithOutput(
+ "OnlineDDL",
+ Keyspace,
+ "revert",
+ uuid,
+ )
+}
+
+// VExec runs a VExec query
+func (vtctlclient *VtctlClientProcess) VExec(Keyspace, workflow, query string) (result string, err error) {
+ return vtctlclient.ExecuteCommandWithOutput(
+ "VExec",
+ fmt.Sprintf("%s.%s", Keyspace, workflow),
+ query,
+ )
+}
+
// ExecuteCommand executes any vtctlclient command
func (vtctlclient *VtctlClientProcess) ExecuteCommand(args ...string) (err error) {
output, err := vtctlclient.ExecuteCommandWithOutput(args...)
diff --git a/go/test/endtoend/clustertest/vttablet_test.go b/go/test/endtoend/clustertest/vttablet_test.go
index f886951f101..8ddba286775 100644
--- a/go/test/endtoend/clustertest/vttablet_test.go
+++ b/go/test/endtoend/clustertest/vttablet_test.go
@@ -24,6 +24,8 @@ import (
"net/http"
"testing"
+ "github.com/stretchr/testify/require"
+
"vitess.io/vitess/go/test/endtoend/cluster"
)
@@ -42,3 +44,11 @@ func TestVttabletProcess(t *testing.T) {
t.Errorf("select:\n%v want\n%v for %s", got, want, "Keyspace of tablet should match")
}
}
+
+func TestDeleteTablet(t *testing.T) {
+ defer cluster.PanicHandler(t)
+ primary := clusterInstance.Keyspaces[0].Shards[0].MasterTablet()
+ require.NotNil(t, primary)
+ _, err := clusterInstance.VtctlclientProcess.ExecuteCommandWithOutput("DeleteTablet", "-allow_master", primary.Alias)
+ require.Nil(t, err, "Error: %v", err)
+}
diff --git a/go/test/endtoend/mysqlserver/mysql_server_test.go b/go/test/endtoend/mysqlserver/mysql_server_test.go
index 958bebcfd3b..2c8172c36c6 100644
--- a/go/test/endtoend/mysqlserver/mysql_server_test.go
+++ b/go/test/endtoend/mysqlserver/mysql_server_test.go
@@ -80,7 +80,7 @@ func TestLargeComment(t *testing.T) {
qr, err := conn.ExecuteFetch("select * from vt_insert_test where id = 1", 1, false)
require.Nilf(t, err, "select error: %v", err)
- assert.Equal(t, uint64(1), qr.RowsAffected)
+ assert.Equal(t, 1, len(qr.Rows))
assert.Equal(t, "BLOB(\"LLL\")", qr.Rows[0][3].String())
}
@@ -148,11 +148,11 @@ func TestWarnings(t *testing.T) {
// validate warning with invalid_field error as warning
qr, err := conn.ExecuteFetch("SELECT /*vt+ SCATTER_ERRORS_AS_WARNINGS */ invalid_field from vt_insert_test;", 1, false)
require.Nilf(t, err, "select error : %v", err)
- assert.Equalf(t, uint64(0), qr.RowsAffected, "query should return 0 rows, got %v", qr.RowsAffected)
+ assert.Empty(t, qr.Rows, "number of rows")
qr, err = conn.ExecuteFetch("SHOW WARNINGS;", 1, false)
require.Nilf(t, err, "SHOW WARNINGS; execution failed: %v", err)
- assert.Equalf(t, uint64(1), qr.RowsAffected, "1 warning expected, got %v ", qr.RowsAffected)
+ assert.EqualValues(t, 1, len(qr.Rows), "number of rows")
assert.Contains(t, qr.Rows[0][0].String(), "VARCHAR(\"Warning\")", qr.Rows)
assert.Contains(t, qr.Rows[0][1].String(), "UINT16(1054)", qr.Rows)
assert.Contains(t, qr.Rows[0][2].String(), "Unknown column", qr.Rows)
@@ -160,11 +160,11 @@ func TestWarnings(t *testing.T) {
// validate warning with query_timeout error as warning
qr, err = conn.ExecuteFetch("SELECT /*vt+ SCATTER_ERRORS_AS_WARNINGS QUERY_TIMEOUT_MS=1 */ sleep(1) from vt_insert_test;", 1, false)
require.Nilf(t, err, "insertion error : %v", err)
- assert.Equalf(t, uint64(0), qr.RowsAffected, "should return 0 rows, got %v", qr.RowsAffected)
+ assert.Empty(t, qr.Rows, "number of rows")
qr, err = conn.ExecuteFetch("SHOW WARNINGS;", 1, false)
require.Nilf(t, err, "SHOW WARNINGS; execution failed: %v", err)
- assert.Equalf(t, uint64(1), qr.RowsAffected, "1 warning expected, got %v ", qr.RowsAffected)
+ assert.EqualValues(t, 1, len(qr.Rows), "number of rows")
assert.Contains(t, qr.Rows[0][0].String(), "VARCHAR(\"Warning\")", qr.Rows)
assert.Contains(t, qr.Rows[0][1].String(), "UINT16(1317)", qr.Rows)
assert.Contains(t, qr.Rows[0][2].String(), "context deadline exceeded", qr.Rows)
@@ -175,7 +175,7 @@ func TestWarnings(t *testing.T) {
qr, err = conn.ExecuteFetch("SHOW WARNINGS;", 1, false)
require.Nilf(t, err, "SHOW WARNINGS; execution failed: %v", err)
- assert.Equalf(t, uint64(0), qr.RowsAffected, "0 warning expected, got %v ", qr.RowsAffected)
+ assert.Empty(t, len(qr.Rows), "number of rows")
}
// TestSelectWithUnauthorizedUser verifies that an unauthorized user
diff --git a/go/test/endtoend/onlineddl/declarative/onlineddl_declarative_test.go b/go/test/endtoend/onlineddl/declarative/onlineddl_declarative_test.go
new file mode 100644
index 00000000000..dd37ba18cee
--- /dev/null
+++ b/go/test/endtoend/onlineddl/declarative/onlineddl_declarative_test.go
@@ -0,0 +1,619 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package revert
+
+import (
+ "context"
+ "flag"
+ "fmt"
+ "math/rand"
+ "os"
+ "path"
+ "strings"
+ "sync"
+ "testing"
+ "time"
+
+ "vitess.io/vitess/go/mysql"
+ "vitess.io/vitess/go/vt/log"
+ "vitess.io/vitess/go/vt/schema"
+
+ "vitess.io/vitess/go/test/endtoend/cluster"
+ "vitess.io/vitess/go/test/endtoend/onlineddl"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+)
+
+type WriteMetrics struct {
+ mu sync.Mutex
+ insertsAttempts, insertsFailures, insertsNoops, inserts int64
+ updatesAttempts, updatesFailures, updatesNoops, updates int64
+ deletesAttempts, deletesFailures, deletesNoops, deletes int64
+}
+
+func (w *WriteMetrics) Clear() {
+ w.mu.Lock()
+ defer w.mu.Unlock()
+
+ w.inserts = 0
+ w.updates = 0
+ w.deletes = 0
+
+ w.insertsAttempts = 0
+ w.insertsFailures = 0
+ w.insertsNoops = 0
+
+ w.updatesAttempts = 0
+ w.updatesFailures = 0
+ w.updatesNoops = 0
+
+ w.deletesAttempts = 0
+ w.deletesFailures = 0
+ w.deletesNoops = 0
+}
+
+func (w *WriteMetrics) String() string {
+ return fmt.Sprintf(`WriteMetrics: inserts-deletes=%d, updates-deletes=%d,
+insertsAttempts=%d, insertsFailures=%d, insertsNoops=%d, inserts=%d,
+updatesAttempts=%d, updatesFailures=%d, updatesNoops=%d, updates=%d,
+deletesAttempts=%d, deletesFailures=%d, deletesNoops=%d, deletes=%d,
+`,
+ w.inserts-w.deletes, w.updates-w.deletes,
+ w.insertsAttempts, w.insertsFailures, w.insertsNoops, w.inserts,
+ w.updatesAttempts, w.updatesFailures, w.updatesNoops, w.updates,
+ w.deletesAttempts, w.deletesFailures, w.deletesNoops, w.deletes,
+ )
+}
+
+var (
+ clusterInstance *cluster.LocalProcessCluster
+ vtParams mysql.ConnParams
+
+ hostname = "localhost"
+ keyspaceName = "ks"
+ cell = "zone1"
+ schemaChangeDirectory = ""
+ tableName = `stress_test`
+ createStatement1 = `
+ CREATE TABLE stress_test (
+ id bigint(20) not null,
+ rand_val varchar(32) null default '',
+ hint_col varchar(64) not null default 'create1',
+ created_timestamp timestamp not null default current_timestamp,
+ updates int unsigned not null default 0,
+ PRIMARY KEY (id),
+ key created_idx(created_timestamp),
+ key updates_idx(updates)
+ ) ENGINE=InnoDB
+ `
+ createStatement2 = `
+ CREATE TABLE stress_test (
+ id bigint(20) not null,
+ rand_val varchar(32) null default '',
+ hint_col varchar(64) not null default 'create2',
+ created_timestamp timestamp not null default current_timestamp,
+ updates int unsigned not null default 0,
+ PRIMARY KEY (id),
+ key created_idx(created_timestamp),
+ key updates_idx(updates)
+ ) ENGINE=InnoDB
+ `
+ createIfNotExistsStatement = `
+ CREATE TABLE IF NOT EXISTS stress_test (
+ id bigint(20) not null,
+ PRIMARY KEY (id)
+ ) ENGINE=InnoDB
+ `
+ dropStatement = `
+ DROP TABLE stress_test
+ `
+ alterStatement = `
+ ALTER TABLE stress_test modify hint_col varchar(64) not null default 'this-should-fail'
+ `
+ insertRowStatement = `
+ INSERT IGNORE INTO stress_test (id, rand_val) VALUES (%d, left(md5(rand()), 8))
+ `
+ updateRowStatement = `
+ UPDATE stress_test SET updates=updates+1 WHERE id=%d
+ `
+ deleteRowStatement = `
+ DELETE FROM stress_test WHERE id=%d AND updates=1
+ `
+ // We use CAST(SUM(updates) AS SIGNED) because SUM() returns a DECIMAL datatype, and we want to read a SIGNED INTEGER type
+ selectCountRowsStatement = `
+ SELECT COUNT(*) AS num_rows, CAST(SUM(updates) AS SIGNED) AS sum_updates FROM stress_test
+ `
+ truncateStatement = `
+ TRUNCATE TABLE stress_test
+ `
+ writeMetrics WriteMetrics
+)
+
+const (
+ maxTableRows = 4096
+)
+
+func TestMain(m *testing.M) {
+ defer cluster.PanicHandler(nil)
+ flag.Parse()
+
+ exitcode, err := func() (int, error) {
+ clusterInstance = cluster.NewCluster(cell, hostname)
+ schemaChangeDirectory = path.Join("/tmp", fmt.Sprintf("schema_change_dir_%d", clusterInstance.GetAndReserveTabletUID()))
+ defer os.RemoveAll(schemaChangeDirectory)
+ defer clusterInstance.Teardown()
+
+ if _, err := os.Stat(schemaChangeDirectory); os.IsNotExist(err) {
+ _ = os.Mkdir(schemaChangeDirectory, 0700)
+ }
+
+ clusterInstance.VtctldExtraArgs = []string{
+ "-schema_change_dir", schemaChangeDirectory,
+ "-schema_change_controller", "local",
+ "-schema_change_check_interval", "1"}
+
+ clusterInstance.VtTabletExtraArgs = []string{
+ "-enable-lag-throttler",
+ "-throttle_threshold", "1s",
+ "-heartbeat_enable",
+ "-heartbeat_interval", "250ms",
+ "-migration_check_interval", "5s",
+ }
+ clusterInstance.VtGateExtraArgs = []string{
+ "-ddl_strategy", "online",
+ }
+
+ if err := clusterInstance.StartTopo(); err != nil {
+ return 1, err
+ }
+
+ // Start keyspace
+ keyspace := &cluster.Keyspace{
+ Name: keyspaceName,
+ }
+
+ // No need for replicas in this stress test
+ if err := clusterInstance.StartKeyspace(*keyspace, []string{"1"}, 0, false); err != nil {
+ return 1, err
+ }
+
+ vtgateInstance := clusterInstance.NewVtgateInstance()
+ // set the gateway we want to use
+ vtgateInstance.GatewayImplementation = "tabletgateway"
+ // Start vtgate
+ if err := vtgateInstance.Setup(); err != nil {
+ return 1, err
+ }
+ // ensure it is torn down during cluster TearDown
+ clusterInstance.VtgateProcess = *vtgateInstance
+ vtParams = mysql.ConnParams{
+ Host: clusterInstance.Hostname,
+ Port: clusterInstance.VtgateMySQLPort,
+ }
+
+ return m.Run(), nil
+ }()
+ if err != nil {
+ fmt.Printf("%v\n", err)
+ os.Exit(1)
+ } else {
+ os.Exit(exitcode)
+ }
+
+}
+
+func TestSchemaChange(t *testing.T) {
+ defer cluster.PanicHandler(t)
+ shards := clusterInstance.Keyspaces[0].Shards
+ require.Equal(t, 1, len(shards))
+
+ declarativeStrategy := "online -declarative"
+ var uuids []string
+
+ // CREATE1
+ t.Run("declarative CREATE TABLE where table does not exist", func(t *testing.T) {
+ // The table does not exist
+ uuid := testOnlineDDLStatement(t, createStatement1, declarativeStrategy, "vtgate", "create1")
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ onlineddl.CheckMigrationArtifacts(t, &vtParams, shards, uuid, true)
+ checkTable(t, tableName, true)
+ initTable(t)
+ testSelectTableMetrics(t)
+ })
+ // CREATE1 again, noop
+ t.Run("declarative CREATE TABLE with no changes where table exists", func(t *testing.T) {
+ // The exists with exact same schema
+ uuid := testOnlineDDLStatement(t, createStatement1, declarativeStrategy, "vtgate", "create1")
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ onlineddl.CheckMigrationArtifacts(t, &vtParams, shards, uuid, false)
+ checkTable(t, tableName, true)
+ testSelectTableMetrics(t)
+ })
+ t.Run("revert CREATE TABLE expecting noop", func(t *testing.T) {
+ // Reverting a noop changes nothing
+ uuid := testRevertMigration(t, uuids[len(uuids)-1])
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ checkMigratedTable(t, tableName, "create1")
+ checkTable(t, tableName, true)
+ testSelectTableMetrics(t)
+ })
+ t.Run("declarative DROP TABLE", func(t *testing.T) {
+ uuid := testOnlineDDLStatement(t, dropStatement, declarativeStrategy, "vtgate", "")
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ onlineddl.CheckMigrationArtifacts(t, &vtParams, shards, uuid, true)
+ checkTable(t, tableName, false)
+ })
+ // Table dropped. Let's start afresh.
+
+ // CREATE1
+ t.Run("declarative CREATE TABLE where table does not exist", func(t *testing.T) {
+ // The table does not exist
+ uuid := testOnlineDDLStatement(t, createStatement1, declarativeStrategy, "vtgate", "create1")
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ onlineddl.CheckMigrationArtifacts(t, &vtParams, shards, uuid, true)
+ checkTable(t, tableName, true)
+ initTable(t)
+ testSelectTableMetrics(t)
+ })
+ // CREATE2: Change schema
+ t.Run("declarative CREATE TABLE with changes where table exists", func(t *testing.T) {
+ // The table exists with different schema
+ uuid := testOnlineDDLStatement(t, createStatement2, declarativeStrategy, "vtgate", "create2")
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ onlineddl.CheckMigrationArtifacts(t, &vtParams, shards, uuid, true)
+ checkTable(t, tableName, true)
+ testSelectTableMetrics(t)
+ })
+ t.Run("revert CREATE TABLE expecting previous schema", func(t *testing.T) {
+ // Reverting back to 1st version
+ uuid := testRevertMigration(t, uuids[len(uuids)-1])
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ checkMigratedTable(t, tableName, "create1")
+ checkTable(t, tableName, true)
+ testSelectTableMetrics(t)
+ })
+ t.Run("declarative DROP TABLE", func(t *testing.T) {
+ // Table exists
+ uuid := testOnlineDDLStatement(t, dropStatement, declarativeStrategy, "vtgate", "")
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ onlineddl.CheckMigrationArtifacts(t, &vtParams, shards, uuid, true)
+ checkTable(t, tableName, false)
+ })
+ t.Run("revert DROP TABLE", func(t *testing.T) {
+ // This will recreate the table (well, actually, rename it back into place)
+ uuid := testRevertMigration(t, uuids[len(uuids)-1])
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ checkTable(t, tableName, true)
+ checkMigratedTable(t, tableName, "create1")
+ testSelectTableMetrics(t)
+ })
+ t.Run("revert revert DROP TABLE", func(t *testing.T) {
+ // This will reapply DROP TABLE
+ uuid := testRevertMigration(t, uuids[len(uuids)-1])
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ checkTable(t, tableName, false)
+ })
+ t.Run("declarative DROP TABLE where table does not exist", func(t *testing.T) {
+ uuid := testOnlineDDLStatement(t, dropStatement, declarativeStrategy, "vtgate", "")
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ onlineddl.CheckMigrationArtifacts(t, &vtParams, shards, uuid, false)
+ checkTable(t, tableName, false)
+ })
+ t.Run("revert DROP TABLE where table did not exist", func(t *testing.T) {
+ // Table will not be recreated because it didn't exist during the previous DROP TABLE
+ uuid := testRevertMigration(t, uuids[len(uuids)-1])
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ checkTable(t, tableName, false)
+ })
+ // Table dropped. Let's start afresh.
+
+ // CREATE1
+ t.Run("declarative CREATE TABLE where table does not exist", func(t *testing.T) {
+ // The table does not exist
+ uuid := testOnlineDDLStatement(t, createStatement1, declarativeStrategy, "vtgate", "create1")
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ onlineddl.CheckMigrationArtifacts(t, &vtParams, shards, uuid, true)
+ checkTable(t, tableName, true)
+ initTable(t)
+ testSelectTableMetrics(t)
+ })
+ // CREATE2
+ t.Run("declarative CREATE TABLE with changes where table exists", func(t *testing.T) {
+ // The exists but with different schema
+ uuid := testOnlineDDLStatement(t, createStatement2, declarativeStrategy, "vtgate", "create2")
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ onlineddl.CheckMigrationArtifacts(t, &vtParams, shards, uuid, true)
+ checkTable(t, tableName, true)
+ testSelectTableMetrics(t)
+ })
+ // CREATE1 again
+ t.Run("declarative CREATE TABLE again with changes where table exists", func(t *testing.T) {
+ // The exists but with different schema
+ uuid := testOnlineDDLStatement(t, createStatement1, declarativeStrategy, "vtgate", "create1")
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ onlineddl.CheckMigrationArtifacts(t, &vtParams, shards, uuid, true)
+ checkTable(t, tableName, true)
+ testSelectTableMetrics(t)
+ })
+ t.Run("revert CREATE TABLE expecting previous schema", func(t *testing.T) {
+ // Reverting back to previous version
+ uuid := testRevertMigration(t, uuids[len(uuids)-1])
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ checkMigratedTable(t, tableName, "create2")
+ checkTable(t, tableName, true)
+ testSelectTableMetrics(t)
+ })
+ t.Run("ALTER TABLE expecting failure", func(t *testing.T) {
+ // ALTER is not supported in -declarative
+ uuid := testOnlineDDLStatement(t, alterStatement, declarativeStrategy, "vtgate", "")
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusFailed)
+ checkMigratedTable(t, tableName, "create2")
+ checkTable(t, tableName, true)
+ testSelectTableMetrics(t)
+ })
+ t.Run("CREATE TABLE IF NOT EXISTS expecting failure", func(t *testing.T) {
+ // IF NOT EXISTS is not supported in -declarative
+ uuid := testOnlineDDLStatement(t, createIfNotExistsStatement, declarativeStrategy, "vtgate", "")
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusFailed)
+ checkMigratedTable(t, tableName, "create2")
+ checkTable(t, tableName, true)
+ testSelectTableMetrics(t)
+ })
+ t.Run("CREATE TABLE IF NOT EXISTS non-declarative is successful", func(t *testing.T) {
+ // IF NOT EXISTS is supported in non-declarative mode. Just verifying that the statement itself is good,
+ // so that the failure we tested for, above, actually tests the "declarative" logic, rather than some
+ // unrelated error.
+ uuid := testOnlineDDLStatement(t, createIfNotExistsStatement, "online", "vtgate", "")
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ // the table existed, so we expect no changes in this non-declarative DDL
+ checkMigratedTable(t, tableName, "create2")
+ checkTable(t, tableName, true)
+ testSelectTableMetrics(t)
+ })
+}
+
+// testOnlineDDLStatement runs an online DDL, ALTER statement
+func testOnlineDDLStatement(t *testing.T, alterStatement string, ddlStrategy string, executeStrategy string, expectHint string) (uuid string) {
+ if executeStrategy == "vtgate" {
+ row := onlineddl.VtgateExecDDL(t, &vtParams, ddlStrategy, alterStatement, "").Named().Row()
+ if row != nil {
+ uuid = row.AsString("uuid", "")
+ }
+ } else {
+ var err error
+ uuid, err = clusterInstance.VtctlclientProcess.ApplySchemaWithOutput(keyspaceName, alterStatement, ddlStrategy)
+ assert.NoError(t, err)
+ }
+ uuid = strings.TrimSpace(uuid)
+ fmt.Println("# Generated UUID (for debug purposes):")
+ fmt.Printf("<%s>\n", uuid)
+
+ strategy, _, err := schema.ParseDDLStrategy(ddlStrategy)
+ assert.NoError(t, err)
+
+ if !strategy.IsDirect() {
+ time.Sleep(time.Second * 20)
+ }
+
+ if expectHint != "" {
+ checkMigratedTable(t, tableName, expectHint)
+ }
+ return uuid
+}
+
+// testRevertMigration reverts a given migration
+func testRevertMigration(t *testing.T, revertUUID string) (uuid string) {
+ revertQuery := fmt.Sprintf("revert vitess_migration '%s'", revertUUID)
+ r := onlineddl.VtgateExecQuery(t, &vtParams, revertQuery, "")
+
+ row := r.Named().Row()
+ require.NotNil(t, row)
+
+ uuid = row["uuid"].ToString()
+
+ fmt.Println("# Generated UUID (for debug purposes):")
+ fmt.Printf("<%s>\n", uuid)
+
+ time.Sleep(time.Second * 20)
+ return uuid
+}
+
+// checkTable checks the number of tables in the first two shards.
+func checkTable(t *testing.T, showTableName string, expectExists bool) bool {
+ expectCount := 0
+ if expectExists {
+ expectCount = 1
+ }
+ for i := range clusterInstance.Keyspaces[0].Shards {
+ if !checkTablesCount(t, clusterInstance.Keyspaces[0].Shards[i].Vttablets[0], showTableName, expectCount) {
+ return false
+ }
+ }
+ return true
+}
+
+// checkTablesCount checks the number of tables in the given tablet
+func checkTablesCount(t *testing.T, tablet *cluster.Vttablet, showTableName string, expectCount int) bool {
+ query := fmt.Sprintf(`show tables like '%%%s%%';`, showTableName)
+ queryResult, err := tablet.VttabletProcess.QueryTablet(query, keyspaceName, true)
+ require.Nil(t, err)
+ return assert.Equal(t, expectCount, len(queryResult.Rows))
+}
+
+// checkMigratedTables checks the CREATE STATEMENT of a table after migration
+func checkMigratedTable(t *testing.T, tableName, expectHint string) {
+ for i := range clusterInstance.Keyspaces[0].Shards {
+ createStatement := getCreateTableStatement(t, clusterInstance.Keyspaces[0].Shards[i].Vttablets[0], tableName)
+ assert.Contains(t, createStatement, expectHint)
+ }
+}
+
+// getCreateTableStatement returns the CREATE TABLE statement for a given table
+func getCreateTableStatement(t *testing.T, tablet *cluster.Vttablet, tableName string) (statement string) {
+ queryResult, err := tablet.VttabletProcess.QueryTablet(fmt.Sprintf("show create table %s;", tableName), keyspaceName, true)
+ require.Nil(t, err)
+
+ assert.Equal(t, len(queryResult.Rows), 1)
+ assert.Equal(t, len(queryResult.Rows[0]), 2) // table name, create statement
+ statement = queryResult.Rows[0][1].ToString()
+ return statement
+}
+
+func generateInsert(t *testing.T, conn *mysql.Conn) error {
+ id := rand.Int31n(int32(maxTableRows))
+ query := fmt.Sprintf(insertRowStatement, id)
+ qr, err := conn.ExecuteFetch(query, 1000, true)
+
+ func() {
+ writeMetrics.mu.Lock()
+ defer writeMetrics.mu.Unlock()
+
+ writeMetrics.insertsAttempts++
+ if err != nil {
+ writeMetrics.insertsFailures++
+ return
+ }
+ assert.Less(t, qr.RowsAffected, uint64(2))
+ if qr.RowsAffected == 0 {
+ writeMetrics.insertsNoops++
+ return
+ }
+ writeMetrics.inserts++
+ }()
+ return err
+}
+
+func generateUpdate(t *testing.T, conn *mysql.Conn) error {
+ id := rand.Int31n(int32(maxTableRows))
+ query := fmt.Sprintf(updateRowStatement, id)
+ qr, err := conn.ExecuteFetch(query, 1000, true)
+
+ func() {
+ writeMetrics.mu.Lock()
+ defer writeMetrics.mu.Unlock()
+
+ writeMetrics.updatesAttempts++
+ if err != nil {
+ writeMetrics.updatesFailures++
+ return
+ }
+ assert.Less(t, qr.RowsAffected, uint64(2))
+ if qr.RowsAffected == 0 {
+ writeMetrics.updatesNoops++
+ return
+ }
+ writeMetrics.updates++
+ }()
+ return err
+}
+
+func generateDelete(t *testing.T, conn *mysql.Conn) error {
+ id := rand.Int31n(int32(maxTableRows))
+ query := fmt.Sprintf(deleteRowStatement, id)
+ qr, err := conn.ExecuteFetch(query, 1000, true)
+
+ func() {
+ writeMetrics.mu.Lock()
+ defer writeMetrics.mu.Unlock()
+
+ writeMetrics.deletesAttempts++
+ if err != nil {
+ writeMetrics.deletesFailures++
+ return
+ }
+ assert.Less(t, qr.RowsAffected, uint64(2))
+ if qr.RowsAffected == 0 {
+ writeMetrics.deletesNoops++
+ return
+ }
+ writeMetrics.deletes++
+ }()
+ return err
+}
+
+func initTable(t *testing.T) {
+ log.Infof("initTable begin")
+ defer log.Infof("initTable complete")
+
+ ctx := context.Background()
+ conn, err := mysql.Connect(ctx, &vtParams)
+ require.Nil(t, err)
+ defer conn.Close()
+
+ writeMetrics.Clear()
+ _, err = conn.ExecuteFetch(truncateStatement, 1000, true)
+ require.Nil(t, err)
+
+ for i := 0; i < maxTableRows/2; i++ {
+ generateInsert(t, conn)
+ }
+ for i := 0; i < maxTableRows/4; i++ {
+ generateUpdate(t, conn)
+ }
+ for i := 0; i < maxTableRows/4; i++ {
+ generateDelete(t, conn)
+ }
+}
+
+func testSelectTableMetrics(t *testing.T) {
+ writeMetrics.mu.Lock()
+ defer writeMetrics.mu.Unlock()
+
+ log.Infof("%s", writeMetrics.String())
+
+ ctx := context.Background()
+ conn, err := mysql.Connect(ctx, &vtParams)
+ require.Nil(t, err)
+ defer conn.Close()
+
+ rs, err := conn.ExecuteFetch(selectCountRowsStatement, 1000, true)
+ require.Nil(t, err)
+
+ row := rs.Named().Row()
+ require.NotNil(t, row)
+ log.Infof("testSelectTableMetrics, row: %v", row)
+ numRows := row.AsInt64("num_rows", 0)
+ sumUpdates := row.AsInt64("sum_updates", 0)
+
+ assert.NotZero(t, numRows)
+ assert.NotZero(t, sumUpdates)
+ assert.NotZero(t, writeMetrics.inserts)
+ assert.NotZero(t, writeMetrics.deletes)
+ assert.NotZero(t, writeMetrics.updates)
+ assert.Equal(t, writeMetrics.inserts-writeMetrics.deletes, numRows)
+ assert.Equal(t, writeMetrics.updates-writeMetrics.deletes, sumUpdates) // because we DELETE WHERE updates=1
+}
diff --git a/go/test/endtoend/onlineddl/onlineddl_test.go b/go/test/endtoend/onlineddl/ghost/onlineddl_ghost_test.go
similarity index 60%
rename from go/test/endtoend/onlineddl/onlineddl_test.go
rename to go/test/endtoend/onlineddl/ghost/onlineddl_ghost_test.go
index 55dcfecef58..67fd294d700 100644
--- a/go/test/endtoend/onlineddl/onlineddl_test.go
+++ b/go/test/endtoend/onlineddl/ghost/onlineddl_ghost_test.go
@@ -14,25 +14,23 @@ See the License for the specific language governing permissions and
limitations under the License.
*/
-package onlineddl
+package ghost
import (
- "context"
"flag"
"fmt"
"os"
"path"
- "regexp"
"strings"
"sync"
"testing"
"time"
"vitess.io/vitess/go/mysql"
- "vitess.io/vitess/go/sqltypes"
"vitess.io/vitess/go/vt/schema"
"vitess.io/vitess/go/test/endtoend/cluster"
+ "vitess.io/vitess/go/test/endtoend/onlineddl"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
@@ -85,14 +83,52 @@ var (
DROP TABLE %s`
onlineDDLDropTableIfExistsStatement = `
DROP TABLE IF EXISTS %s`
-)
-func fullWordUUIDRegexp(uuid, searchWord string) *regexp.Regexp {
- return regexp.MustCompile(uuid + `.*?\b` + searchWord + `\b`)
-}
-func fullWordRegexp(searchWord string) *regexp.Regexp {
- return regexp.MustCompile(`.*?\b` + searchWord + `\b`)
-}
+ vSchema = `
+ {
+ "sharded": true,
+ "vindexes": {
+ "hash_index": {
+ "type": "hash"
+ }
+ },
+ "tables": {
+ "vt_onlineddl_test_00": {
+ "column_vindexes": [
+ {
+ "column": "id",
+ "name": "hash_index"
+ }
+ ]
+ },
+ "vt_onlineddl_test_01": {
+ "column_vindexes": [
+ {
+ "column": "id",
+ "name": "hash_index"
+ }
+ ]
+ },
+ "vt_onlineddl_test_02": {
+ "column_vindexes": [
+ {
+ "column": "id",
+ "name": "hash_index"
+ }
+ ]
+ },
+ "vt_onlineddl_test_03": {
+ "column_vindexes": [
+ {
+ "column": "id",
+ "name": "hash_index"
+ }
+ ]
+ }
+ }
+ }
+ `
+)
func TestMain(m *testing.M) {
defer cluster.PanicHandler(nil)
@@ -127,13 +163,11 @@ func TestMain(m *testing.M) {
// Start keyspace
keyspace := &cluster.Keyspace{
- Name: keyspaceName,
+ Name: keyspaceName,
+ VSchema: vSchema,
}
- if err := clusterInstance.StartUnshardedKeyspace(*keyspace, 2, true); err != nil {
- return 1, err
- }
- if err := clusterInstance.StartKeyspace(*keyspace, []string{"1"}, 1, false); err != nil {
+ if err := clusterInstance.StartKeyspace(*keyspace, []string{"-80", "80-"}, 1, false); err != nil {
return 1, err
}
@@ -164,41 +198,42 @@ func TestMain(m *testing.M) {
func TestSchemaChange(t *testing.T) {
defer cluster.PanicHandler(t)
- assert.Equal(t, 2, len(clusterInstance.Keyspaces[0].Shards))
+ shards := clusterInstance.Keyspaces[0].Shards
+ assert.Equal(t, 2, len(shards))
testWithInitialSchema(t)
t.Run("create non_online", func(t *testing.T) {
_ = testOnlineDDLStatement(t, alterTableNormalStatement, string(schema.DDLStrategyDirect), "vtctl", "non_online")
})
t.Run("successful online alter, vtgate", func(t *testing.T) {
uuid := testOnlineDDLStatement(t, alterTableSuccessfulStatement, "gh-ost", "vtgate", "ghost_col")
- checkRecentMigrations(t, uuid, schema.OnlineDDLStatusComplete)
- checkCancelMigration(t, uuid, false)
- checkRetryMigration(t, uuid, false)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ onlineddl.CheckCancelMigration(t, &vtParams, shards, uuid, false)
+ onlineddl.CheckRetryMigration(t, &vtParams, shards, uuid, false)
})
t.Run("successful online alter, vtctl", func(t *testing.T) {
uuid := testOnlineDDLStatement(t, alterTableTrivialStatement, "gh-ost", "vtctl", "ghost_col")
- checkRecentMigrations(t, uuid, schema.OnlineDDLStatusComplete)
- checkCancelMigration(t, uuid, false)
- checkRetryMigration(t, uuid, false)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ onlineddl.CheckCancelMigration(t, &vtParams, shards, uuid, false)
+ onlineddl.CheckRetryMigration(t, &vtParams, shards, uuid, false)
})
t.Run("throttled migration", func(t *testing.T) {
uuid := testOnlineDDLStatement(t, alterTableThrottlingStatement, "gh-ost --max-load=Threads_running=1", "vtgate", "ghost_col")
- checkRecentMigrations(t, uuid, schema.OnlineDDLStatusRunning)
- checkCancelMigration(t, uuid, true)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusRunning)
+ onlineddl.CheckCancelMigration(t, &vtParams, shards, uuid, true)
time.Sleep(2 * time.Second)
- checkRecentMigrations(t, uuid, schema.OnlineDDLStatusFailed)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusFailed)
})
t.Run("failed migration", func(t *testing.T) {
uuid := testOnlineDDLStatement(t, alterTableFailedStatement, "gh-ost", "vtgate", "ghost_col")
- checkRecentMigrations(t, uuid, schema.OnlineDDLStatusFailed)
- checkCancelMigration(t, uuid, false)
- checkRetryMigration(t, uuid, true)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusFailed)
+ onlineddl.CheckCancelMigration(t, &vtParams, shards, uuid, false)
+ onlineddl.CheckRetryMigration(t, &vtParams, shards, uuid, true)
// migration will fail again
})
t.Run("cancel all migrations: nothing to cancel", func(t *testing.T) {
// no migrations pending at this time
time.Sleep(10 * time.Second)
- checkCancelAllMigrations(t, 0)
+ onlineddl.CheckCancelAllMigrations(t, &vtParams, 0)
})
t.Run("cancel all migrations: some migrations to cancel", func(t *testing.T) {
// spawn n migrations; cancel them via cancel-all
@@ -212,41 +247,41 @@ func TestSchemaChange(t *testing.T) {
}()
}
wg.Wait()
- checkCancelAllMigrations(t, count)
+ onlineddl.CheckCancelAllMigrations(t, &vtParams, len(shards)*count)
})
t.Run("Online DROP, vtctl", func(t *testing.T) {
uuid := testOnlineDDLStatement(t, onlineDDLDropTableStatement, "gh-ost", "vtctl", "")
- checkRecentMigrations(t, uuid, schema.OnlineDDLStatusComplete)
- checkCancelMigration(t, uuid, false)
- checkRetryMigration(t, uuid, false)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ onlineddl.CheckCancelMigration(t, &vtParams, shards, uuid, false)
+ onlineddl.CheckRetryMigration(t, &vtParams, shards, uuid, false)
})
t.Run("Online CREATE, vtctl", func(t *testing.T) {
uuid := testOnlineDDLStatement(t, onlineDDLCreateTableStatement, "gh-ost", "vtctl", "online_ddl_create_col")
- checkRecentMigrations(t, uuid, schema.OnlineDDLStatusComplete)
- checkCancelMigration(t, uuid, false)
- checkRetryMigration(t, uuid, false)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ onlineddl.CheckCancelMigration(t, &vtParams, shards, uuid, false)
+ onlineddl.CheckRetryMigration(t, &vtParams, shards, uuid, false)
})
t.Run("Online DROP TABLE IF EXISTS, vtgate", func(t *testing.T) {
uuid := testOnlineDDLStatement(t, onlineDDLDropTableIfExistsStatement, "gh-ost", "vtgate", "")
- checkRecentMigrations(t, uuid, schema.OnlineDDLStatusComplete)
- checkCancelMigration(t, uuid, false)
- checkRetryMigration(t, uuid, false)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ onlineddl.CheckCancelMigration(t, &vtParams, shards, uuid, false)
+ onlineddl.CheckRetryMigration(t, &vtParams, shards, uuid, false)
// this table existed
checkTables(t, schema.OnlineDDLToGCUUID(uuid), 1)
})
t.Run("Online DROP TABLE IF EXISTS for nonexistent table, vtgate", func(t *testing.T) {
uuid := testOnlineDDLStatement(t, onlineDDLDropTableIfExistsStatement, "gh-ost", "vtgate", "")
- checkRecentMigrations(t, uuid, schema.OnlineDDLStatusComplete)
- checkCancelMigration(t, uuid, false)
- checkRetryMigration(t, uuid, false)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ onlineddl.CheckCancelMigration(t, &vtParams, shards, uuid, false)
+ onlineddl.CheckRetryMigration(t, &vtParams, shards, uuid, false)
// this table did not exist
checkTables(t, schema.OnlineDDLToGCUUID(uuid), 0)
})
t.Run("Online DROP TABLE for nonexistent table, expect error, vtgate", func(t *testing.T) {
uuid := testOnlineDDLStatement(t, onlineDDLDropTableStatement, "gh-ost", "vtgate", "")
- checkRecentMigrations(t, uuid, schema.OnlineDDLStatusFailed)
- checkCancelMigration(t, uuid, false)
- checkRetryMigration(t, uuid, true)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusFailed)
+ onlineddl.CheckCancelMigration(t, &vtParams, shards, uuid, false)
+ onlineddl.CheckRetryMigration(t, &vtParams, shards, uuid, true)
})
}
@@ -268,7 +303,7 @@ func testOnlineDDLStatement(t *testing.T, alterStatement string, ddlStrategy str
tableName := fmt.Sprintf("vt_onlineddl_test_%02d", 3)
sqlQuery := fmt.Sprintf(alterStatement, tableName)
if executeStrategy == "vtgate" {
- row := vtgateExec(t, ddlStrategy, sqlQuery, "").Named().Row()
+ row := onlineddl.VtgateExecDDL(t, &vtParams, ddlStrategy, sqlQuery, "").Named().Row()
if row != nil {
uuid = row.AsString("uuid", "")
}
@@ -308,72 +343,6 @@ func checkTablesCount(t *testing.T, tablet *cluster.Vttablet, showTableName stri
assert.Equal(t, expectCount, len(queryResult.Rows))
}
-// checkRecentMigrations checks 'OnlineDDL show recent' output. Example to such output:
-// +------------------+-------+--------------+----------------------+--------------------------------------+----------+---------------------+---------------------+------------------+
-// | Tablet | shard | mysql_schema | mysql_table | migration_uuid | strategy | started_timestamp | completed_timestamp | migration_status |
-// +------------------+-------+--------------+----------------------+--------------------------------------+----------+---------------------+---------------------+------------------+
-// | zone1-0000003880 | 0 | vt_ks | vt_onlineddl_test_03 | a0638f6b_ec7b_11ea_9bf8_000d3a9b8a9a | gh-ost | 2020-09-01 17:50:40 | 2020-09-01 17:50:41 | complete |
-// | zone1-0000003884 | 1 | vt_ks | vt_onlineddl_test_03 | a0638f6b_ec7b_11ea_9bf8_000d3a9b8a9a | gh-ost | 2020-09-01 17:50:40 | 2020-09-01 17:50:41 | complete |
-// +------------------+-------+--------------+----------------------+--------------------------------------+----------+---------------------+---------------------+------------------+
-
-func checkRecentMigrations(t *testing.T, uuid string, expectStatus schema.OnlineDDLStatus) {
- result, err := clusterInstance.VtctlclientProcess.OnlineDDLShowRecent(keyspaceName)
- assert.NoError(t, err)
- fmt.Println("# 'vtctlclient OnlineDDL show recent' output (for debug purposes):")
- fmt.Println(result)
- assert.Equal(t, len(clusterInstance.Keyspaces[0].Shards), strings.Count(result, uuid))
- // We ensure "full word" regexp becuase some column names may conflict
- expectStatusRegexp := fullWordUUIDRegexp(uuid, string(expectStatus))
- m := expectStatusRegexp.FindAllString(result, -1)
- assert.Equal(t, len(clusterInstance.Keyspaces[0].Shards), len(m))
-}
-
-// checkCancelMigration attempts to cancel a migration, and expects rejection
-func checkCancelMigration(t *testing.T, uuid string, expectCancelPossible bool) {
- result, err := clusterInstance.VtctlclientProcess.OnlineDDLCancelMigration(keyspaceName, uuid)
- fmt.Println("# 'vtctlclient OnlineDDL cancel ' output (for debug purposes):")
- fmt.Println(result)
- assert.NoError(t, err)
-
- var r *regexp.Regexp
- if expectCancelPossible {
- r = fullWordRegexp("1")
- } else {
- r = fullWordRegexp("0")
- }
- m := r.FindAllString(result, -1)
- assert.Equal(t, len(clusterInstance.Keyspaces[0].Shards), len(m))
-}
-
-// checkCancelAllMigrations all pending migrations
-func checkCancelAllMigrations(t *testing.T, expectCount int) {
- result, err := clusterInstance.VtctlclientProcess.OnlineDDLCancelAllMigrations(keyspaceName)
- fmt.Println("# 'vtctlclient OnlineDDL cancel-all' output (for debug purposes):")
- fmt.Println(result)
- assert.NoError(t, err)
-
- r := fullWordRegexp(fmt.Sprintf("%d", expectCount))
- m := r.FindAllString(result, -1)
- assert.Equal(t, len(clusterInstance.Keyspaces[0].Shards), len(m))
-}
-
-// checkRetryMigration attempts to retry a migration, and expects rejection
-func checkRetryMigration(t *testing.T, uuid string, expectRetryPossible bool) {
- result, err := clusterInstance.VtctlclientProcess.OnlineDDLRetryMigration(keyspaceName, uuid)
- fmt.Println("# 'vtctlclient OnlineDDL retry ' output (for debug purposes):")
- fmt.Println(result)
- assert.NoError(t, err)
-
- var r *regexp.Regexp
- if expectRetryPossible {
- r = fullWordRegexp("1")
- } else {
- r = fullWordRegexp("0")
- }
- m := r.FindAllString(result, -1)
- assert.Equal(t, len(clusterInstance.Keyspaces[0].Shards), len(m))
-}
-
// checkMigratedTables checks the CREATE STATEMENT of a table after migration
func checkMigratedTable(t *testing.T, tableName, expectColumn string) {
for i := range clusterInstance.Keyspaces[0].Shards {
@@ -392,25 +361,3 @@ func getCreateTableStatement(t *testing.T, tablet *cluster.Vttablet, tableName s
statement = queryResult.Rows[0][1].ToString()
return statement
}
-
-func vtgateExec(t *testing.T, ddlStrategy string, query string, expectError string) *sqltypes.Result {
- t.Helper()
-
- ctx := context.Background()
- conn, err := mysql.Connect(ctx, &vtParams)
- require.Nil(t, err)
- defer conn.Close()
-
- setSession := fmt.Sprintf("set @@ddl_strategy='%s'", ddlStrategy)
- _, err = conn.ExecuteFetch(setSession, 1000, true)
- assert.NoError(t, err)
-
- qr, err := conn.ExecuteFetch(query, 1000, true)
- if expectError == "" {
- require.NoError(t, err)
- } else {
- require.Error(t, err, "error should not be nil")
- assert.Contains(t, err.Error(), expectError, "Unexpected error")
- }
- return qr
-}
diff --git a/go/test/endtoend/onlineddl/query_util.go b/go/test/endtoend/onlineddl/query_util.go
new file mode 100644
index 00000000000..dc764d820db
--- /dev/null
+++ b/go/test/endtoend/onlineddl/query_util.go
@@ -0,0 +1,61 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package onlineddl
+
+import (
+ "io"
+ "strings"
+
+ "vitess.io/vitess/go/sqltypes"
+
+ "github.com/olekukonko/tablewriter"
+)
+
+// PrintQueryResult will pretty-print a QueryResult to the logger.
+func PrintQueryResult(writer io.Writer, qr *sqltypes.Result) {
+ if qr == nil {
+ return
+ }
+ if len(qr.Rows) == 0 {
+ return
+ }
+
+ table := tablewriter.NewWriter(writer)
+ table.SetAutoFormatHeaders(false)
+
+ // Make header.
+ header := make([]string, 0, len(qr.Fields))
+ for _, field := range qr.Fields {
+ header = append(header, field.Name)
+ }
+ table.SetHeader(header)
+
+ // Add rows.
+ for _, row := range qr.Rows {
+ vals := make([]string, 0, len(row))
+ for _, val := range row {
+ v := val.ToString()
+ v = strings.ReplaceAll(v, "\r", " ")
+ v = strings.ReplaceAll(v, "\n", " ")
+ vals = append(vals, v)
+ }
+ table.Append(vals)
+ }
+
+ // Print table.
+ table.Render()
+}
diff --git a/go/test/endtoend/onlineddl/revert/onlineddl_revert_test.go b/go/test/endtoend/onlineddl/revert/onlineddl_revert_test.go
new file mode 100644
index 00000000000..d5c0ddaa98c
--- /dev/null
+++ b/go/test/endtoend/onlineddl/revert/onlineddl_revert_test.go
@@ -0,0 +1,727 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package revert
+
+import (
+ "context"
+ "flag"
+ "fmt"
+ "math/rand"
+ "os"
+ "path"
+ "strings"
+ "sync"
+ "sync/atomic"
+ "testing"
+ "time"
+
+ "vitess.io/vitess/go/mysql"
+ "vitess.io/vitess/go/vt/log"
+ "vitess.io/vitess/go/vt/schema"
+
+ "vitess.io/vitess/go/test/endtoend/cluster"
+ "vitess.io/vitess/go/test/endtoend/onlineddl"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+)
+
+type WriteMetrics struct {
+ mu sync.Mutex
+ insertsAttempts, insertsFailures, insertsNoops, inserts int64
+ updatesAttempts, updatesFailures, updatesNoops, updates int64
+ deletesAttempts, deletesFailures, deletesNoops, deletes int64
+}
+
+func (w *WriteMetrics) Clear() {
+ w.mu.Lock()
+ defer w.mu.Unlock()
+
+ w.inserts = 0
+ w.updates = 0
+ w.deletes = 0
+
+ w.insertsAttempts = 0
+ w.insertsFailures = 0
+ w.insertsNoops = 0
+
+ w.updatesAttempts = 0
+ w.updatesFailures = 0
+ w.updatesNoops = 0
+
+ w.deletesAttempts = 0
+ w.deletesFailures = 0
+ w.deletesNoops = 0
+}
+
+func (w *WriteMetrics) String() string {
+ return fmt.Sprintf(`WriteMetrics: inserts-deletes=%d, updates-deletes=%d,
+insertsAttempts=%d, insertsFailures=%d, insertsNoops=%d, inserts=%d,
+updatesAttempts=%d, updatesFailures=%d, updatesNoops=%d, updates=%d,
+deletesAttempts=%d, deletesFailures=%d, deletesNoops=%d, deletes=%d,
+`,
+ w.inserts-w.deletes, w.updates-w.deletes,
+ w.insertsAttempts, w.insertsFailures, w.insertsNoops, w.inserts,
+ w.updatesAttempts, w.updatesFailures, w.updatesNoops, w.updates,
+ w.deletesAttempts, w.deletesFailures, w.deletesNoops, w.deletes,
+ )
+}
+
+var (
+ clusterInstance *cluster.LocalProcessCluster
+ vtParams mysql.ConnParams
+
+ hostname = "localhost"
+ keyspaceName = "ks"
+ cell = "zone1"
+ schemaChangeDirectory = ""
+ tableName = `stress_test`
+ createStatement = `
+ CREATE TABLE stress_test (
+ id bigint(20) not null,
+ rand_val varchar(32) null default '',
+ hint_col varchar(64) not null default 'just-created',
+ created_timestamp timestamp not null default current_timestamp,
+ updates int unsigned not null default 0,
+ PRIMARY KEY (id),
+ key created_idx(created_timestamp),
+ key updates_idx(updates)
+ ) ENGINE=InnoDB
+ `
+ createIfNotExistsStatement = `
+ CREATE TABLE IF NOT EXISTS stress_test (
+ id bigint(20) not null,
+ PRIMARY KEY (id)
+ ) ENGINE=InnoDB
+ `
+ dropStatement = `
+ DROP TABLE stress_test
+ `
+ dropIfExistsStatement = `
+ DROP TABLE IF EXISTS stress_test
+ `
+ alterHintStatement = `
+ ALTER TABLE stress_test modify hint_col varchar(64) not null default '%s'
+ `
+ insertRowStatement = `
+ INSERT IGNORE INTO stress_test (id, rand_val) VALUES (%d, left(md5(rand()), 8))
+ `
+ updateRowStatement = `
+ UPDATE stress_test SET updates=updates+1 WHERE id=%d
+ `
+ deleteRowStatement = `
+ DELETE FROM stress_test WHERE id=%d AND updates=1
+ `
+ // We use CAST(SUM(updates) AS SIGNED) because SUM() returns a DECIMAL datatype, and we want to read a SIGNED INTEGER type
+ selectCountRowsStatement = `
+ SELECT COUNT(*) AS num_rows, CAST(SUM(updates) AS SIGNED) AS sum_updates FROM stress_test
+ `
+ truncateStatement = `
+ TRUNCATE TABLE stress_test
+ `
+ writeMetrics WriteMetrics
+)
+
+const (
+ maxTableRows = 4096
+ maxConcurrency = 5
+)
+
+func TestMain(m *testing.M) {
+ defer cluster.PanicHandler(nil)
+ flag.Parse()
+
+ exitcode, err := func() (int, error) {
+ clusterInstance = cluster.NewCluster(cell, hostname)
+ schemaChangeDirectory = path.Join("/tmp", fmt.Sprintf("schema_change_dir_%d", clusterInstance.GetAndReserveTabletUID()))
+ defer os.RemoveAll(schemaChangeDirectory)
+ defer clusterInstance.Teardown()
+
+ if _, err := os.Stat(schemaChangeDirectory); os.IsNotExist(err) {
+ _ = os.Mkdir(schemaChangeDirectory, 0700)
+ }
+
+ clusterInstance.VtctldExtraArgs = []string{
+ "-schema_change_dir", schemaChangeDirectory,
+ "-schema_change_controller", "local",
+ "-schema_change_check_interval", "1"}
+
+ clusterInstance.VtTabletExtraArgs = []string{
+ "-enable-lag-throttler",
+ "-throttle_threshold", "1s",
+ "-heartbeat_enable",
+ "-heartbeat_interval", "250ms",
+ "-migration_check_interval", "5s",
+ }
+ clusterInstance.VtGateExtraArgs = []string{
+ "-ddl_strategy", "online",
+ }
+
+ if err := clusterInstance.StartTopo(); err != nil {
+ return 1, err
+ }
+
+ // Start keyspace
+ keyspace := &cluster.Keyspace{
+ Name: keyspaceName,
+ }
+
+ // No need for replicas in this stress test
+ if err := clusterInstance.StartKeyspace(*keyspace, []string{"1"}, 0, false); err != nil {
+ return 1, err
+ }
+
+ vtgateInstance := clusterInstance.NewVtgateInstance()
+ // set the gateway we want to use
+ vtgateInstance.GatewayImplementation = "tabletgateway"
+ // Start vtgate
+ if err := vtgateInstance.Setup(); err != nil {
+ return 1, err
+ }
+ // ensure it is torn down during cluster TearDown
+ clusterInstance.VtgateProcess = *vtgateInstance
+ vtParams = mysql.ConnParams{
+ Host: clusterInstance.Hostname,
+ Port: clusterInstance.VtgateMySQLPort,
+ }
+
+ return m.Run(), nil
+ }()
+ if err != nil {
+ fmt.Printf("%v\n", err)
+ os.Exit(1)
+ } else {
+ os.Exit(exitcode)
+ }
+
+}
+
+func TestSchemaChange(t *testing.T) {
+ defer cluster.PanicHandler(t)
+ shards := clusterInstance.Keyspaces[0].Shards
+ require.Equal(t, 1, len(shards))
+
+ var uuids []string
+ // CREATE
+ t.Run("CREATE TABLE IF NOT EXISTS where table does not exist", func(t *testing.T) {
+ // The table does not exist
+ uuid := testOnlineDDLStatement(t, createIfNotExistsStatement, "online", "vtgate", "")
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ checkTable(t, tableName, true)
+ })
+ t.Run("revert CREATE TABLE IF NOT EXISTS where did not exist", func(t *testing.T) {
+ // The table existed, so it will now be dropped (renamed)
+ uuid := testRevertMigration(t, uuids[len(uuids)-1])
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ checkTable(t, tableName, false)
+ })
+ t.Run("revert revert CREATE TABLE IF NOT EXISTS where did not exist", func(t *testing.T) {
+ // Table was dropped (renamed) so it will now be restored
+ uuid := testRevertMigration(t, uuids[len(uuids)-1])
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ checkTable(t, tableName, true)
+ })
+ t.Run("revert revert revert CREATE TABLE IF NOT EXISTS where did not exist", func(t *testing.T) {
+ // Table was restored, so it will now be dropped (renamed)
+ uuid := testRevertMigration(t, uuids[len(uuids)-1])
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ checkTable(t, tableName, false)
+ })
+ t.Run("online CREATE TABLE", func(t *testing.T) {
+ uuid := testOnlineDDLStatement(t, createStatement, "online", "vtgate", "just-created")
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ checkTable(t, tableName, true)
+ initTable(t)
+ testSelectTableMetrics(t)
+ })
+ t.Run("revert CREATE TABLE", func(t *testing.T) {
+ // This will drop the table (well, actually, rename it away)
+ uuid := testRevertMigration(t, uuids[len(uuids)-1])
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ checkTable(t, tableName, false)
+ })
+ t.Run("revert revert CREATE TABLE", func(t *testing.T) {
+ // Restore the table. Data should still be in the table!
+ uuid := testRevertMigration(t, uuids[len(uuids)-1])
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ checkTable(t, tableName, true)
+ testSelectTableMetrics(t)
+ })
+ t.Run("fail revert older change", func(t *testing.T) {
+ // We shouldn't be able to revert one-before-last succcessful migration.
+ uuid := testRevertMigration(t, uuids[len(uuids)-2])
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusFailed)
+ })
+ t.Run("CREATE TABLE IF NOT EXISTS where table exists", func(t *testing.T) {
+ // The table exists. A noop.
+ uuid := testOnlineDDLStatement(t, createIfNotExistsStatement, "online", "vtgate", "")
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ checkTable(t, tableName, true)
+ })
+ t.Run("revert CREATE TABLE IF NOT EXISTS where table existed", func(t *testing.T) {
+ // Since the table already existed, thus not created by the reverts migration,
+ // we expect to _not_ drop it in this revert. A noop.
+ uuid := testRevertMigration(t, uuids[len(uuids)-1])
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ checkTable(t, tableName, true)
+ })
+ t.Run("revert revert CREATE TABLE IF NOT EXISTS where table existed", func(t *testing.T) {
+ // Table was not dropped, thus isn't re-created, and it just still exists. A noop.
+ uuid := testRevertMigration(t, uuids[len(uuids)-1])
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ checkTable(t, tableName, true)
+ })
+ t.Run("fail online CREATE TABLE", func(t *testing.T) {
+ // Table already exists
+ uuid := testOnlineDDLStatement(t, createStatement, "online", "vtgate", "just-created")
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusFailed)
+ checkTable(t, tableName, true)
+ })
+
+ // ALTER
+
+ // Run two ALTER TABLE statements.
+ // These tests are similar to `onlineddl_vrepl_stress` endtond tests.
+ // If they fail, it has nothing to do with revert.
+ // We run these tests because we expect their functionality to work in the next step.
+ var alterHints []string
+ for i := 0; i < 2; i++ {
+ testName := fmt.Sprintf("online ALTER TABLE %d", i)
+ hint := fmt.Sprintf("hint-alter-%d", i)
+ alterHints = append(alterHints, hint)
+ t.Run(testName, func(t *testing.T) {
+ // One alter. We're not going to revert it.
+ // This specific test is similar to `onlineddl_vrepl_stress` endtond tests.
+ // If it fails, it has nothing to do with revert.
+ // We run this test because we expect its functionality to work in the next step.
+ ctx, cancel := context.WithCancel(context.Background())
+ var wg sync.WaitGroup
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+ runMultipleConnections(ctx, t)
+ }()
+ uuid := testOnlineDDLStatement(t, fmt.Sprintf(alterHintStatement, hint), "online", "vtgate", hint)
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ cancel() // will cause runMultipleConnections() to terminate
+ wg.Wait()
+ testSelectTableMetrics(t)
+ })
+ }
+ t.Run("revert ALTER TABLE", func(t *testing.T) {
+ // This reverts the last ALTER TABLE.
+ // And we run traffic on the table during the revert
+ ctx, cancel := context.WithCancel(context.Background())
+ var wg sync.WaitGroup
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+ runMultipleConnections(ctx, t)
+ }()
+ uuid := testRevertMigration(t, uuids[len(uuids)-1])
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ cancel() // will cause runMultipleConnections() to terminate
+ wg.Wait()
+ checkMigratedTable(t, tableName, alterHints[0])
+ testSelectTableMetrics(t)
+ })
+ t.Run("revert revert ALTER TABLE", func(t *testing.T) {
+ // This reverts the last revert (reapplying the last ALTER TABLE).
+ // And we run traffic on the table during the revert
+ ctx, cancel := context.WithCancel(context.Background())
+ var wg sync.WaitGroup
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+ runMultipleConnections(ctx, t)
+ }()
+ uuid := testRevertMigration(t, uuids[len(uuids)-1])
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ cancel() // will cause runMultipleConnections() to terminate
+ wg.Wait()
+ checkMigratedTable(t, tableName, alterHints[1])
+ testSelectTableMetrics(t)
+ })
+ t.Run("revert revert revert ALTER TABLE", func(t *testing.T) {
+ // For good measure, let's verify that revert-revert-revert works...
+ // So this again pulls us back to first ALTER
+ ctx, cancel := context.WithCancel(context.Background())
+ var wg sync.WaitGroup
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+ runMultipleConnections(ctx, t)
+ }()
+ uuid := testRevertMigration(t, uuids[len(uuids)-1])
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ cancel() // will cause runMultipleConnections() to terminate
+ wg.Wait()
+ checkMigratedTable(t, tableName, alterHints[0])
+ testSelectTableMetrics(t)
+ })
+
+ // DROP
+ t.Run("online DROP TABLE", func(t *testing.T) {
+ uuid := testOnlineDDLStatement(t, dropStatement, "online", "vtgate", "")
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ checkTable(t, tableName, false)
+ })
+ t.Run("revert DROP TABLE", func(t *testing.T) {
+ // This will recreate the table (well, actually, rename it back into place)
+ uuid := testRevertMigration(t, uuids[len(uuids)-1])
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ checkTable(t, tableName, true)
+ testSelectTableMetrics(t)
+ })
+ t.Run("revert revert DROP TABLE", func(t *testing.T) {
+ // This will reapply DROP TABLE
+ uuid := testRevertMigration(t, uuids[len(uuids)-1])
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ checkTable(t, tableName, false)
+ })
+
+ // DROP IF EXISTS
+ t.Run("online DROP TABLE IF EXISTS", func(t *testing.T) {
+ // The table doesn't actually exist right now
+ uuid := testOnlineDDLStatement(t, dropIfExistsStatement, "online", "vtgate", "")
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ checkTable(t, tableName, false)
+ })
+ t.Run("revert DROP TABLE IF EXISTS", func(t *testing.T) {
+ // Table will not be recreated because it didn't exist during the DROP TABLE IF EXISTS
+ uuid := testRevertMigration(t, uuids[len(uuids)-1])
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ checkTable(t, tableName, false)
+ })
+ t.Run("revert revert DROP TABLE IF EXISTS", func(t *testing.T) {
+ // Table still does not exist
+ uuid := testRevertMigration(t, uuids[len(uuids)-1])
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ checkTable(t, tableName, false)
+ })
+ t.Run("revert revert revert DROP TABLE IF EXISTS", func(t *testing.T) {
+ // Table still does not exist
+ uuid := testRevertMigration(t, uuids[len(uuids)-1])
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ checkTable(t, tableName, false)
+ })
+
+ // FAILURES
+ t.Run("fail online DROP TABLE", func(t *testing.T) {
+ // The table does not exist now
+ uuid := testOnlineDDLStatement(t, dropStatement, "online", "vtgate", "")
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusFailed)
+ checkTable(t, tableName, false)
+ })
+ t.Run("fail revert failed online DROP TABLE", func(t *testing.T) {
+ // Cannot revert a failed migration
+ uuid := testRevertMigration(t, uuids[len(uuids)-1])
+ uuids = append(uuids, uuid)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusFailed)
+ checkTable(t, tableName, false)
+ })
+}
+
+// testOnlineDDLStatement runs an online DDL, ALTER statement
+func testOnlineDDLStatement(t *testing.T, alterStatement string, ddlStrategy string, executeStrategy string, expectHint string) (uuid string) {
+ if executeStrategy == "vtgate" {
+ row := onlineddl.VtgateExecDDL(t, &vtParams, ddlStrategy, alterStatement, "").Named().Row()
+ if row != nil {
+ uuid = row.AsString("uuid", "")
+ }
+ } else {
+ var err error
+ uuid, err = clusterInstance.VtctlclientProcess.ApplySchemaWithOutput(keyspaceName, alterStatement, ddlStrategy)
+ assert.NoError(t, err)
+ }
+ uuid = strings.TrimSpace(uuid)
+ fmt.Println("# Generated UUID (for debug purposes):")
+ fmt.Printf("<%s>\n", uuid)
+
+ strategy, _, err := schema.ParseDDLStrategy(ddlStrategy)
+ assert.NoError(t, err)
+
+ if !strategy.IsDirect() {
+ time.Sleep(time.Second * 20)
+ }
+
+ if expectHint != "" {
+ checkMigratedTable(t, tableName, expectHint)
+ }
+ return uuid
+}
+
+// testRevertMigration reverts a given migration
+func testRevertMigration(t *testing.T, revertUUID string) (uuid string) {
+ revertQuery := fmt.Sprintf("revert vitess_migration '%s'", revertUUID)
+ r := onlineddl.VtgateExecQuery(t, &vtParams, revertQuery, "")
+
+ row := r.Named().Row()
+ require.NotNil(t, row)
+
+ uuid = row["uuid"].ToString()
+
+ fmt.Println("# Generated UUID (for debug purposes):")
+ fmt.Printf("<%s>\n", uuid)
+
+ time.Sleep(time.Second * 20)
+ return uuid
+}
+
+// checkTable checks the number of tables in the first two shards.
+func checkTable(t *testing.T, showTableName string, expectExists bool) bool {
+ expectCount := 0
+ if expectExists {
+ expectCount = 1
+ }
+ for i := range clusterInstance.Keyspaces[0].Shards {
+ if !checkTablesCount(t, clusterInstance.Keyspaces[0].Shards[i].Vttablets[0], showTableName, expectCount) {
+ return false
+ }
+ }
+ return true
+}
+
+// checkTablesCount checks the number of tables in the given tablet
+func checkTablesCount(t *testing.T, tablet *cluster.Vttablet, showTableName string, expectCount int) bool {
+ query := fmt.Sprintf(`show tables like '%%%s%%';`, showTableName)
+ queryResult, err := tablet.VttabletProcess.QueryTablet(query, keyspaceName, true)
+ require.Nil(t, err)
+ return assert.Equal(t, expectCount, len(queryResult.Rows))
+}
+
+// checkMigratedTables checks the CREATE STATEMENT of a table after migration
+func checkMigratedTable(t *testing.T, tableName, expectHint string) {
+ for i := range clusterInstance.Keyspaces[0].Shards {
+ createStatement := getCreateTableStatement(t, clusterInstance.Keyspaces[0].Shards[i].Vttablets[0], tableName)
+ assert.Contains(t, createStatement, expectHint)
+ }
+}
+
+// getCreateTableStatement returns the CREATE TABLE statement for a given table
+func getCreateTableStatement(t *testing.T, tablet *cluster.Vttablet, tableName string) (statement string) {
+ queryResult, err := tablet.VttabletProcess.QueryTablet(fmt.Sprintf("show create table %s;", tableName), keyspaceName, true)
+ require.Nil(t, err)
+
+ assert.Equal(t, len(queryResult.Rows), 1)
+ assert.Equal(t, len(queryResult.Rows[0]), 2) // table name, create statement
+ statement = queryResult.Rows[0][1].ToString()
+ return statement
+}
+
+func generateInsert(t *testing.T, conn *mysql.Conn) error {
+ id := rand.Int31n(int32(maxTableRows))
+ query := fmt.Sprintf(insertRowStatement, id)
+ qr, err := conn.ExecuteFetch(query, 1000, true)
+
+ func() {
+ writeMetrics.mu.Lock()
+ defer writeMetrics.mu.Unlock()
+
+ writeMetrics.insertsAttempts++
+ if err != nil {
+ writeMetrics.insertsFailures++
+ return
+ }
+ assert.Less(t, qr.RowsAffected, uint64(2))
+ if qr.RowsAffected == 0 {
+ writeMetrics.insertsNoops++
+ return
+ }
+ writeMetrics.inserts++
+ }()
+ return err
+}
+
+func generateUpdate(t *testing.T, conn *mysql.Conn) error {
+ id := rand.Int31n(int32(maxTableRows))
+ query := fmt.Sprintf(updateRowStatement, id)
+ qr, err := conn.ExecuteFetch(query, 1000, true)
+
+ func() {
+ writeMetrics.mu.Lock()
+ defer writeMetrics.mu.Unlock()
+
+ writeMetrics.updatesAttempts++
+ if err != nil {
+ writeMetrics.updatesFailures++
+ return
+ }
+ assert.Less(t, qr.RowsAffected, uint64(2))
+ if qr.RowsAffected == 0 {
+ writeMetrics.updatesNoops++
+ return
+ }
+ writeMetrics.updates++
+ }()
+ return err
+}
+
+func generateDelete(t *testing.T, conn *mysql.Conn) error {
+ id := rand.Int31n(int32(maxTableRows))
+ query := fmt.Sprintf(deleteRowStatement, id)
+ qr, err := conn.ExecuteFetch(query, 1000, true)
+
+ func() {
+ writeMetrics.mu.Lock()
+ defer writeMetrics.mu.Unlock()
+
+ writeMetrics.deletesAttempts++
+ if err != nil {
+ writeMetrics.deletesFailures++
+ return
+ }
+ assert.Less(t, qr.RowsAffected, uint64(2))
+ if qr.RowsAffected == 0 {
+ writeMetrics.deletesNoops++
+ return
+ }
+ writeMetrics.deletes++
+ }()
+ return err
+}
+
+func runSingleConnection(ctx context.Context, t *testing.T, done *int64) {
+ log.Infof("Running single connection")
+ conn, err := mysql.Connect(ctx, &vtParams)
+ require.Nil(t, err)
+ defer conn.Close()
+
+ _, err = conn.ExecuteFetch("set autocommit=1", 1000, true)
+ require.Nil(t, err)
+ _, err = conn.ExecuteFetch("set transaction isolation level read committed", 1000, true)
+ require.Nil(t, err)
+
+ for {
+ if atomic.LoadInt64(done) == 1 {
+ log.Infof("Terminating single connection")
+ return
+ }
+ switch rand.Int31n(3) {
+ case 0:
+ err = generateInsert(t, conn)
+ case 1:
+ err = generateUpdate(t, conn)
+ case 2:
+ err = generateDelete(t, conn)
+ }
+ if err != nil {
+ if strings.Contains(err.Error(), "disallowed due to rule: enforce blacklisted tables") {
+ err = nil
+ }
+ }
+ assert.Nil(t, err)
+ time.Sleep(10 * time.Millisecond)
+ }
+}
+
+func runMultipleConnections(ctx context.Context, t *testing.T) {
+ log.Infof("Running multiple connections")
+
+ require.True(t, checkTable(t, tableName, true))
+ var done int64
+ var wg sync.WaitGroup
+ for i := 0; i < maxConcurrency; i++ {
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+ runSingleConnection(ctx, t, &done)
+ }()
+ }
+ <-ctx.Done()
+ atomic.StoreInt64(&done, 1)
+ log.Infof("Running multiple connections: done")
+ wg.Wait()
+ log.Infof("All connections cancelled")
+}
+
+func initTable(t *testing.T) {
+ log.Infof("initTable begin")
+ defer log.Infof("initTable complete")
+
+ ctx := context.Background()
+ conn, err := mysql.Connect(ctx, &vtParams)
+ require.Nil(t, err)
+ defer conn.Close()
+
+ writeMetrics.Clear()
+ _, err = conn.ExecuteFetch(truncateStatement, 1000, true)
+ require.Nil(t, err)
+
+ for i := 0; i < maxTableRows/2; i++ {
+ generateInsert(t, conn)
+ }
+ for i := 0; i < maxTableRows/4; i++ {
+ generateUpdate(t, conn)
+ }
+ for i := 0; i < maxTableRows/4; i++ {
+ generateDelete(t, conn)
+ }
+}
+
+func testSelectTableMetrics(t *testing.T) {
+ writeMetrics.mu.Lock()
+ defer writeMetrics.mu.Unlock()
+
+ log.Infof("%s", writeMetrics.String())
+
+ ctx := context.Background()
+ conn, err := mysql.Connect(ctx, &vtParams)
+ require.Nil(t, err)
+ defer conn.Close()
+
+ rs, err := conn.ExecuteFetch(selectCountRowsStatement, 1000, true)
+ require.Nil(t, err)
+
+ row := rs.Named().Row()
+ require.NotNil(t, row)
+ log.Infof("testSelectTableMetrics, row: %v", row)
+ numRows := row.AsInt64("num_rows", 0)
+ sumUpdates := row.AsInt64("sum_updates", 0)
+
+ assert.NotZero(t, numRows)
+ assert.NotZero(t, sumUpdates)
+ assert.NotZero(t, writeMetrics.inserts)
+ assert.NotZero(t, writeMetrics.deletes)
+ assert.NotZero(t, writeMetrics.updates)
+ assert.Equal(t, writeMetrics.inserts-writeMetrics.deletes, numRows)
+ assert.Equal(t, writeMetrics.updates-writeMetrics.deletes, sumUpdates) // because we DELETE WHERE updates=1
+}
diff --git a/go/test/endtoend/onlineddl/vrepl/onlineddl_vrepl_test.go b/go/test/endtoend/onlineddl/vrepl/onlineddl_vrepl_test.go
new file mode 100644
index 00000000000..7971a128b75
--- /dev/null
+++ b/go/test/endtoend/onlineddl/vrepl/onlineddl_vrepl_test.go
@@ -0,0 +1,449 @@
+/*
+Copyright 2019 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package vrepl
+
+import (
+ "flag"
+ "fmt"
+ "io/ioutil"
+ "net/http"
+ "os"
+ "path"
+ "strings"
+ "sync"
+ "testing"
+ "time"
+
+ "vitess.io/vitess/go/mysql"
+ "vitess.io/vitess/go/vt/schema"
+ throttlebase "vitess.io/vitess/go/vt/vttablet/tabletserver/throttle/base"
+
+ "vitess.io/vitess/go/test/endtoend/cluster"
+ "vitess.io/vitess/go/test/endtoend/onlineddl"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+)
+
+var (
+ clusterInstance *cluster.LocalProcessCluster
+ vtParams mysql.ConnParams
+ httpClient = throttlebase.SetupHTTPClient(time.Second)
+ throttlerAppName = "vreplication"
+
+ hostname = "localhost"
+ keyspaceName = "ks"
+ cell = "zone1"
+ schemaChangeDirectory = ""
+ totalTableCount = 4
+ createTable = `
+ CREATE TABLE %s (
+ id bigint(20) NOT NULL,
+ test_val bigint unsigned NOT NULL DEFAULT 0,
+ msg varchar(64),
+ PRIMARY KEY (id)
+ ) ENGINE=InnoDB;`
+ // To verify non online-DDL behavior
+ alterTableNormalStatement = `
+ ALTER TABLE %s
+ ADD COLUMN non_online int UNSIGNED NOT NULL DEFAULT 0`
+ // A trivial statement which must succeed and does not change the schema
+ alterTableTrivialStatement = `
+ ALTER TABLE %s
+ ENGINE=InnoDB`
+ // The following statement is valid
+ alterTableSuccessfulStatement = `
+ ALTER TABLE %s
+ MODIFY id bigint UNSIGNED NOT NULL,
+ ADD COLUMN vrepl_col int NOT NULL DEFAULT 0,
+ ADD INDEX idx_msg(msg)`
+ // The following statement will fail because vreplication requires shared PRIMARY KEY columns
+ alterTableFailedStatement = `
+ ALTER TABLE %s
+ DROP PRIMARY KEY,
+ DROP COLUMN vrepl_col`
+ // We will run this query while throttling vreplication
+ alterTableThrottlingStatement = `
+ ALTER TABLE %s
+ DROP COLUMN vrepl_col`
+ onlineDDLCreateTableStatement = `
+ CREATE TABLE %s (
+ id bigint NOT NULL,
+ test_val bigint unsigned NOT NULL DEFAULT 0,
+ online_ddl_create_col INT NOT NULL,
+ PRIMARY KEY (id)
+ ) ENGINE=InnoDB;`
+ onlineDDLDropTableStatement = `
+ DROP TABLE %s`
+ onlineDDLDropTableIfExistsStatement = `
+ DROP TABLE IF EXISTS %s`
+ insertRowStatement = `
+ INSERT INTO %s (id, test_val) VALUES (%d, 1)
+ `
+ selectCountRowsStatement = `
+ SELECT COUNT(*) AS c FROM %s
+ `
+ countInserts int64
+ insertMutex sync.Mutex
+
+ vSchema = `
+ {
+ "sharded": true,
+ "vindexes": {
+ "hash_index": {
+ "type": "hash"
+ }
+ },
+ "tables": {
+ "vt_onlineddl_test_00": {
+ "column_vindexes": [
+ {
+ "column": "id",
+ "name": "hash_index"
+ }
+ ]
+ },
+ "vt_onlineddl_test_01": {
+ "column_vindexes": [
+ {
+ "column": "id",
+ "name": "hash_index"
+ }
+ ]
+ },
+ "vt_onlineddl_test_02": {
+ "column_vindexes": [
+ {
+ "column": "id",
+ "name": "hash_index"
+ }
+ ]
+ },
+ "vt_onlineddl_test_03": {
+ "column_vindexes": [
+ {
+ "column": "id",
+ "name": "hash_index"
+ }
+ ]
+ }
+ }
+ }
+ `
+)
+
+func TestMain(m *testing.M) {
+ defer cluster.PanicHandler(nil)
+ flag.Parse()
+
+ exitcode, err := func() (int, error) {
+ clusterInstance = cluster.NewCluster(cell, hostname)
+ schemaChangeDirectory = path.Join("/tmp", fmt.Sprintf("schema_change_dir_%d", clusterInstance.GetAndReserveTabletUID()))
+ defer os.RemoveAll(schemaChangeDirectory)
+ defer clusterInstance.Teardown()
+
+ if _, err := os.Stat(schemaChangeDirectory); os.IsNotExist(err) {
+ _ = os.Mkdir(schemaChangeDirectory, 0700)
+ }
+
+ clusterInstance.VtctldExtraArgs = []string{
+ "-schema_change_dir", schemaChangeDirectory,
+ "-schema_change_controller", "local",
+ "-schema_change_check_interval", "1"}
+
+ clusterInstance.VtTabletExtraArgs = []string{
+ "-enable-lag-throttler",
+ "-throttle_threshold", "1s",
+ "-heartbeat_enable",
+ "-heartbeat_interval", "250ms",
+ "-migration_check_interval", "5s",
+ }
+ clusterInstance.VtGateExtraArgs = []string{
+ "-ddl_strategy", "online",
+ }
+
+ if err := clusterInstance.StartTopo(); err != nil {
+ return 1, err
+ }
+
+ keyspace := &cluster.Keyspace{
+ Name: keyspaceName,
+ VSchema: vSchema,
+ }
+
+ if err := clusterInstance.StartKeyspace(*keyspace, []string{"-80", "80-"}, 1, false); err != nil {
+ return 1, err
+ }
+
+ vtgateInstance := clusterInstance.NewVtgateInstance()
+ // set the gateway we want to use
+ vtgateInstance.GatewayImplementation = "tabletgateway"
+ // Start vtgate
+ if err := vtgateInstance.Setup(); err != nil {
+ return 1, err
+ }
+ // ensure it is torn down during cluster TearDown
+ clusterInstance.VtgateProcess = *vtgateInstance
+ vtParams = mysql.ConnParams{
+ Host: clusterInstance.Hostname,
+ Port: clusterInstance.VtgateMySQLPort,
+ }
+
+ return m.Run(), nil
+ }()
+ if err != nil {
+ fmt.Printf("%v\n", err)
+ os.Exit(1)
+ } else {
+ os.Exit(exitcode)
+ }
+
+}
+
+func throttleResponse(tablet *cluster.Vttablet, path string) (resp *http.Response, respBody string, err error) {
+ apiURL := fmt.Sprintf("http://%s:%d/%s", tablet.VttabletProcess.TabletHostname, tablet.HTTPPort, path)
+ resp, err = httpClient.Get(apiURL)
+ if err != nil {
+ return resp, respBody, err
+ }
+ b, err := ioutil.ReadAll(resp.Body)
+ respBody = string(b)
+ return resp, respBody, err
+}
+
+func throttleApp(tablet *cluster.Vttablet, app string) (*http.Response, string, error) {
+ return throttleResponse(tablet, fmt.Sprintf("throttler/throttle-app?app=%s&duration=1h", app))
+}
+
+func unthrottleApp(tablet *cluster.Vttablet, app string) (*http.Response, string, error) {
+ return throttleResponse(tablet, fmt.Sprintf("throttler/unthrottle-app?app=%s", app))
+}
+
+func TestSchemaChange(t *testing.T) {
+ defer cluster.PanicHandler(t)
+ shards := clusterInstance.Keyspaces[0].Shards
+ assert.Equal(t, 2, len(shards))
+ testWithInitialSchema(t)
+ t.Run("alter non_online", func(t *testing.T) {
+ _ = testOnlineDDLStatement(t, alterTableNormalStatement, string(schema.DDLStrategyDirect), "vtctl", "non_online")
+ insertRows(t, 2)
+ testRows(t)
+ })
+ t.Run("successful online alter, vtgate", func(t *testing.T) {
+ insertRows(t, 2)
+ uuid := testOnlineDDLStatement(t, alterTableSuccessfulStatement, "online", "vtgate", "vrepl_col")
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ testRows(t)
+ onlineddl.CheckCancelMigration(t, &vtParams, shards, uuid, false)
+ onlineddl.CheckRetryMigration(t, &vtParams, shards, uuid, false)
+ })
+ t.Run("successful online alter, vtctl", func(t *testing.T) {
+ insertRows(t, 2)
+ uuid := testOnlineDDLStatement(t, alterTableTrivialStatement, "online", "vtctl", "vrepl_col")
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ testRows(t)
+ onlineddl.CheckCancelMigration(t, &vtParams, shards, uuid, false)
+ onlineddl.CheckRetryMigration(t, &vtParams, shards, uuid, false)
+ })
+ t.Run("throttled migration", func(t *testing.T) {
+ insertRows(t, 2)
+ for i := range clusterInstance.Keyspaces[0].Shards {
+ throttleApp(clusterInstance.Keyspaces[0].Shards[i].Vttablets[0], throttlerAppName)
+ defer unthrottleApp(clusterInstance.Keyspaces[0].Shards[i].Vttablets[0], throttlerAppName)
+ }
+ uuid := testOnlineDDLStatement(t, alterTableThrottlingStatement, "online", "vtgate", "vrepl_col")
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusRunning)
+ testRows(t)
+ onlineddl.CheckCancelMigration(t, &vtParams, shards, uuid, true)
+ time.Sleep(2 * time.Second)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusFailed)
+ })
+ t.Run("failed migration", func(t *testing.T) {
+ insertRows(t, 2)
+ uuid := testOnlineDDLStatement(t, alterTableFailedStatement, "online", "vtgate", "vrepl_col")
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusFailed)
+ testRows(t)
+ onlineddl.CheckCancelMigration(t, &vtParams, shards, uuid, false)
+ onlineddl.CheckRetryMigration(t, &vtParams, shards, uuid, true)
+ // migration will fail again
+ })
+ t.Run("cancel all migrations: nothing to cancel", func(t *testing.T) {
+ // no migrations pending at this time
+ time.Sleep(10 * time.Second)
+ onlineddl.CheckCancelAllMigrations(t, &vtParams, 0)
+ })
+ t.Run("cancel all migrations: some migrations to cancel", func(t *testing.T) {
+ for i := range shards {
+ throttleApp(shards[i].Vttablets[0], throttlerAppName)
+ defer unthrottleApp(shards[i].Vttablets[0], throttlerAppName)
+ }
+ // spawn n migrations; cancel them via cancel-all
+ var wg sync.WaitGroup
+ count := 4
+ for i := 0; i < count; i++ {
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+ _ = testOnlineDDLStatement(t, alterTableThrottlingStatement, "online", "vtgate", "vrepl_col")
+ }()
+ }
+ wg.Wait()
+ onlineddl.CheckCancelAllMigrations(t, &vtParams, len(shards)*count)
+ })
+ t.Run("Online DROP, vtctl", func(t *testing.T) {
+ uuid := testOnlineDDLStatement(t, onlineDDLDropTableStatement, "online", "vtctl", "")
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ onlineddl.CheckCancelMigration(t, &vtParams, shards, uuid, false)
+ onlineddl.CheckRetryMigration(t, &vtParams, shards, uuid, false)
+ })
+ t.Run("Online CREATE, vtctl", func(t *testing.T) {
+ uuid := testOnlineDDLStatement(t, onlineDDLCreateTableStatement, "online", "vtctl", "online_ddl_create_col")
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ onlineddl.CheckCancelMigration(t, &vtParams, shards, uuid, false)
+ onlineddl.CheckRetryMigration(t, &vtParams, shards, uuid, false)
+ })
+ t.Run("Online DROP TABLE IF EXISTS, vtgate", func(t *testing.T) {
+ uuid := testOnlineDDLStatement(t, onlineDDLDropTableIfExistsStatement, "online", "vtgate", "")
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ onlineddl.CheckCancelMigration(t, &vtParams, shards, uuid, false)
+ onlineddl.CheckRetryMigration(t, &vtParams, shards, uuid, false)
+ // this table existed
+ checkTables(t, schema.OnlineDDLToGCUUID(uuid), 1)
+ })
+ t.Run("Online DROP TABLE IF EXISTS for nonexistent table, vtgate", func(t *testing.T) {
+ uuid := testOnlineDDLStatement(t, onlineDDLDropTableIfExistsStatement, "online", "vtgate", "")
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ onlineddl.CheckCancelMigration(t, &vtParams, shards, uuid, false)
+ onlineddl.CheckRetryMigration(t, &vtParams, shards, uuid, false)
+ // this table did not exist
+ checkTables(t, schema.OnlineDDLToGCUUID(uuid), 0)
+ })
+ t.Run("Online DROP TABLE for nonexistent table, expect error, vtgate", func(t *testing.T) {
+ uuid := testOnlineDDLStatement(t, onlineDDLDropTableStatement, "online", "vtgate", "")
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusFailed)
+ onlineddl.CheckCancelMigration(t, &vtParams, shards, uuid, false)
+ onlineddl.CheckRetryMigration(t, &vtParams, shards, uuid, true)
+ })
+}
+
+func insertRow(t *testing.T) {
+ insertMutex.Lock()
+ defer insertMutex.Unlock()
+
+ tableName := fmt.Sprintf("vt_onlineddl_test_%02d", 3)
+ sqlQuery := fmt.Sprintf(insertRowStatement, tableName, countInserts)
+ r := onlineddl.VtgateExecQuery(t, &vtParams, sqlQuery, "")
+ require.NotNil(t, r)
+ countInserts++
+}
+
+func insertRows(t *testing.T, count int) {
+ for i := 0; i < count; i++ {
+ insertRow(t)
+ }
+}
+
+func testRows(t *testing.T) {
+ insertMutex.Lock()
+ defer insertMutex.Unlock()
+
+ tableName := fmt.Sprintf("vt_onlineddl_test_%02d", 3)
+ sqlQuery := fmt.Sprintf(selectCountRowsStatement, tableName)
+ r := onlineddl.VtgateExecQuery(t, &vtParams, sqlQuery, "")
+ require.NotNil(t, r)
+ row := r.Named().Row()
+ require.NotNil(t, row)
+ require.Equal(t, countInserts, row.AsInt64("c", 0))
+}
+
+func testWithInitialSchema(t *testing.T) {
+ // Create 4 tables
+ var sqlQuery = "" //nolint
+ for i := 0; i < totalTableCount; i++ {
+ sqlQuery = fmt.Sprintf(createTable, fmt.Sprintf("vt_onlineddl_test_%02d", i))
+ err := clusterInstance.VtctlclientProcess.ApplySchema(keyspaceName, sqlQuery)
+ require.Nil(t, err)
+ }
+
+ // Check if 4 tables are created
+ checkTables(t, "", totalTableCount)
+}
+
+// testOnlineDDLStatement runs an online DDL, ALTER statement
+func testOnlineDDLStatement(t *testing.T, alterStatement string, ddlStrategy string, executeStrategy string, expectColumn string) (uuid string) {
+ tableName := fmt.Sprintf("vt_onlineddl_test_%02d", 3)
+ sqlQuery := fmt.Sprintf(alterStatement, tableName)
+ if executeStrategy == "vtgate" {
+ row := onlineddl.VtgateExecDDL(t, &vtParams, ddlStrategy, sqlQuery, "").Named().Row()
+ if row != nil {
+ uuid = row.AsString("uuid", "")
+ }
+ } else {
+ var err error
+ uuid, err = clusterInstance.VtctlclientProcess.ApplySchemaWithOutput(keyspaceName, sqlQuery, ddlStrategy)
+ assert.NoError(t, err)
+ }
+ uuid = strings.TrimSpace(uuid)
+ fmt.Println("# Generated UUID (for debug purposes):")
+ fmt.Printf("<%s>\n", uuid)
+
+ strategy, _, err := schema.ParseDDLStrategy(ddlStrategy)
+ assert.NoError(t, err)
+
+ if !strategy.IsDirect() {
+ time.Sleep(time.Second * 20)
+ }
+
+ if expectColumn != "" {
+ checkMigratedTable(t, tableName, expectColumn)
+ }
+ return uuid
+}
+
+// checkTables checks the number of tables in the first two shards.
+func checkTables(t *testing.T, showTableName string, expectCount int) {
+ for i := range clusterInstance.Keyspaces[0].Shards {
+ checkTablesCount(t, clusterInstance.Keyspaces[0].Shards[i].Vttablets[0], showTableName, expectCount)
+ }
+}
+
+// checkTablesCount checks the number of tables in the given tablet
+func checkTablesCount(t *testing.T, tablet *cluster.Vttablet, showTableName string, expectCount int) {
+ query := fmt.Sprintf(`show tables like '%%%s%%';`, showTableName)
+ queryResult, err := tablet.VttabletProcess.QueryTablet(query, keyspaceName, true)
+ require.Nil(t, err)
+ assert.Equal(t, expectCount, len(queryResult.Rows))
+}
+
+// checkMigratedTables checks the CREATE STATEMENT of a table after migration
+func checkMigratedTable(t *testing.T, tableName, expectColumn string) {
+ for i := range clusterInstance.Keyspaces[0].Shards {
+ createStatement := getCreateTableStatement(t, clusterInstance.Keyspaces[0].Shards[i].Vttablets[0], tableName)
+ assert.Contains(t, createStatement, expectColumn)
+ }
+}
+
+// getCreateTableStatement returns the CREATE TABLE statement for a given table
+func getCreateTableStatement(t *testing.T, tablet *cluster.Vttablet, tableName string) (statement string) {
+ queryResult, err := tablet.VttabletProcess.QueryTablet(fmt.Sprintf("show create table %s;", tableName), keyspaceName, true)
+ require.Nil(t, err)
+
+ assert.Equal(t, len(queryResult.Rows), 1)
+ assert.Equal(t, len(queryResult.Rows[0]), 2) // table name, create statement
+ statement = queryResult.Rows[0][1].ToString()
+ return statement
+}
diff --git a/go/test/endtoend/onlineddl/vrepl_stress/onlineddl_vrepl_mini_stress_test.go b/go/test/endtoend/onlineddl/vrepl_stress/onlineddl_vrepl_mini_stress_test.go
new file mode 100644
index 00000000000..1189619e2d4
--- /dev/null
+++ b/go/test/endtoend/onlineddl/vrepl_stress/onlineddl_vrepl_mini_stress_test.go
@@ -0,0 +1,525 @@
+/*
+Copyright 2019 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package vreplstress
+
+import (
+ "context"
+ "flag"
+ "fmt"
+ "math/rand"
+ "os"
+ "path"
+ "strings"
+ "sync"
+ "sync/atomic"
+ "testing"
+ "time"
+
+ "vitess.io/vitess/go/mysql"
+ "vitess.io/vitess/go/vt/log"
+ "vitess.io/vitess/go/vt/schema"
+
+ "vitess.io/vitess/go/test/endtoend/cluster"
+ "vitess.io/vitess/go/test/endtoend/onlineddl"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+)
+
+type WriteMetrics struct {
+ mu sync.Mutex
+ insertsAttempts, insertsFailures, insertsNoops, inserts int64
+ updatesAttempts, updatesFailures, updatesNoops, updates int64
+ deletesAttempts, deletesFailures, deletesNoops, deletes int64
+}
+
+func (w *WriteMetrics) Clear() {
+ w.mu.Lock()
+ defer w.mu.Unlock()
+
+ w.inserts = 0
+ w.updates = 0
+ w.deletes = 0
+
+ w.insertsAttempts = 0
+ w.insertsFailures = 0
+ w.insertsNoops = 0
+
+ w.updatesAttempts = 0
+ w.updatesFailures = 0
+ w.updatesNoops = 0
+
+ w.deletesAttempts = 0
+ w.deletesFailures = 0
+ w.deletesNoops = 0
+}
+
+func (w *WriteMetrics) String() string {
+ return fmt.Sprintf(`WriteMetrics: inserts-deletes=%d, updates-deletes=%d,
+insertsAttempts=%d, insertsFailures=%d, insertsNoops=%d, inserts=%d,
+updatesAttempts=%d, updatesFailures=%d, updatesNoops=%d, updates=%d,
+deletesAttempts=%d, deletesFailures=%d, deletesNoops=%d, deletes=%d,
+`,
+ w.inserts-w.deletes, w.updates-w.deletes,
+ w.insertsAttempts, w.insertsFailures, w.insertsNoops, w.inserts,
+ w.updatesAttempts, w.updatesFailures, w.updatesNoops, w.updates,
+ w.deletesAttempts, w.deletesFailures, w.deletesNoops, w.deletes,
+ )
+}
+
+var (
+ clusterInstance *cluster.LocalProcessCluster
+ vtParams mysql.ConnParams
+
+ hostname = "localhost"
+ keyspaceName = "ks"
+ cell = "zone1"
+ schemaChangeDirectory = ""
+ tableName = `stress_test`
+ createStatement = `
+ CREATE TABLE stress_test (
+ id bigint(20) not null,
+ rand_val varchar(32) null default '',
+ hint_col varchar(64) not null default '',
+ created_timestamp timestamp not null default current_timestamp,
+ updates int unsigned not null default 0,
+ PRIMARY KEY (id),
+ key created_idx(created_timestamp),
+ key updates_idx(updates)
+ ) ENGINE=InnoDB
+ `
+ alterHintStatement = `
+ ALTER TABLE stress_test modify hint_col varchar(64) not null default '%s'
+ `
+ insertRowStatement = `
+ INSERT IGNORE INTO stress_test (id, rand_val) VALUES (%d, left(md5(rand()), 8))
+ `
+ updateRowStatement = `
+ UPDATE stress_test SET updates=updates+1 WHERE id=%d
+ `
+ deleteRowStatement = `
+ DELETE FROM stress_test WHERE id=%d AND updates=1
+ `
+ // We use CAST(SUM(updates) AS SIGNED) because SUM() returns a DECIMAL datatype, and we want to read a SIGNED INTEGER type
+ selectCountRowsStatement = `
+ SELECT COUNT(*) AS num_rows, CAST(SUM(updates) AS SIGNED) AS sum_updates FROM stress_test
+ `
+ truncateStatement = `
+ TRUNCATE TABLE stress_test
+ `
+ writeMetrics WriteMetrics
+)
+
+const (
+ maxTableRows = 4096
+ maxConcurrency = 5
+ countIterations = 5
+)
+
+func TestMain(m *testing.M) {
+ defer cluster.PanicHandler(nil)
+ flag.Parse()
+
+ exitcode, err := func() (int, error) {
+ clusterInstance = cluster.NewCluster(cell, hostname)
+ schemaChangeDirectory = path.Join("/tmp", fmt.Sprintf("schema_change_dir_%d", clusterInstance.GetAndReserveTabletUID()))
+ defer os.RemoveAll(schemaChangeDirectory)
+ defer clusterInstance.Teardown()
+
+ if _, err := os.Stat(schemaChangeDirectory); os.IsNotExist(err) {
+ _ = os.Mkdir(schemaChangeDirectory, 0700)
+ }
+
+ clusterInstance.VtctldExtraArgs = []string{
+ "-schema_change_dir", schemaChangeDirectory,
+ "-schema_change_controller", "local",
+ "-schema_change_check_interval", "1"}
+
+ clusterInstance.VtTabletExtraArgs = []string{
+ "-enable-lag-throttler",
+ "-throttle_threshold", "1s",
+ "-heartbeat_enable",
+ "-heartbeat_interval", "250ms",
+ "-migration_check_interval", "5s",
+ }
+ clusterInstance.VtGateExtraArgs = []string{
+ "-ddl_strategy", "online",
+ }
+
+ if err := clusterInstance.StartTopo(); err != nil {
+ return 1, err
+ }
+
+ // Start keyspace
+ keyspace := &cluster.Keyspace{
+ Name: keyspaceName,
+ }
+
+ // No need for replicas in this stress test
+ if err := clusterInstance.StartKeyspace(*keyspace, []string{"1"}, 0, false); err != nil {
+ return 1, err
+ }
+
+ vtgateInstance := clusterInstance.NewVtgateInstance()
+ // set the gateway we want to use
+ vtgateInstance.GatewayImplementation = "tabletgateway"
+ // Start vtgate
+ if err := vtgateInstance.Setup(); err != nil {
+ return 1, err
+ }
+ // ensure it is torn down during cluster TearDown
+ clusterInstance.VtgateProcess = *vtgateInstance
+ vtParams = mysql.ConnParams{
+ Host: clusterInstance.Hostname,
+ Port: clusterInstance.VtgateMySQLPort,
+ }
+
+ return m.Run(), nil
+ }()
+ if err != nil {
+ fmt.Printf("%v\n", err)
+ os.Exit(1)
+ } else {
+ os.Exit(exitcode)
+ }
+
+}
+
+func TestSchemaChange(t *testing.T) {
+ defer cluster.PanicHandler(t)
+
+ shards := clusterInstance.Keyspaces[0].Shards
+ require.Equal(t, 1, len(shards))
+
+ t.Run("create schema", func(t *testing.T) {
+ assert.Equal(t, 1, len(clusterInstance.Keyspaces[0].Shards))
+ testWithInitialSchema(t)
+ })
+ for i := 0; i < countIterations; i++ {
+ // This first tests the general functionality of initializing the table with data,
+ // no concurrency involved. Just counting.
+ testName := fmt.Sprintf("init table %d/%d", (i + 1), countIterations)
+ t.Run(testName, func(t *testing.T) {
+ initTable(t)
+ testSelectTableMetrics(t)
+ })
+ }
+ for i := 0; i < countIterations; i++ {
+ // This tests running a workload on the table, then comparing expected metrics with
+ // actual table metrics. All this without any ALTER TABLE: this is to validate
+ // that our testing/metrics logic is sound in the first place.
+ testName := fmt.Sprintf("workload without ALTER TABLE %d/%d", (i + 1), countIterations)
+ t.Run(testName, func(t *testing.T) {
+ ctx, cancel := context.WithCancel(context.Background())
+ initTable(t)
+ var wg sync.WaitGroup
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+ runMultipleConnections(ctx, t)
+ }()
+ time.Sleep(5 * time.Second)
+ cancel() // will cause runMultipleConnections() to terminate
+ wg.Wait()
+ testSelectTableMetrics(t)
+ })
+ }
+ t.Run("ALTER TABLE without workload", func(t *testing.T) {
+ // A single ALTER TABLE. Generally this is covered in endtoend/onlineddl_vrepl,
+ // but we wish to verify the ALTER statement used in these tests is sound
+ initTable(t)
+ hint := "hint-alter-without-workload"
+ uuid := testOnlineDDLStatement(t, fmt.Sprintf(alterHintStatement, hint), "online", "vtgate", hint)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ testSelectTableMetrics(t)
+ })
+
+ for i := 0; i < countIterations; i++ {
+ // Finally, this is the real test:
+ // We populate a table, and begin a concurrent workload (this is the "mini stress")
+ // We then ALTER TABLE via vreplication.
+ // Once convinced ALTER TABLE is complete, we stop the workload.
+ // We then compare expected metrics with table metrics. If they agree, then
+ // the vreplication/ALTER TABLE did not corrupt our data and we are happy.
+ testName := fmt.Sprintf("ALTER TABLE with workload %d/%d", (i + 1), countIterations)
+ t.Run(testName, func(t *testing.T) {
+ ctx, cancel := context.WithCancel(context.Background())
+ initTable(t)
+ var wg sync.WaitGroup
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+ runMultipleConnections(ctx, t)
+ }()
+ hint := fmt.Sprintf("hint-alter-with-workload-%d", i)
+ uuid := testOnlineDDLStatement(t, fmt.Sprintf(alterHintStatement, hint), "online", "vtgate", hint)
+ onlineddl.CheckMigrationStatus(t, &vtParams, shards, uuid, schema.OnlineDDLStatusComplete)
+ cancel() // will cause runMultipleConnections() to terminate
+ wg.Wait()
+ testSelectTableMetrics(t)
+ })
+ }
+}
+
+func testWithInitialSchema(t *testing.T) {
+ // Create the stress table
+ err := clusterInstance.VtctlclientProcess.ApplySchema(keyspaceName, createStatement)
+ require.Nil(t, err)
+
+ // Check if table is created
+ checkTable(t, tableName)
+}
+
+// testOnlineDDLStatement runs an online DDL, ALTER statement
+func testOnlineDDLStatement(t *testing.T, alterStatement string, ddlStrategy string, executeStrategy string, expectHint string) (uuid string) {
+ if executeStrategy == "vtgate" {
+ row := onlineddl.VtgateExecDDL(t, &vtParams, ddlStrategy, alterStatement, "").Named().Row()
+ if row != nil {
+ uuid = row.AsString("uuid", "")
+ }
+ } else {
+ var err error
+ uuid, err = clusterInstance.VtctlclientProcess.ApplySchemaWithOutput(keyspaceName, alterStatement, ddlStrategy)
+ assert.NoError(t, err)
+ }
+ uuid = strings.TrimSpace(uuid)
+ fmt.Println("# Generated UUID (for debug purposes):")
+ fmt.Printf("<%s>\n", uuid)
+
+ strategy, _, err := schema.ParseDDLStrategy(ddlStrategy)
+ assert.NoError(t, err)
+
+ if !strategy.IsDirect() {
+ time.Sleep(time.Second * 20)
+ }
+
+ if expectHint != "" {
+ checkMigratedTable(t, tableName, expectHint)
+ }
+ return uuid
+}
+
+// checkTable checks the number of tables in the first two shards.
+func checkTable(t *testing.T, showTableName string) {
+ for i := range clusterInstance.Keyspaces[0].Shards {
+ checkTablesCount(t, clusterInstance.Keyspaces[0].Shards[i].Vttablets[0], showTableName, 1)
+ }
+}
+
+// checkTablesCount checks the number of tables in the given tablet
+func checkTablesCount(t *testing.T, tablet *cluster.Vttablet, showTableName string, expectCount int) {
+ query := fmt.Sprintf(`show tables like '%%%s%%';`, showTableName)
+ queryResult, err := tablet.VttabletProcess.QueryTablet(query, keyspaceName, true)
+ require.Nil(t, err)
+ assert.Equal(t, expectCount, len(queryResult.Rows))
+}
+
+// checkMigratedTables checks the CREATE STATEMENT of a table after migration
+func checkMigratedTable(t *testing.T, tableName, expectHint string) {
+ for i := range clusterInstance.Keyspaces[0].Shards {
+ createStatement := getCreateTableStatement(t, clusterInstance.Keyspaces[0].Shards[i].Vttablets[0], tableName)
+ assert.Contains(t, createStatement, expectHint)
+ }
+}
+
+// getCreateTableStatement returns the CREATE TABLE statement for a given table
+func getCreateTableStatement(t *testing.T, tablet *cluster.Vttablet, tableName string) (statement string) {
+ queryResult, err := tablet.VttabletProcess.QueryTablet(fmt.Sprintf("show create table %s;", tableName), keyspaceName, true)
+ require.Nil(t, err)
+
+ assert.Equal(t, len(queryResult.Rows), 1)
+ assert.Equal(t, len(queryResult.Rows[0]), 2) // table name, create statement
+ statement = queryResult.Rows[0][1].ToString()
+ return statement
+}
+
+func generateInsert(t *testing.T, conn *mysql.Conn) error {
+ id := rand.Int31n(int32(maxTableRows))
+ query := fmt.Sprintf(insertRowStatement, id)
+ qr, err := conn.ExecuteFetch(query, 1000, true)
+
+ func() {
+ writeMetrics.mu.Lock()
+ defer writeMetrics.mu.Unlock()
+
+ writeMetrics.insertsAttempts++
+ if err != nil {
+ writeMetrics.insertsFailures++
+ return
+ }
+ assert.Less(t, qr.RowsAffected, uint64(2))
+ if qr.RowsAffected == 0 {
+ writeMetrics.insertsNoops++
+ return
+ }
+ writeMetrics.inserts++
+ }()
+ return err
+}
+
+func generateUpdate(t *testing.T, conn *mysql.Conn) error {
+ id := rand.Int31n(int32(maxTableRows))
+ query := fmt.Sprintf(updateRowStatement, id)
+ qr, err := conn.ExecuteFetch(query, 1000, true)
+
+ func() {
+ writeMetrics.mu.Lock()
+ defer writeMetrics.mu.Unlock()
+
+ writeMetrics.updatesAttempts++
+ if err != nil {
+ writeMetrics.updatesFailures++
+ return
+ }
+ assert.Less(t, qr.RowsAffected, uint64(2))
+ if qr.RowsAffected == 0 {
+ writeMetrics.updatesNoops++
+ return
+ }
+ writeMetrics.updates++
+ }()
+ return err
+}
+
+func generateDelete(t *testing.T, conn *mysql.Conn) error {
+ id := rand.Int31n(int32(maxTableRows))
+ query := fmt.Sprintf(deleteRowStatement, id)
+ qr, err := conn.ExecuteFetch(query, 1000, true)
+
+ func() {
+ writeMetrics.mu.Lock()
+ defer writeMetrics.mu.Unlock()
+
+ writeMetrics.deletesAttempts++
+ if err != nil {
+ writeMetrics.deletesFailures++
+ return
+ }
+ assert.Less(t, qr.RowsAffected, uint64(2))
+ if qr.RowsAffected == 0 {
+ writeMetrics.deletesNoops++
+ return
+ }
+ writeMetrics.deletes++
+ }()
+ return err
+}
+
+func runSingleConnection(ctx context.Context, t *testing.T, done *int64) {
+ log.Infof("Running single connection")
+ conn, err := mysql.Connect(ctx, &vtParams)
+ require.Nil(t, err)
+ defer conn.Close()
+
+ _, err = conn.ExecuteFetch("set autocommit=1", 1000, true)
+ require.Nil(t, err)
+ _, err = conn.ExecuteFetch("set transaction isolation level read committed", 1000, true)
+ require.Nil(t, err)
+
+ for {
+ if atomic.LoadInt64(done) == 1 {
+ log.Infof("Terminating single connection")
+ return
+ }
+ switch rand.Int31n(3) {
+ case 0:
+ err = generateInsert(t, conn)
+ case 1:
+ err = generateUpdate(t, conn)
+ case 2:
+ err = generateDelete(t, conn)
+ }
+ if err != nil {
+ if strings.Contains(err.Error(), "disallowed due to rule: enforce blacklisted tables") {
+ err = nil
+ }
+ }
+ assert.Nil(t, err)
+ time.Sleep(10 * time.Millisecond)
+ }
+}
+
+func runMultipleConnections(ctx context.Context, t *testing.T) {
+ log.Infof("Running multiple connections")
+ var done int64
+ var wg sync.WaitGroup
+ for i := 0; i < maxConcurrency; i++ {
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+ runSingleConnection(ctx, t, &done)
+ }()
+ }
+ <-ctx.Done()
+ atomic.StoreInt64(&done, 1)
+ log.Infof("Running multiple connections: done")
+ wg.Wait()
+ log.Infof("All connections cancelled")
+}
+
+func initTable(t *testing.T) {
+ log.Infof("initTable begin")
+ defer log.Infof("initTable complete")
+
+ ctx := context.Background()
+ conn, err := mysql.Connect(ctx, &vtParams)
+ require.Nil(t, err)
+ defer conn.Close()
+
+ writeMetrics.Clear()
+ _, err = conn.ExecuteFetch(truncateStatement, 1000, true)
+ require.Nil(t, err)
+
+ for i := 0; i < maxTableRows/2; i++ {
+ generateInsert(t, conn)
+ }
+ for i := 0; i < maxTableRows/4; i++ {
+ generateUpdate(t, conn)
+ }
+ for i := 0; i < maxTableRows/4; i++ {
+ generateDelete(t, conn)
+ }
+}
+
+func testSelectTableMetrics(t *testing.T) {
+ writeMetrics.mu.Lock()
+ defer writeMetrics.mu.Unlock()
+
+ log.Infof("%s", writeMetrics.String())
+
+ ctx := context.Background()
+ conn, err := mysql.Connect(ctx, &vtParams)
+ require.Nil(t, err)
+ defer conn.Close()
+
+ rs, err := conn.ExecuteFetch(selectCountRowsStatement, 1000, true)
+ require.Nil(t, err)
+
+ row := rs.Named().Row()
+ require.NotNil(t, row)
+ log.Infof("testSelectTableMetrics, row: %v", row)
+ numRows := row.AsInt64("num_rows", 0)
+ sumUpdates := row.AsInt64("sum_updates", 0)
+
+ assert.NotZero(t, numRows)
+ assert.NotZero(t, sumUpdates)
+ assert.NotZero(t, writeMetrics.inserts)
+ assert.NotZero(t, writeMetrics.deletes)
+ assert.NotZero(t, writeMetrics.updates)
+ assert.Equal(t, writeMetrics.inserts-writeMetrics.deletes, numRows)
+ assert.Equal(t, writeMetrics.updates-writeMetrics.deletes, sumUpdates) // because we DELETE WHERE updates=1
+}
diff --git a/go/test/endtoend/onlineddl/vtgate_util.go b/go/test/endtoend/onlineddl/vtgate_util.go
new file mode 100644
index 00000000000..833f155ec8f
--- /dev/null
+++ b/go/test/endtoend/onlineddl/vtgate_util.go
@@ -0,0 +1,135 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package onlineddl
+
+import (
+ "context"
+ "fmt"
+ "os"
+ "testing"
+
+ "vitess.io/vitess/go/mysql"
+ "vitess.io/vitess/go/sqltypes"
+ "vitess.io/vitess/go/vt/schema"
+
+ "vitess.io/vitess/go/test/endtoend/cluster"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+)
+
+// VtgateExecQuery runs a query on VTGate using given query params
+func VtgateExecQuery(t *testing.T, vtParams *mysql.ConnParams, query string, expectError string) *sqltypes.Result {
+ t.Helper()
+
+ ctx := context.Background()
+ conn, err := mysql.Connect(ctx, vtParams)
+ require.Nil(t, err)
+ defer conn.Close()
+
+ qr, err := conn.ExecuteFetch(query, 1000, true)
+ if expectError == "" {
+ require.NoError(t, err)
+ } else {
+ require.Error(t, err, "error should not be nil")
+ assert.Contains(t, err.Error(), expectError, "Unexpected error")
+ }
+ return qr
+}
+
+// VtgateExecDDL executes a DDL query with given strategy
+func VtgateExecDDL(t *testing.T, vtParams *mysql.ConnParams, ddlStrategy string, query string, expectError string) *sqltypes.Result {
+ t.Helper()
+
+ ctx := context.Background()
+ conn, err := mysql.Connect(ctx, vtParams)
+ require.Nil(t, err)
+ defer conn.Close()
+
+ setSession := fmt.Sprintf("set @@ddl_strategy='%s'", ddlStrategy)
+ _, err = conn.ExecuteFetch(setSession, 1000, true)
+ assert.NoError(t, err)
+
+ qr, err := conn.ExecuteFetch(query, 1000, true)
+ if expectError == "" {
+ require.NoError(t, err)
+ } else {
+ require.Error(t, err, "error should not be nil")
+ assert.Contains(t, err.Error(), expectError, "Unexpected error")
+ }
+ return qr
+}
+
+// CheckRetryMigration attempts to retry a migration, and expects success/failure by counting affected rows
+func CheckRetryMigration(t *testing.T, vtParams *mysql.ConnParams, shards []cluster.Shard, uuid string, expectRetryPossible bool) {
+ retryQuery := fmt.Sprintf("alter vitess_migration '%s' retry", uuid)
+ r := VtgateExecQuery(t, vtParams, retryQuery, "")
+
+ if expectRetryPossible {
+ assert.Equal(t, len(shards), int(r.RowsAffected))
+ } else {
+ assert.Equal(t, int(0), int(r.RowsAffected))
+ }
+}
+
+// CheckCancelMigration attempts to cancel a migration, and expects success/failure by counting affected rows
+func CheckCancelMigration(t *testing.T, vtParams *mysql.ConnParams, shards []cluster.Shard, uuid string, expectCancelPossible bool) {
+ cancelQuery := fmt.Sprintf("alter vitess_migration '%s' cancel", uuid)
+ r := VtgateExecQuery(t, vtParams, cancelQuery, "")
+
+ if expectCancelPossible {
+ assert.Equal(t, len(shards), int(r.RowsAffected))
+ } else {
+ assert.Equal(t, int(0), int(r.RowsAffected))
+ }
+}
+
+// CheckCancelAllMigrations cancels all pending migrations and expect number of affected rows
+func CheckCancelAllMigrations(t *testing.T, vtParams *mysql.ConnParams, expectCount int) {
+ cancelQuery := "alter vitess_migration cancel all"
+ r := VtgateExecQuery(t, vtParams, cancelQuery, "")
+
+ assert.Equal(t, expectCount, int(r.RowsAffected))
+}
+
+// CheckMigrationStatus verifies that the migration indicated by given UUID has the given expected status
+func CheckMigrationStatus(t *testing.T, vtParams *mysql.ConnParams, shards []cluster.Shard, uuid string, expectStatus schema.OnlineDDLStatus) {
+ showQuery := fmt.Sprintf("show vitess_migrations like '%s'", uuid)
+ r := VtgateExecQuery(t, vtParams, showQuery, "")
+ fmt.Printf("# output for `%s`:\n", showQuery)
+ PrintQueryResult(os.Stdout, r)
+
+ count := 0
+ for _, row := range r.Named().Rows {
+ if row["migration_uuid"].ToString() == uuid && row["migration_status"].ToString() == string(expectStatus) {
+ count++
+ }
+ }
+ assert.Equal(t, len(shards), count)
+}
+
+// CheckMigrationArtifacts verifies given migration exists, and checks if it has artifacts
+func CheckMigrationArtifacts(t *testing.T, vtParams *mysql.ConnParams, shards []cluster.Shard, uuid string, expectArtifacts bool) {
+ showQuery := fmt.Sprintf("show vitess_migrations like '%s'", uuid)
+ r := VtgateExecQuery(t, vtParams, showQuery, "")
+
+ assert.Equal(t, len(shards), len(r.Named().Rows))
+ for _, row := range r.Named().Rows {
+ hasArtifacts := (row["artifacts"].ToString() != "")
+ assert.Equal(t, expectArtifacts, hasArtifacts)
+ }
+}
diff --git a/go/test/endtoend/preparestmt/main_test.go b/go/test/endtoend/preparestmt/main_test.go
index 15d27f19482..7d69b7dd801 100644
--- a/go/test/endtoend/preparestmt/main_test.go
+++ b/go/test/endtoend/preparestmt/main_test.go
@@ -190,9 +190,13 @@ func TestMain(m *testing.M) {
Name: keyspaceName,
SchemaSQL: sqlSchema,
}
+ uks := &cluster.Keyspace{Name: "uks"}
if err := clusterInstance.StartUnshardedKeyspace(*keyspace, 1, false); err != nil {
return 1, err
}
+ if err := clusterInstance.StartUnshardedKeyspace(*uks, 0, false); err != nil {
+ return 1, err
+ }
vtgateInstance := clusterInstance.NewVtgateInstance()
// set the gateway and other params we want to use
diff --git a/go/test/endtoend/preparestmt/stmt_methods_test.go b/go/test/endtoend/preparestmt/stmt_methods_test.go
index 14114a903b1..a2e079b579b 100644
--- a/go/test/endtoend/preparestmt/stmt_methods_test.go
+++ b/go/test/endtoend/preparestmt/stmt_methods_test.go
@@ -17,6 +17,7 @@ limitations under the License.
package preparestmt
import (
+ "bytes"
"database/sql"
"fmt"
"strconv"
@@ -38,6 +39,22 @@ func TestSelect(t *testing.T) {
selectWhere(t, dbo, "")
}
+func TestSelectDatabase(t *testing.T) {
+ defer cluster.PanicHandler(t)
+ dbo := Connect(t)
+ defer dbo.Close()
+ prepare, err := dbo.Prepare("select database()")
+ require.NoError(t, err)
+ rows, err := prepare.Query()
+ require.NoError(t, err)
+ defer rows.Close()
+ var resultBytes sql.RawBytes
+ require.True(t, rows.Next(), "no rows found")
+ err = rows.Scan(&resultBytes)
+ require.NoError(t, err)
+ assert.Equal(t, string(resultBytes), "test_keyspace")
+}
+
// TestInsertUpdateDelete validates all insert, update and
// delete method on prepared statements.
func TestInsertUpdateDelete(t *testing.T) {
@@ -106,7 +123,7 @@ func TestInsertUpdateDelete(t *testing.T) {
func testReplica(t *testing.T) {
replicaConn := Connect(t, "")
require.NotNil(t, replicaConn, "unable to connect")
- _, err := replicaConn.Exec("use @replica")
+ _, err := replicaConn.Exec(fmt.Sprintf("use %s@replica", dbInfo.KeyspaceName))
require.NoError(t, err)
tx, err := replicaConn.Begin()
require.NoError(t, err, "error creating replica transaction")
@@ -255,3 +272,110 @@ func TestWrongTableName(t *testing.T) {
defer dbo.Close()
execWithError(t, dbo, []uint16{1146}, "select * from teseting_table;")
}
+
+type columns struct {
+ columnName string
+ dataType string
+ fullDataType string
+ characterMaximumLength sql.NullInt64
+ numericPrecision sql.NullInt64
+ numericScale sql.NullInt64
+ datetimePrecision sql.NullInt64
+ columnDefault sql.NullString
+ isNullable string
+ extra string
+ tableName string
+}
+
+func (c *columns) ToString() string {
+ buf := bytes.Buffer{}
+ buf.WriteString(fmt.Sprintf("|%s| \t |%s| \t |%s| \t |%s| \t |%s| \t |%s| \t |%s| \t |%s| \t |%s| \t |%s| \t |%s|",
+ c.columnName,
+ c.dataType,
+ c.fullDataType,
+ getIntToString(c.characterMaximumLength),
+ getIntToString(c.numericPrecision),
+ getIntToString(c.numericScale),
+ getIntToString(c.datetimePrecision),
+ getStringToString(c.columnDefault),
+ c.isNullable,
+ c.extra,
+ c.tableName))
+ return buf.String()
+}
+
+func getIntToString(x sql.NullInt64) string {
+ if x.Valid {
+ return fmt.Sprintf("%d", x.Int64)
+ }
+ return "NULL"
+}
+
+func getStringToString(x sql.NullString) string {
+ if x.Valid {
+ return x.String
+ }
+ return "NULL"
+}
+
+func TestSelectDBA(t *testing.T) {
+ defer cluster.PanicHandler(t)
+ dbo := Connect(t)
+ defer dbo.Close()
+
+ _, err := dbo.Exec("use uks")
+ require.NoError(t, err)
+
+ _, err = dbo.Exec("CREATE TABLE `a` (`one` int NOT NULL,`two` int NOT NULL,PRIMARY KEY(`one`, `two`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4")
+ require.NoError(t, err)
+
+ prepare, err := dbo.Prepare(`SELECT
+ column_name column_name,
+ data_type data_type,
+ column_type full_data_type,
+ character_maximum_length character_maximum_length,
+ numeric_precision numeric_precision,
+ numeric_scale numeric_scale,
+ datetime_precision datetime_precision,
+ column_default column_default,
+ is_nullable is_nullable,
+ extra extra,
+ table_name table_name
+ FROM information_schema.columns
+ WHERE table_schema = ?
+ ORDER BY ordinal_position`)
+ require.NoError(t, err)
+ rows, err := prepare.Query("uks")
+ require.NoError(t, err)
+ defer rows.Close()
+ var rec columns
+ rowCount := 0
+ for rows.Next() {
+ err := rows.Scan(
+ &rec.columnName,
+ &rec.dataType,
+ &rec.fullDataType,
+ &rec.characterMaximumLength,
+ &rec.numericPrecision,
+ &rec.numericScale,
+ &rec.datetimePrecision,
+ &rec.columnDefault,
+ &rec.isNullable,
+ &rec.extra,
+ &rec.tableName)
+ require.NoError(t, err)
+ assert.True(t, rec.columnName == "one" || rec.columnName == "two")
+ assert.Equal(t, "int", rec.dataType)
+ assert.True(t, rec.fullDataType == "int" || rec.fullDataType == "int(11)")
+ assert.False(t, rec.characterMaximumLength.Valid)
+ assert.EqualValues(t, 10, rec.numericPrecision.Int64)
+ assert.EqualValues(t, 0, rec.numericScale.Int64)
+ assert.False(t, rec.datetimePrecision.Valid)
+ assert.False(t, rec.columnDefault.Valid)
+ assert.Equal(t, "NO", rec.isNullable)
+ assert.Equal(t, "", rec.extra)
+ assert.Equal(t, "a", rec.tableName)
+ rowCount++
+ }
+ require.Equal(t, 2, rowCount)
+}
diff --git a/go/test/endtoend/recovery/unshardedrecovery/recovery.go b/go/test/endtoend/recovery/unshardedrecovery/recovery.go
index 336b46812a7..370e2b7fb75 100644
--- a/go/test/endtoend/recovery/unshardedrecovery/recovery.go
+++ b/go/test/endtoend/recovery/unshardedrecovery/recovery.go
@@ -100,6 +100,11 @@ func TestMainImpl(m *testing.M) {
sql := string(initDb)
newInitDBFile = path.Join(localCluster.TmpDirectory, "init_db_with_passwords.sql")
sql = sql + initialsharding.GetPasswordUpdateSQL(localCluster)
+ // https://github.com/vitessio/vitess/issues/8315
+ oldAlterTableMode := `
+SET GLOBAL old_alter_table = ON;
+`
+ sql = sql + oldAlterTableMode
ioutil.WriteFile(newInitDBFile, []byte(sql), 0666)
extraArgs := []string{"-db-credentials-file", dbCredentialFile}
diff --git a/go/test/endtoend/reparent/reparent_test.go b/go/test/endtoend/reparent/reparent_test.go
index c8f0719dbb9..8363d5eb1f1 100644
--- a/go/test/endtoend/reparent/reparent_test.go
+++ b/go/test/endtoend/reparent/reparent_test.go
@@ -117,6 +117,23 @@ func TestReparentNoChoiceDownMaster(t *testing.T) {
resurrectTablet(ctx, t, tab1)
}
+func TestTrivialERS(t *testing.T) {
+ defer cluster.PanicHandler(t)
+ setupReparentCluster(t)
+ defer teardownCluster()
+
+ confirmReplication(t, tab1, []*cluster.Vttablet{tab2, tab3, tab4})
+
+ // We should be able to do a series of ERS-es, even if nothing
+ // is down, without issue
+ for i := 1; i <= 4; i++ {
+ out, err := ers(t, nil, "30s")
+ log.Infof("ERS loop %d. EmergencyReparentShard Output: %v", i, out)
+ require.NoError(t, err)
+ time.Sleep(5 * time.Second)
+ }
+}
+
func TestReparentIgnoreReplicas(t *testing.T) {
defer cluster.PanicHandler(t)
setupReparentCluster(t)
@@ -204,7 +221,7 @@ func TestReparentReplicaOffline(t *testing.T) {
// Perform a graceful reparent operation.
out, err := prsWithTimeout(t, tab2, false, "", "31s")
require.Error(t, err)
- assert.Contains(t, out, fmt.Sprintf("tablet %s SetMaster failed", tab4.Alias))
+ assert.Contains(t, out, fmt.Sprintf("tablet %s failed to SetMaster", tab4.Alias))
checkMasterTablet(t, tab2)
}
@@ -345,7 +362,7 @@ func TestReparentWithDownReplica(t *testing.T) {
// Perform a graceful reparent operation. It will fail as one tablet is down.
out, err := prs(t, tab2)
require.Error(t, err)
- assert.Contains(t, out, fmt.Sprintf("tablet %s SetMaster failed", tab3.Alias))
+ assert.Contains(t, out, fmt.Sprintf("tablet %s failed to SetMaster", tab3.Alias))
// insert data into the new master, check the connected replica work
confirmReplication(t, tab2, []*cluster.Vttablet{tab1, tab4})
@@ -441,5 +458,5 @@ func TestReparentDoesntHangIfMasterFails(t *testing.T) {
// insert. The replicas should then abort right away.
out, err := prs(t, tab2)
require.Error(t, err)
- assert.Contains(t, out, "master failed to PopulateReparentJournal")
+ assert.Contains(t, out, "primary failed to PopulateReparentJournal")
}
diff --git a/go/test/endtoend/tabletmanager/commands_test.go b/go/test/endtoend/tabletmanager/commands_test.go
index 105a127b6c5..92aa0dc3ea4 100644
--- a/go/test/endtoend/tabletmanager/commands_test.go
+++ b/go/test/endtoend/tabletmanager/commands_test.go
@@ -120,9 +120,8 @@ func assertExcludeFields(t *testing.T, qr string) {
err := json.Unmarshal([]byte(qr), &resultMap)
require.Nil(t, err)
- rowsAffected := resultMap["rows_affected"]
- want := float64(2)
- assert.Equal(t, want, rowsAffected)
+ rows := resultMap["rows"].([]interface{})
+ assert.Equal(t, 2, len(rows))
fields := resultMap["fields"]
assert.NotContainsf(t, fields, "name", "name should not be in field list")
diff --git a/go/test/endtoend/tabletmanager/custom_rule_topo_test.go b/go/test/endtoend/tabletmanager/custom_rule_topo_test.go
index 0ff2dced4db..bc8daacf052 100644
--- a/go/test/endtoend/tabletmanager/custom_rule_topo_test.go
+++ b/go/test/endtoend/tabletmanager/custom_rule_topo_test.go
@@ -83,9 +83,8 @@ func TestTopoCustomRule(t *testing.T) {
err = json.Unmarshal([]byte(result), &resultMap)
require.NoError(t, err)
- rowsAffected := resultMap["rows_affected"]
- want := float64(2)
- assert.Equal(t, want, rowsAffected)
+ rowsAffected := resultMap["rows"].([]interface{})
+ assert.EqualValues(t, 2, len(rowsAffected))
// Now update the topocustomrule file.
data = []byte(`[{
diff --git a/go/test/endtoend/tabletmanager/throttler/throttler_test.go b/go/test/endtoend/tabletmanager/throttler/throttler_test.go
index cc4cfb7612d..5a5697e615b 100644
--- a/go/test/endtoend/tabletmanager/throttler/throttler_test.go
+++ b/go/test/endtoend/tabletmanager/throttler/throttler_test.go
@@ -32,8 +32,8 @@ import (
var (
clusterInstance *cluster.LocalProcessCluster
- masterTablet cluster.Vttablet
- replicaTablet cluster.Vttablet
+ primaryTablet *cluster.Vttablet
+ replicaTablet *cluster.Vttablet
hostname = "localhost"
keyspaceName = "ks"
cell = "zone1"
@@ -65,8 +65,16 @@ var (
}
}`
- httpClient = base.SetupHTTPClient(time.Second)
- checkAPIPath = "throttler/check"
+ httpClient = base.SetupHTTPClient(time.Second)
+ checkAPIPath = "throttler/check"
+ checkSelfAPIPath = "throttler/check-self"
+)
+
+const (
+ throttlerInitWait = 10 * time.Second
+ accumulateLagWait = 2 * time.Second
+ throttlerRefreshIntervalWait = 12 * time.Second
+ replicationCatchUpWait = 5 * time.Second
)
func TestMain(m *testing.M) {
@@ -89,6 +97,7 @@ func TestMain(m *testing.M) {
"-watch_replication_stream",
"-enable_replication_reporter",
"-enable-lag-throttler",
+ "-throttle_threshold", "1s",
"-heartbeat_enable",
"-heartbeat_interval", "250ms",
}
@@ -110,9 +119,9 @@ func TestMain(m *testing.M) {
tablets := clusterInstance.Keyspaces[0].Shards[0].Vttablets
for _, tablet := range tablets {
if tablet.Type == "master" {
- masterTablet = *tablet
+ primaryTablet = tablet
} else if tablet.Type != "rdonly" {
- replicaTablet = *tablet
+ replicaTablet = tablet
}
}
@@ -121,8 +130,12 @@ func TestMain(m *testing.M) {
os.Exit(exitCode)
}
-func throttleCheck() (*http.Response, error) {
- return httpClient.Head(fmt.Sprintf("http://localhost:%d/%s", masterTablet.HTTPPort, checkAPIPath))
+func throttleCheck(tablet *cluster.Vttablet) (*http.Response, error) {
+ return httpClient.Head(fmt.Sprintf("http://localhost:%d/%s", tablet.HTTPPort, checkAPIPath))
+}
+
+func throttleCheckSelf(tablet *cluster.Vttablet) (*http.Response, error) {
+ return httpClient.Head(fmt.Sprintf("http://localhost:%d/%s", tablet.HTTPPort, checkSelfAPIPath))
}
func TestThrottlerBeforeMetricsCollected(t *testing.T) {
@@ -130,20 +143,34 @@ func TestThrottlerBeforeMetricsCollected(t *testing.T) {
// Immediately after startup, we expect this response:
// {"StatusCode":404,"Value":0,"Threshold":0,"Message":"No such metric"}
- resp, err := throttleCheck()
- assert.NoError(t, err)
- assert.Equal(t, http.StatusNotFound, resp.StatusCode)
+ {
+ resp, err := throttleCheck(primaryTablet)
+ assert.NoError(t, err)
+ assert.Equal(t, http.StatusNotFound, resp.StatusCode)
+ }
}
func TestThrottlerAfterMetricsCollected(t *testing.T) {
defer cluster.PanicHandler(t)
- time.Sleep(10 * time.Second)
+ time.Sleep(throttlerInitWait)
// By this time metrics will have been collected. We expect no lag, and something like:
// {"StatusCode":200,"Value":0.282278,"Threshold":1,"Message":""}
- resp, err := throttleCheck()
- assert.NoError(t, err)
- assert.Equal(t, http.StatusOK, resp.StatusCode)
+ {
+ resp, err := throttleCheck(primaryTablet)
+ assert.NoError(t, err)
+ assert.Equal(t, http.StatusOK, resp.StatusCode)
+ }
+ {
+ resp, err := throttleCheckSelf(primaryTablet)
+ assert.NoError(t, err)
+ assert.Equal(t, http.StatusOK, resp.StatusCode)
+ }
+ {
+ resp, err := throttleCheckSelf(replicaTablet)
+ assert.NoError(t, err)
+ assert.Equal(t, http.StatusOK, resp.StatusCode)
+ }
}
func TestLag(t *testing.T) {
@@ -153,22 +180,47 @@ func TestLag(t *testing.T) {
err := clusterInstance.VtctlclientProcess.ExecuteCommand("StopReplication", replicaTablet.Alias)
assert.NoError(t, err)
- time.Sleep(2 * time.Second)
+ time.Sleep(accumulateLagWait)
// Lag will have accumulated
// {"StatusCode":429,"Value":4.864921,"Threshold":1,"Message":"Threshold exceeded"}
- resp, err := throttleCheck()
- assert.NoError(t, err)
- assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode)
+ {
+ resp, err := throttleCheck(primaryTablet)
+ assert.NoError(t, err)
+ assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode)
+ }
+ {
+ resp, err := throttleCheckSelf(primaryTablet)
+ assert.NoError(t, err)
+ // self (on primary) is unaffected by replication lag
+ assert.Equal(t, http.StatusOK, resp.StatusCode)
+ }
+ {
+ resp, err := throttleCheckSelf(replicaTablet)
+ assert.NoError(t, err)
+ assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode)
+ }
}
{
err := clusterInstance.VtctlclientProcess.ExecuteCommand("StartReplication", replicaTablet.Alias)
assert.NoError(t, err)
- time.Sleep(5 * time.Second)
+ time.Sleep(replicationCatchUpWait)
// Restore
- resp, err := throttleCheck()
- assert.NoError(t, err)
- assert.Equal(t, http.StatusOK, resp.StatusCode)
+ {
+ resp, err := throttleCheck(primaryTablet)
+ assert.NoError(t, err)
+ assert.Equal(t, http.StatusOK, resp.StatusCode)
+ }
+ {
+ resp, err := throttleCheckSelf(primaryTablet)
+ assert.NoError(t, err)
+ assert.Equal(t, http.StatusOK, resp.StatusCode)
+ }
+ {
+ resp, err := throttleCheckSelf(replicaTablet)
+ assert.NoError(t, err)
+ assert.Equal(t, http.StatusOK, resp.StatusCode)
+ }
}
}
@@ -178,10 +230,10 @@ func TestNoReplicas(t *testing.T) {
err := clusterInstance.VtctlclientProcess.ExecuteCommand("ChangeTabletType", replicaTablet.Alias, "RDONLY")
assert.NoError(t, err)
- time.Sleep(10 * time.Second)
+ time.Sleep(throttlerRefreshIntervalWait)
// This makes no REPLICA servers available. We expect something like:
// {"StatusCode":200,"Value":0,"Threshold":1,"Message":""}
- resp, err := throttleCheck()
+ resp, err := throttleCheck(primaryTablet)
assert.NoError(t, err)
assert.Equal(t, http.StatusOK, resp.StatusCode)
}
@@ -189,9 +241,9 @@ func TestNoReplicas(t *testing.T) {
err := clusterInstance.VtctlclientProcess.ExecuteCommand("ChangeTabletType", replicaTablet.Alias, "REPLICA")
assert.NoError(t, err)
- time.Sleep(10 * time.Second)
+ time.Sleep(throttlerRefreshIntervalWait)
// Restore valid replica
- resp, err := throttleCheck()
+ resp, err := throttleCheck(primaryTablet)
assert.NoError(t, err)
assert.Equal(t, http.StatusOK, resp.StatusCode)
}
diff --git a/go/test/endtoend/tabletmanager/throttler_custom_config/throttler_test.go b/go/test/endtoend/tabletmanager/throttler_custom_config/throttler_test.go
new file mode 100644
index 00000000000..0f03bed0e62
--- /dev/null
+++ b/go/test/endtoend/tabletmanager/throttler_custom_config/throttler_test.go
@@ -0,0 +1,242 @@
+/*
+Copyright 2020 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+package master
+
+import (
+ "context"
+ "flag"
+ "fmt"
+ "net/http"
+ "os"
+ "testing"
+ "time"
+
+ "vitess.io/vitess/go/mysql"
+ "vitess.io/vitess/go/sqltypes"
+ "vitess.io/vitess/go/vt/vttablet/tabletserver/throttle/base"
+
+ "vitess.io/vitess/go/test/endtoend/cluster"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/stretchr/testify/require"
+)
+
+var (
+ clusterInstance *cluster.LocalProcessCluster
+ primaryTablet *cluster.Vttablet
+ replicaTablet *cluster.Vttablet
+ hostname = "localhost"
+ keyspaceName = "ks"
+ cell = "zone1"
+ sqlSchema = `
+ create table t1(
+ id bigint,
+ value varchar(16),
+ primary key(id)
+ ) Engine=InnoDB;
+`
+
+ vSchema = `
+ {
+ "sharded": true,
+ "vindexes": {
+ "hash": {
+ "type": "hash"
+ }
+ },
+ "tables": {
+ "t1": {
+ "column_vindexes": [
+ {
+ "column": "id",
+ "name": "hash"
+ }
+ ]
+ }
+ }
+ }`
+
+ httpClient = base.SetupHTTPClient(time.Second)
+ checkAPIPath = "throttler/check"
+ checkSelfAPIPath = "throttler/check-self"
+ vtParams mysql.ConnParams
+)
+
+const (
+ testThreshold = 5
+ throttlerInitWait = 10 * time.Second
+)
+
+func TestMain(m *testing.M) {
+ defer cluster.PanicHandler(nil)
+ flag.Parse()
+
+ exitCode := func() int {
+ clusterInstance = cluster.NewCluster(cell, hostname)
+ defer clusterInstance.Teardown()
+
+ // Start topo server
+ err := clusterInstance.StartTopo()
+ if err != nil {
+ return 1
+ }
+
+ // Set extra tablet args for lock timeout
+ clusterInstance.VtTabletExtraArgs = []string{
+ "-lock_tables_timeout", "5s",
+ "-watch_replication_stream",
+ "-enable_replication_reporter",
+ "-enable-lag-throttler",
+ "-throttle_metrics_query", "show global status like 'threads_running'",
+ "-throttle_metrics_threshold", fmt.Sprintf("%d", testThreshold),
+ "-throttle_check_as_check_self",
+ "-heartbeat_enable",
+ "-heartbeat_interval", "250ms",
+ }
+ // We do not need semiSync for this test case.
+ clusterInstance.EnableSemiSync = false
+
+ // Start keyspace
+ keyspace := &cluster.Keyspace{
+ Name: keyspaceName,
+ SchemaSQL: sqlSchema,
+ VSchema: vSchema,
+ }
+
+ if err = clusterInstance.StartUnshardedKeyspace(*keyspace, 0, false); err != nil {
+ return 1
+ }
+
+ // Collect table paths and ports
+ tablets := clusterInstance.Keyspaces[0].Shards[0].Vttablets
+ for _, tablet := range tablets {
+ if tablet.Type == "master" {
+ primaryTablet = tablet
+ } else if tablet.Type != "rdonly" {
+ replicaTablet = tablet
+ }
+ }
+
+ vtgateInstance := clusterInstance.NewVtgateInstance()
+ // set the gateway we want to use
+ vtgateInstance.GatewayImplementation = "tabletgateway"
+ // Start vtgate
+ if err := vtgateInstance.Setup(); err != nil {
+ return 1
+ }
+ // ensure it is torn down during cluster TearDown
+ clusterInstance.VtgateProcess = *vtgateInstance
+ vtParams = mysql.ConnParams{
+ Host: clusterInstance.Hostname,
+ Port: clusterInstance.VtgateMySQLPort,
+ }
+
+ return m.Run()
+ }()
+ os.Exit(exitCode)
+}
+
+func throttleCheck(tablet *cluster.Vttablet) (*http.Response, error) {
+ return httpClient.Head(fmt.Sprintf("http://localhost:%d/%s", tablet.HTTPPort, checkAPIPath))
+}
+
+func throttleCheckSelf(tablet *cluster.Vttablet) (*http.Response, error) {
+ return httpClient.Head(fmt.Sprintf("http://localhost:%d/%s", tablet.HTTPPort, checkSelfAPIPath))
+}
+
+func TestThrottlerThresholdOK(t *testing.T) {
+ defer cluster.PanicHandler(t)
+
+ {
+ resp, err := throttleCheck(primaryTablet)
+ assert.NoError(t, err)
+ assert.Equal(t, http.StatusOK, resp.StatusCode)
+ }
+}
+
+func TestThrottlerAfterMetricsCollected(t *testing.T) {
+ defer cluster.PanicHandler(t)
+
+ time.Sleep(throttlerInitWait)
+ // By this time metrics will have been collected. We expect no lag, and something like:
+ // {"StatusCode":200,"Value":0.282278,"Threshold":1,"Message":""}
+ {
+ resp, err := throttleCheck(primaryTablet)
+ assert.NoError(t, err)
+ assert.Equal(t, http.StatusOK, resp.StatusCode)
+ }
+ {
+ resp, err := throttleCheckSelf(primaryTablet)
+ assert.NoError(t, err)
+ assert.Equal(t, http.StatusOK, resp.StatusCode)
+ }
+}
+
+func TestThreadsRunning(t *testing.T) {
+ defer cluster.PanicHandler(t)
+
+ sleepSeconds := 6
+ for i := 0; i < testThreshold; i++ {
+ go vtgateExec(t, fmt.Sprintf("select sleep(%d)", sleepSeconds), "")
+ }
+ t.Run("exceeds threshold", func(t *testing.T) {
+ time.Sleep(3 * time.Second)
+ // by this time we will have +1 threads_running, and we should hit the threshold
+ // {"StatusCode":429,"Value":2,"Threshold":2,"Message":"Threshold exceeded"}
+ {
+ resp, err := throttleCheck(primaryTablet)
+ assert.NoError(t, err)
+ assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode)
+ }
+ {
+ resp, err := throttleCheckSelf(primaryTablet)
+ assert.NoError(t, err)
+ assert.Equal(t, http.StatusTooManyRequests, resp.StatusCode)
+ }
+ })
+ t.Run("restored below threshold", func(t *testing.T) {
+ time.Sleep(time.Duration(sleepSeconds) * time.Second)
+ // Restore
+ {
+ resp, err := throttleCheck(primaryTablet)
+ assert.NoError(t, err)
+ assert.Equal(t, http.StatusOK, resp.StatusCode)
+ }
+ {
+ resp, err := throttleCheckSelf(primaryTablet)
+ assert.NoError(t, err)
+ assert.Equal(t, http.StatusOK, resp.StatusCode)
+ }
+ })
+}
+
+func vtgateExec(t *testing.T, query string, expectError string) *sqltypes.Result {
+ t.Helper()
+
+ ctx := context.Background()
+ conn, err := mysql.Connect(ctx, &vtParams)
+ require.Nil(t, err)
+ defer conn.Close()
+
+ qr, err := conn.ExecuteFetch(query, 1000, true)
+ if expectError == "" {
+ require.NoError(t, err)
+ } else {
+ require.Error(t, err, "error should not be nil")
+ assert.Contains(t, err.Error(), expectError, "Unexpected error")
+ }
+ return qr
+}
diff --git a/go/test/endtoend/vreplication/cluster.go b/go/test/endtoend/vreplication/cluster.go
index e1e2b8820bd..0d26fac77dd 100644
--- a/go/test/endtoend/vreplication/cluster.go
+++ b/go/test/endtoend/vreplication/cluster.go
@@ -23,37 +23,38 @@ import (
var (
debug = false // set to true to always use local env vtdataroot for local debugging
- originalVtdataroot string
- vtdataroot string
+ originalVtdataroot string
+ vtdataroot string
+ mainClusterConfig *ClusterConfig
+ externalClusterConfig *ClusterConfig
)
-var globalConfig = struct {
- hostname string
- topoPort int
- vtctldPort int
- vtctldGrpcPort int
- tmpDir string
- vtgatePort int
- vtgateGrpcPort int
- vtgateMySQLPort int
- tabletTypes string
-}{"localhost", 2379, 15000, 15999, vtdataroot + "/tmp",
- 15001, 15991, 15306, "MASTER,REPLICA"}
-
-var (
- tabletPortBase = 15000
- tabletGrpcPortBase = 20000
- tabletMysqlPortBase = 25000
-)
+// ClusterConfig defines the parameters like ports, tmpDir, tablet types which uniquely define a vitess cluster
+type ClusterConfig struct {
+ hostname string
+ topoPort int
+ vtctldPort int
+ vtctldGrpcPort int
+ vtdataroot string
+ tmpDir string
+ vtgatePort int
+ vtgateGrpcPort int
+ vtgateMySQLPort int
+ tabletTypes string
+ tabletPortBase int
+ tabletGrpcPortBase int
+ tabletMysqlPortBase int
+}
// VitessCluster represents all components within the test cluster
type VitessCluster struct {
- Name string
- Cells map[string]*Cell
- Topo *cluster.TopoProcess
- Vtctld *cluster.VtctldProcess
- Vtctl *cluster.VtctlProcess
- VtctlClient *cluster.VtctlClientProcess
+ ClusterConfig *ClusterConfig
+ Name string
+ Cells map[string]*Cell
+ Topo *cluster.TopoProcess
+ Vtctld *cluster.VtctldProcess
+ Vtctl *cluster.VtctlProcess
+ VtctlClient *cluster.VtctlClientProcess
}
// Cell represents a Vitess cell within the test cluster
@@ -85,37 +86,66 @@ type Tablet struct {
DbServer *cluster.MysqlctlProcess
}
-func init() {
- originalVtdataroot = os.Getenv("VTDATAROOT")
-}
-
-func initGlobals() {
- rand.Seed(time.Now().UTC().UnixNano())
+func setTempVtDataRoot() string {
dirSuffix := 100000 + rand.Intn(999999-100000) // 6 digits
if debug {
vtdataroot = originalVtdataroot
} else {
vtdataroot = path.Join(originalVtdataroot, fmt.Sprintf("vreple2e_%d", dirSuffix))
}
- globalConfig.tmpDir = vtdataroot + "/tmp"
if _, err := os.Stat(vtdataroot); os.IsNotExist(err) {
os.Mkdir(vtdataroot, 0700)
}
_ = os.Setenv("VTDATAROOT", vtdataroot)
fmt.Printf("VTDATAROOT is %s\n", vtdataroot)
+ return vtdataroot
+}
+
+func getClusterConfig(idx int, dataRootDir string) *ClusterConfig {
+ basePort := 15000
+ etcdPort := 2379
+
+ basePort += idx * 10000
+ etcdPort += idx * 10000
+ if _, err := os.Stat(dataRootDir); os.IsNotExist(err) {
+ os.Mkdir(dataRootDir, 0700)
+ }
+
+ return &ClusterConfig{
+ hostname: "localhost",
+ topoPort: etcdPort,
+ vtctldPort: basePort,
+ vtctldGrpcPort: basePort + 999,
+ tmpDir: dataRootDir + "/tmp",
+ vtgatePort: basePort + 1,
+ vtgateGrpcPort: basePort + 991,
+ vtgateMySQLPort: basePort + 306,
+ tabletTypes: "master",
+ vtdataroot: dataRootDir,
+ tabletPortBase: basePort + 1000,
+ tabletGrpcPortBase: basePort + 1991,
+ tabletMysqlPortBase: basePort + 1306,
+ }
}
-// NewVitessCluster creates an entire VitessCluster for e2e testing
-func NewVitessCluster(name string) (cluster *VitessCluster, err error) {
- return &VitessCluster{Name: name, Cells: make(map[string]*Cell)}, nil
+func init() {
+ rand.Seed(time.Now().UTC().UnixNano())
+ originalVtdataroot = os.Getenv("VTDATAROOT")
+ var mainVtDataRoot string
+ if debug {
+ mainVtDataRoot = originalVtdataroot
+ } else {
+ mainVtDataRoot = setTempVtDataRoot()
+ }
+ mainClusterConfig = getClusterConfig(0, mainVtDataRoot)
+ externalClusterConfig = getClusterConfig(1, mainVtDataRoot+"/ext")
}
-// InitCluster creates the global processes needed for a cluster
-func InitCluster(t *testing.T, cellNames []string) *VitessCluster {
- initGlobals()
- vc, _ := NewVitessCluster("Vdemo")
+// NewVitessCluster starts a basic cluster with vtgate, vtctld and the topo
+func NewVitessCluster(t *testing.T, name string, cellNames []string, clusterConfig *ClusterConfig) *VitessCluster {
+ vc := &VitessCluster{Name: name, Cells: make(map[string]*Cell), ClusterConfig: clusterConfig}
require.NotNil(t, vc)
- topo := cluster.TopoProcessInstance(globalConfig.topoPort, globalConfig.topoPort*10, globalConfig.hostname, "etcd2", "global")
+ topo := cluster.TopoProcessInstance(vc.ClusterConfig.topoPort, vc.ClusterConfig.topoPort+1, vc.ClusterConfig.hostname, "etcd2", "global")
require.NotNil(t, topo)
require.Nil(t, topo.Setup("etcd2", nil))
@@ -125,14 +155,14 @@ func InitCluster(t *testing.T, cellNames []string) *VitessCluster {
topo.ManageTopoDir("mkdir", "/vitess/"+cellName)
}
- vtctld := cluster.VtctldProcessInstance(globalConfig.vtctldPort, globalConfig.vtctldGrpcPort,
- globalConfig.topoPort, globalConfig.hostname, globalConfig.tmpDir)
+ vtctld := cluster.VtctldProcessInstance(vc.ClusterConfig.vtctldPort, vc.ClusterConfig.vtctldGrpcPort,
+ vc.ClusterConfig.topoPort, vc.ClusterConfig.hostname, vc.ClusterConfig.tmpDir)
vc.Vtctld = vtctld
require.NotNil(t, vc.Vtctld)
// use first cell as `-cell`
vc.Vtctld.Setup(cellNames[0])
- vc.Vtctl = cluster.VtctlProcessInstance(globalConfig.topoPort, globalConfig.hostname)
+ vc.Vtctl = cluster.VtctlProcessInstance(vc.ClusterConfig.topoPort, vc.ClusterConfig.hostname)
require.NotNil(t, vc.Vtctl)
for _, cellName := range cellNames {
vc.Vtctl.AddCellInfo(cellName)
@@ -141,7 +171,7 @@ func InitCluster(t *testing.T, cellNames []string) *VitessCluster {
require.NotNil(t, cell)
}
- vc.VtctlClient = cluster.VtctlClientProcessInstance(globalConfig.hostname, vc.Vtctld.GrpcPort, globalConfig.tmpDir)
+ vc.VtctlClient = cluster.VtctlClientProcessInstance(vc.ClusterConfig.hostname, vc.Vtctld.GrpcPort, vc.ClusterConfig.tmpDir)
require.NotNil(t, vc.VtctlClient)
return vc
@@ -194,23 +224,29 @@ func (vc *VitessCluster) AddTablet(t *testing.T, cell *Cell, keyspace *Keyspace,
tablet := &Tablet{}
vttablet := cluster.VttabletProcessInstance(
- tabletPortBase+tabletID,
- tabletGrpcPortBase+tabletID,
+ vc.ClusterConfig.tabletPortBase+tabletID,
+ vc.ClusterConfig.tabletGrpcPortBase+tabletID,
tabletID,
cell.Name,
shard.Name,
keyspace.Name,
- globalConfig.vtctldPort,
+ vc.ClusterConfig.vtctldPort,
tabletType,
vc.Topo.Port,
- globalConfig.hostname,
- globalConfig.tmpDir,
- []string{"-queryserver-config-schema-reload-time", "5"}, //FIXME: for multi-cell initial schema doesn't seem to load without this
+ vc.ClusterConfig.hostname,
+ vc.ClusterConfig.tmpDir,
+ []string{
+ "-queryserver-config-schema-reload-time", "5",
+ "-enable-lag-throttler",
+ "-heartbeat_enable",
+ "-heartbeat_interval", "250ms",
+ }, //FIXME: for multi-cell initial schema doesn't seem to load without "-queryserver-config-schema-reload-time"
false)
+
require.NotNil(t, vttablet)
vttablet.SupportsBackup = false
- tablet.DbServer = cluster.MysqlCtlProcessInstance(tabletID, tabletMysqlPortBase+tabletID, globalConfig.tmpDir)
+ tablet.DbServer = cluster.MysqlCtlProcessInstance(tabletID, vc.ClusterConfig.tabletMysqlPortBase+tabletID, vc.ClusterConfig.tmpDir)
require.NotNil(t, tablet.DbServer)
tablet.DbServer.InitMysql = true
proc, err := tablet.DbServer.StartProcess()
@@ -325,15 +361,15 @@ func (vc *VitessCluster) DeleteShard(t *testing.T, cellName string, ksName strin
// StartVtgate starts a vtgate process
func (vc *VitessCluster) StartVtgate(t *testing.T, cell *Cell, cellsToWatch string) {
vtgate := cluster.VtgateProcessInstance(
- globalConfig.vtgatePort,
- globalConfig.vtgateGrpcPort,
- globalConfig.vtgateMySQLPort,
+ vc.ClusterConfig.vtgatePort,
+ vc.ClusterConfig.vtgateGrpcPort,
+ vc.ClusterConfig.vtgateMySQLPort,
cell.Name,
cellsToWatch,
- globalConfig.hostname,
- globalConfig.tabletTypes,
- globalConfig.topoPort,
- globalConfig.tmpDir,
+ vc.ClusterConfig.hostname,
+ vc.ClusterConfig.tabletTypes,
+ vc.ClusterConfig.topoPort,
+ vc.ClusterConfig.tmpDir,
[]string{"-tablet_refresh_interval", "10ms"})
require.NotNil(t, vtgate)
if err := vtgate.Setup(); err != nil {
diff --git a/go/test/endtoend/vreplication/config.go b/go/test/endtoend/vreplication/config.go
index fc8a08e0958..214876a2050 100644
--- a/go/test/endtoend/vreplication/config.go
+++ b/go/test/endtoend/vreplication/config.go
@@ -3,7 +3,7 @@ package vreplication
var (
initialProductSchema = `
create table product(pid int, description varbinary(128), primary key(pid));
-create table customer(cid int, name varbinary(128), typ enum('individual','soho','enterprise'), sport set('football','cricket','baseball'),ts timestamp not null default current_timestamp, primary key(cid));
+create table customer(cid int, name varbinary(128), meta json default null, typ enum('individual','soho','enterprise'), sport set('football','cricket','baseball'),ts timestamp not null default current_timestamp, primary key(cid)) CHARSET=utf8mb4;
create table customer_seq(id int, next_id bigint, cache bigint, primary key(id)) comment 'vitess_sequence';
create table merchant(mname varchar(128), category varchar(128), primary key(mname)) DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
create table orders(oid int, cid int, pid int, mname varchar(128), price int, primary key(oid));
@@ -299,5 +299,18 @@ create table tenant(tenant_id binary(16), name varbinary(16), primary key (tenan
"create_ddl": "create table rollup(rollupname varchar(100), kount int, primary key (rollupname))"
}]
}
+`
+ initialExternalSchema = `
+create table review(rid int, pid int, review varbinary(128), primary key(rid));
+create table rating(gid int, pid int, rating int, primary key(gid));
+`
+
+ initialExternalVSchema = `
+{
+ "tables": {
+ "review": {},
+ "rating": {}
+ }
+}
`
)
diff --git a/go/test/endtoend/vreplication/helper.go b/go/test/endtoend/vreplication/helper.go
index 6c9a8bdbb13..15726e2dd36 100644
--- a/go/test/endtoend/vreplication/helper.go
+++ b/go/test/endtoend/vreplication/helper.go
@@ -36,9 +36,9 @@ func execQuery(t *testing.T, conn *mysql.Conn, query string) *sqltypes.Result {
return qr
}
-func getConnection(t *testing.T, port int) *mysql.Conn {
+func getConnection(t *testing.T, hostname string, port int) *mysql.Conn {
vtParams := mysql.ConnParams{
- Host: globalConfig.hostname,
+ Host: hostname,
Port: port,
Uname: "vt_dba",
}
diff --git a/go/test/endtoend/vreplication/migrate_test.go b/go/test/endtoend/vreplication/migrate_test.go
new file mode 100644
index 00000000000..d327f39788f
--- /dev/null
+++ b/go/test/endtoend/vreplication/migrate_test.go
@@ -0,0 +1,163 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package vreplication
+
+import (
+ "fmt"
+ "testing"
+ "time"
+
+ "github.com/stretchr/testify/require"
+
+ "vitess.io/vitess/go/mysql"
+)
+
+func insertInitialDataIntoExternalCluster(t *testing.T, conn *mysql.Conn) {
+ t.Run("insertInitialData", func(t *testing.T) {
+ fmt.Printf("Inserting initial data\n")
+ execVtgateQuery(t, conn, "rating:0", "insert into review(rid, pid, review) values(1, 1, 'review1');")
+ execVtgateQuery(t, conn, "rating:0", "insert into review(rid, pid, review) values(2, 1, 'review2');")
+ execVtgateQuery(t, conn, "rating:0", "insert into review(rid, pid, review) values(3, 2, 'review3');")
+ execVtgateQuery(t, conn, "rating:0", "insert into rating(gid, pid, rating) values(1, 1, 4);")
+ execVtgateQuery(t, conn, "rating:0", "insert into rating(gid, pid, rating) values(2, 2, 5);")
+ })
+}
+
+// TestMigrate runs an e2e test for importing from an external cluster using the Mount and Migrate commands.
+// We have an anti-pattern in Vitess: vt executables look for an environment variable VTDATAROOT for certain cluster parameters
+// like the log directory when they are created. Until this test we just needed a single cluster for e2e tests.
+// However now we need to create an external Vitess cluster. For this we need a different VTDATAROOT and
+// hence the VTDATAROOT env variable gets overwritten.
+// Each time we need to create vt processes in the "other" cluster we need to set the appropriate VTDATAROOT
+func TestMigrate(t *testing.T) {
+ defaultCellName := "zone1"
+ cells := []string{"zone1"}
+ allCellNames = "zone1"
+ vc = NewVitessCluster(t, "TestMigrate", cells, mainClusterConfig)
+
+ require.NotNil(t, vc)
+ defaultReplicas = 0
+ defaultRdonly = 0
+ defer vc.TearDown()
+
+ defaultCell = vc.Cells[defaultCellName]
+ vc.AddKeyspace(t, []*Cell{defaultCell}, "product", "0", initialProductVSchema, initialProductSchema, defaultReplicas, defaultRdonly, 100)
+ vtgate = defaultCell.Vtgates[0]
+ require.NotNil(t, vtgate)
+ vtgate.WaitForStatusOfTabletInShard(fmt.Sprintf("%s.%s.master", "product", "0"), 1)
+
+ vtgateConn = getConnection(t, vc.ClusterConfig.hostname, vc.ClusterConfig.vtgateMySQLPort)
+ defer vtgateConn.Close()
+ verifyClusterHealth(t, vc)
+ insertInitialData(t)
+
+ // create external cluster
+ extCell := "extcell1"
+ extCells := []string{extCell}
+ extVc := NewVitessCluster(t, "TestMigrateExternal", extCells, externalClusterConfig)
+ require.NotNil(t, extVc)
+ defer extVc.TearDown()
+
+ extCell2 := extVc.Cells[extCell]
+ extVc.AddKeyspace(t, []*Cell{extCell2}, "rating", "0", initialExternalVSchema, initialExternalSchema, 0, 0, 1000)
+ extVtgate := extCell2.Vtgates[0]
+ require.NotNil(t, extVtgate)
+
+ extVtgate.WaitForStatusOfTabletInShard(fmt.Sprintf("%s.%s.master", "rating", "0"), 1)
+ verifyClusterHealth(t, extVc)
+ extVtgateConn := getConnection(t, extVc.ClusterConfig.hostname, extVc.ClusterConfig.vtgateMySQLPort)
+ insertInitialDataIntoExternalCluster(t, extVtgateConn)
+
+ var err error
+ var output, expected string
+ ksWorkflow := "product.e1"
+
+ t.Run("mount external cluster", func(t *testing.T) {
+ if output, err = vc.VtctlClient.ExecuteCommandWithOutput("Mount", "-type=vitess", "-topo_type=etcd2",
+ fmt.Sprintf("-topo_server=localhost:%d", extVc.ClusterConfig.topoPort), "-topo_root=/vitess/global", "ext1"); err != nil {
+ t.Fatalf("Mount command failed with %+v : %s\n", err, output)
+ }
+ if output, err = vc.VtctlClient.ExecuteCommandWithOutput("Mount", "-type=vitess", "-list"); err != nil {
+ t.Fatalf("Mount command failed with %+v : %s\n", err, output)
+ }
+ expected = "ext1\n"
+ require.Equal(t, expected, output)
+ if output, err = vc.VtctlClient.ExecuteCommandWithOutput("Mount", "-type=vitess", "-show", "ext1"); err != nil {
+ t.Fatalf("Mount command failed with %+v : %s\n", err, output)
+ }
+ expected = `{"ClusterName":"ext1","topo_config":{"topo_type":"etcd2","server":"localhost:12379","root":"/vitess/global"}}` + "\n"
+ require.Equal(t, expected, output)
+ })
+
+ t.Run("migrate from external cluster", func(t *testing.T) {
+ if output, err = vc.VtctlClient.ExecuteCommandWithOutput("Migrate", "-all", "-cells=extcell1",
+ "-source=ext1.rating", "create", ksWorkflow); err != nil {
+ t.Fatalf("Migrate command failed with %+v : %s\n", err, output)
+ }
+ expectNumberOfStreams(t, vtgateConn, "migrate", "e1", "product:0", 1)
+ validateCount(t, vtgateConn, "product:0", "rating", 2)
+ validateCount(t, vtgateConn, "product:0", "review", 3)
+ execVtgateQuery(t, extVtgateConn, "rating", "insert into review(rid, pid, review) values(4, 1, 'review4');")
+ execVtgateQuery(t, extVtgateConn, "rating", "insert into rating(gid, pid, rating) values(3, 1, 3);")
+ time.Sleep(1 * time.Second) // wait for stream to find row
+ validateCount(t, vtgateConn, "product:0", "rating", 3)
+ validateCount(t, vtgateConn, "product:0", "review", 4)
+ vdiff(t, ksWorkflow, "extcell1")
+
+ if output, err = vc.VtctlClient.ExecuteCommandWithOutput("Migrate", "complete", ksWorkflow); err != nil {
+ t.Fatalf("Migrate command failed with %+v : %s\n", err, output)
+ }
+
+ expectNumberOfStreams(t, vtgateConn, "migrate", "e1", "product:0", 0)
+ })
+ t.Run("cancel migrate workflow", func(t *testing.T) {
+ execVtgateQuery(t, vtgateConn, "product", "drop table review,rating")
+
+ if output, err = vc.VtctlClient.ExecuteCommandWithOutput("Migrate", "-all", "-auto_start=false", "-cells=extcell1",
+ "-source=ext1.rating", "create", ksWorkflow); err != nil {
+ t.Fatalf("Migrate command failed with %+v : %s\n", err, output)
+ }
+ expectNumberOfStreams(t, vtgateConn, "migrate", "e1", "product:0", 1)
+ validateCount(t, vtgateConn, "product:0", "rating", 0)
+ validateCount(t, vtgateConn, "product:0", "review", 0)
+ if output, err = vc.VtctlClient.ExecuteCommandWithOutput("Migrate", "cancel", ksWorkflow); err != nil {
+ t.Fatalf("Migrate command failed with %+v : %s\n", err, output)
+ }
+ expectNumberOfStreams(t, vtgateConn, "migrate", "e1", "product:0", 0)
+ var found bool
+ found, err = checkIfTableExists(t, vc, "zone1-100", "review")
+ require.NoError(t, err)
+ require.False(t, found)
+ found, err = checkIfTableExists(t, vc, "zone1-100", "rating")
+ require.NoError(t, err)
+ require.False(t, found)
+ })
+ t.Run("unmount external cluster", func(t *testing.T) {
+ if output, err = vc.VtctlClient.ExecuteCommandWithOutput("Mount", "-type=vitess", "-unmount", "ext1"); err != nil {
+ t.Fatalf("Mount command failed with %+v : %s\n", err, output)
+ }
+
+ if output, err = vc.VtctlClient.ExecuteCommandWithOutput("Mount", "-type=vitess", "-list"); err != nil {
+ t.Fatalf("Mount command failed with %+v : %s\n", err, output)
+ }
+ expected = "\n"
+ require.Equal(t, expected, output)
+
+ output, err = vc.VtctlClient.ExecuteCommandWithOutput("Mount", "-type=vitess", "-show", "ext1")
+ require.Errorf(t, err, "there is no vitess cluster named ext1")
+ })
+}
diff --git a/go/test/endtoend/vreplication/resharding_workflows_v2_test.go b/go/test/endtoend/vreplication/resharding_workflows_v2_test.go
index 9541c154730..cb189b8867c 100644
--- a/go/test/endtoend/vreplication/resharding_workflows_v2_test.go
+++ b/go/test/endtoend/vreplication/resharding_workflows_v2_test.go
@@ -65,7 +65,7 @@ func createReshardWorkflow(t *testing.T, sourceShards, targetShards string) erro
time.Sleep(1 * time.Second)
catchup(t, targetTab1, workflowName, "Reshard")
catchup(t, targetTab2, workflowName, "Reshard")
- vdiff(t, ksWorkflow)
+ vdiff(t, ksWorkflow, "")
return nil
}
@@ -79,7 +79,7 @@ func createMoveTablesWorkflow(t *testing.T, tables string) error {
catchup(t, targetTab1, workflowName, "MoveTables")
catchup(t, targetTab2, workflowName, "MoveTables")
time.Sleep(1 * time.Second)
- vdiff(t, ksWorkflow)
+ vdiff(t, ksWorkflow, "")
return nil
}
@@ -233,7 +233,7 @@ func getCurrentState(t *testing.T) string {
func TestBasicV2Workflows(t *testing.T) {
vc = setupCluster(t)
defer vtgateConn.Close()
- //defer vc.TearDown()
+ defer vc.TearDown()
testMoveTablesV2Workflow(t)
testReshardV2Workflow(t)
@@ -387,7 +387,7 @@ func testRestOfWorkflow(t *testing.T) {
func setupCluster(t *testing.T) *VitessCluster {
cells := []string{"zone1", "zone2"}
- vc = InitCluster(t, cells)
+ vc = NewVitessCluster(t, "TestBasicVreplicationWorkflow", cells, mainClusterConfig)
require.NotNil(t, vc)
defaultCellName := "zone1"
allCellNames = defaultCellName
@@ -403,8 +403,8 @@ func setupCluster(t *testing.T) *VitessCluster {
vtgate.WaitForStatusOfTabletInShard(fmt.Sprintf("%s.%s.master", "product", "0"), 1)
vtgate.WaitForStatusOfTabletInShard(fmt.Sprintf("%s.%s.replica", "product", "0"), 2)
- vtgateConn = getConnection(t, globalConfig.vtgateMySQLPort)
- verifyClusterHealth(t)
+ vtgateConn = getConnection(t, vc.ClusterConfig.hostname, vc.ClusterConfig.vtgateMySQLPort)
+ verifyClusterHealth(t, vc)
insertInitialData(t)
sourceReplicaTab = vc.Cells[defaultCell.Name].Keyspaces["product"].Shards["0"].Tablets["zone1-101"].Vttablet
@@ -463,7 +463,7 @@ func moveCustomerTableSwitchFlows(t *testing.T, cells []*Cell, sourceCellOrAlias
moveTables(t, sourceCellOrAlias, workflow, sourceKs, targetKs, tables)
catchup(t, targetTab1, workflow, "MoveTables")
catchup(t, targetTab2, workflow, "MoveTables")
- vdiff(t, ksWorkflow)
+ vdiff(t, ksWorkflow, "")
}
var switchReadsFollowedBySwitchWrites = func() {
diff --git a/go/test/endtoend/vreplication/unsharded_init_data.sql b/go/test/endtoend/vreplication/unsharded_init_data.sql
index 06eb2e18628..1b58404cfb7 100644
--- a/go/test/endtoend/vreplication/unsharded_init_data.sql
+++ b/go/test/endtoend/vreplication/unsharded_init_data.sql
@@ -1,5 +1,5 @@
-insert into customer(cid, name, typ, sport) values(1, 'john',1,'football,baseball');
-insert into customer(cid, name, typ, sport) values(2, 'paul','soho','cricket');
+insert into customer(cid, name, typ, sport, meta) values(1, 'john',1,'football,baseball','{}');
+insert into customer(cid, name, typ, sport, meta) values(2, 'paul','soho','cricket',convert(x'7b7d' using utf8mb4));
insert into customer(cid, name, typ, sport) values(3, 'ringo','enterprise','');
insert into merchant(mname, category) values('monoprice', 'electronics');
insert into merchant(mname, category) values('newegg', 'electronics');
diff --git a/go/test/endtoend/vreplication/vreplication_test.go b/go/test/endtoend/vreplication/vreplication_test.go
index c4ea174354a..4c06d5ec864 100644
--- a/go/test/endtoend/vreplication/vreplication_test.go
+++ b/go/test/endtoend/vreplication/vreplication_test.go
@@ -20,6 +20,7 @@ import (
"encoding/json"
"fmt"
"io/ioutil"
+ "net/http"
"strings"
"testing"
"time"
@@ -30,17 +31,21 @@ import (
"vitess.io/vitess/go/mysql"
"vitess.io/vitess/go/test/endtoend/cluster"
+ throttlebase "vitess.io/vitess/go/vt/vttablet/tabletserver/throttle/base"
"vitess.io/vitess/go/vt/wrangler"
)
var (
- vc *VitessCluster
- vtgate *cluster.VtgateProcess
- defaultCell *Cell
- vtgateConn *mysql.Conn
- defaultRdonly int
- defaultReplicas int
- allCellNames string
+ vc *VitessCluster
+ vtgate *cluster.VtgateProcess
+ defaultCell *Cell
+ vtgateConn *mysql.Conn
+ defaultRdonly int
+ defaultReplicas int
+ allCellNames string
+ httpClient = throttlebase.SetupHTTPClient(time.Second)
+ sourceThrottlerAppName = "vstreamer"
+ targetThrottlerAppName = "vreplication"
)
func init() {
@@ -48,11 +53,42 @@ func init() {
defaultReplicas = 1
}
+func throttleResponse(tablet *cluster.VttabletProcess, path string) (resp *http.Response, respBody string, err error) {
+ apiURL := fmt.Sprintf("http://%s:%d/%s", tablet.TabletHostname, tablet.Port, path)
+ resp, err = httpClient.Get(apiURL)
+ if err != nil {
+ return resp, respBody, err
+ }
+ b, err := ioutil.ReadAll(resp.Body)
+ respBody = string(b)
+ return resp, respBody, err
+}
+
+func throttleApp(tablet *cluster.VttabletProcess, app string) (*http.Response, string, error) {
+ return throttleResponse(tablet, fmt.Sprintf("throttler/throttle-app?app=%s&duration=1h", app))
+}
+
+func unthrottleApp(tablet *cluster.VttabletProcess, app string) (*http.Response, string, error) {
+ return throttleResponse(tablet, fmt.Sprintf("throttler/unthrottle-app?app=%s", app))
+}
+
+func throttlerCheckSelf(tablet *cluster.VttabletProcess, app string) (resp *http.Response, respBody string, err error) {
+ apiURL := fmt.Sprintf("http://%s:%d/throttler/check-self?app=%s", tablet.TabletHostname, tablet.Port, app)
+ resp, err = httpClient.Get(apiURL)
+ if err != nil {
+ return resp, respBody, err
+ }
+ b, err := ioutil.ReadAll(resp.Body)
+ respBody = string(b)
+ return resp, respBody, err
+}
+
func TestBasicVreplicationWorkflow(t *testing.T) {
defaultCellName := "zone1"
allCells := []string{"zone1"}
allCellNames = "zone1"
- vc = InitCluster(t, allCells)
+ vc = NewVitessCluster(t, "TestBasicVreplicationWorkflow", allCells, mainClusterConfig)
+
require.NotNil(t, vc)
defaultReplicas = 0 // because of CI resource constraints we can only run this test with master tablets
defer func() { defaultReplicas = 1 }()
@@ -65,9 +101,9 @@ func TestBasicVreplicationWorkflow(t *testing.T) {
require.NotNil(t, vtgate)
vtgate.WaitForStatusOfTabletInShard(fmt.Sprintf("%s.%s.master", "product", "0"), 1)
- vtgateConn = getConnection(t, globalConfig.vtgateMySQLPort)
+ vtgateConn = getConnection(t, vc.ClusterConfig.hostname, vc.ClusterConfig.vtgateMySQLPort)
defer vtgateConn.Close()
- verifyClusterHealth(t)
+ verifyClusterHealth(t, vc)
insertInitialData(t)
materializeRollup(t)
@@ -101,7 +137,7 @@ func TestMultiCellVreplicationWorkflow(t *testing.T) {
cells := []string{"zone1", "zone2"}
allCellNames = "zone1,zone2"
- vc = InitCluster(t, cells)
+ vc = NewVitessCluster(t, "TestBasicVreplicationWorkflow", cells, mainClusterConfig)
require.NotNil(t, vc)
defaultCellName := "zone1"
defaultCell = vc.Cells[defaultCellName]
@@ -117,9 +153,9 @@ func TestMultiCellVreplicationWorkflow(t *testing.T) {
vtgate.WaitForStatusOfTabletInShard(fmt.Sprintf("%s.%s.master", "product", "0"), 1)
vtgate.WaitForStatusOfTabletInShard(fmt.Sprintf("%s.%s.replica", "product", "0"), 2)
- vtgateConn = getConnection(t, globalConfig.vtgateMySQLPort)
+ vtgateConn = getConnection(t, vc.ClusterConfig.hostname, vc.ClusterConfig.vtgateMySQLPort)
defer vtgateConn.Close()
- verifyClusterHealth(t)
+ verifyClusterHealth(t, vc)
insertInitialData(t)
shardCustomer(t, true, []*Cell{cell1, cell2}, cell2.Name)
}
@@ -127,7 +163,7 @@ func TestMultiCellVreplicationWorkflow(t *testing.T) {
func TestCellAliasVreplicationWorkflow(t *testing.T) {
cells := []string{"zone1", "zone2"}
- vc = InitCluster(t, cells)
+ vc = NewVitessCluster(t, "TestBasicVreplicationWorkflow", cells, mainClusterConfig)
require.NotNil(t, vc)
allCellNames = "zone1,zone2"
defaultCellName := "zone1"
@@ -148,25 +184,27 @@ func TestCellAliasVreplicationWorkflow(t *testing.T) {
vtgate.WaitForStatusOfTabletInShard(fmt.Sprintf("%s.%s.master", "product", "0"), 1)
vtgate.WaitForStatusOfTabletInShard(fmt.Sprintf("%s.%s.replica", "product", "0"), 2)
- vtgateConn = getConnection(t, globalConfig.vtgateMySQLPort)
+ vtgateConn = getConnection(t, vc.ClusterConfig.hostname, vc.ClusterConfig.vtgateMySQLPort)
defer vtgateConn.Close()
- verifyClusterHealth(t)
+ verifyClusterHealth(t, vc)
insertInitialData(t)
shardCustomer(t, true, []*Cell{cell1, cell2}, "alias")
}
func insertInitialData(t *testing.T) {
- fmt.Printf("Inserting initial data\n")
- lines, _ := ioutil.ReadFile("unsharded_init_data.sql")
- execMultipleQueries(t, vtgateConn, "product:0", string(lines))
- execVtgateQuery(t, vtgateConn, "product:0", "insert into customer_seq(id, next_id, cache) values(0, 100, 100);")
- execVtgateQuery(t, vtgateConn, "product:0", "insert into order_seq(id, next_id, cache) values(0, 100, 100);")
- fmt.Printf("Done inserting initial data\n")
+ t.Run("insertInitialData", func(t *testing.T) {
+ fmt.Printf("Inserting initial data\n")
+ lines, _ := ioutil.ReadFile("unsharded_init_data.sql")
+ execMultipleQueries(t, vtgateConn, "product:0", string(lines))
+ execVtgateQuery(t, vtgateConn, "product:0", "insert into customer_seq(id, next_id, cache) values(0, 100, 100);")
+ execVtgateQuery(t, vtgateConn, "product:0", "insert into order_seq(id, next_id, cache) values(0, 100, 100);")
+ fmt.Printf("Done inserting initial data\n")
- validateCount(t, vtgateConn, "product:0", "product", 2)
- validateCount(t, vtgateConn, "product:0", "customer", 3)
- validateQuery(t, vtgateConn, "product:0", "select * from merchant",
- `[[VARCHAR("monoprice") VARCHAR("electronics")] [VARCHAR("newegg") VARCHAR("electronics")]]`)
+ validateCount(t, vtgateConn, "product:0", "product", 2)
+ validateCount(t, vtgateConn, "product:0", "customer", 3)
+ validateQuery(t, vtgateConn, "product:0", "select * from merchant",
+ `[[VARCHAR("monoprice") VARCHAR("electronics")] [VARCHAR("newegg") VARCHAR("electronics")]]`)
+ })
}
func insertMoreCustomers(t *testing.T, numCustomers int) {
@@ -187,395 +225,544 @@ func insertMoreProducts(t *testing.T) {
execVtgateQuery(t, vtgateConn, "product", sql)
}
-func shardCustomer(t *testing.T, testReverse bool, cells []*Cell, sourceCellOrAlias string) {
- workflow := "p2c"
- sourceKs := "product"
- targetKs := "customer"
- ksWorkflow := fmt.Sprintf("%s.%s", targetKs, workflow)
- if _, err := vc.AddKeyspace(t, cells, "customer", "-80,80-", customerVSchema, customerSchema, defaultReplicas, defaultRdonly, 200); err != nil {
- t.Fatal(err)
- }
- if err := vtgate.WaitForStatusOfTabletInShard(fmt.Sprintf("%s.%s.master", "customer", "-80"), 1); err != nil {
- t.Fatal(err)
- }
- if err := vtgate.WaitForStatusOfTabletInShard(fmt.Sprintf("%s.%s.master", "customer", "80-"), 1); err != nil {
- t.Fatal(err)
- }
- tables := "customer,tenant"
- moveTables(t, sourceCellOrAlias, workflow, sourceKs, targetKs, tables)
-
- // Assume we are operating on first cell
- defaultCell := cells[0]
- custKs := vc.Cells[defaultCell.Name].Keyspaces["customer"]
- customerTab1 := custKs.Shards["-80"].Tablets["zone1-200"].Vttablet
- customerTab2 := custKs.Shards["80-"].Tablets["zone1-300"].Vttablet
-
- catchup(t, customerTab1, workflow, "MoveTables")
- catchup(t, customerTab2, workflow, "MoveTables")
-
- productTab := vc.Cells[defaultCell.Name].Keyspaces["product"].Shards["0"].Tablets["zone1-100"].Vttablet
- query := "select * from customer"
- require.True(t, validateThatQueryExecutesOnTablet(t, vtgateConn, productTab, "product", query, query))
- insertQuery1 := "insert into customer(cid, name) values(1001, 'tempCustomer1')"
- matchInsertQuery1 := "insert into customer(cid, `name`) values (:vtg1, :vtg2)"
- require.True(t, validateThatQueryExecutesOnTablet(t, vtgateConn, productTab, "product", insertQuery1, matchInsertQuery1))
- execVtgateQuery(t, vtgateConn, "product", "update tenant set name='xyz'")
- vdiff(t, ksWorkflow)
- switchReadsDryRun(t, allCellNames, ksWorkflow, dryRunResultsReadCustomerShard)
- switchReads(t, allCellNames, ksWorkflow)
- require.True(t, validateThatQueryExecutesOnTablet(t, vtgateConn, productTab, "customer", query, query))
- switchWritesDryRun(t, ksWorkflow, dryRunResultsSwitchWritesCustomerShard)
- switchWrites(t, ksWorkflow, false)
- ksShards := []string{"product/0", "customer/-80", "customer/80-"}
- printShardPositions(vc, ksShards)
- insertQuery2 := "insert into customer(name, cid) values('tempCustomer2', 100)"
- matchInsertQuery2 := "insert into customer(`name`, cid) values (:vtg1, :_cid0)"
- require.False(t, validateThatQueryExecutesOnTablet(t, vtgateConn, productTab, "customer", insertQuery2, matchInsertQuery2))
-
- insertQuery2 = "insert into customer(name, cid) values('tempCustomer3', 101)" //ID 101, hence due to reverse_bits in shard 80-
- require.True(t, validateThatQueryExecutesOnTablet(t, vtgateConn, customerTab2, "customer", insertQuery2, matchInsertQuery2))
-
- insertQuery2 = "insert into customer(name, cid) values('tempCustomer4', 102)" //ID 102, hence due to reverse_bits in shard -80
- require.True(t, validateThatQueryExecutesOnTablet(t, vtgateConn, customerTab1, "customer", insertQuery2, matchInsertQuery2))
- reverseKsWorkflow := "product.p2c_reverse"
- if testReverse {
- //Reverse Replicate
- switchReads(t, allCellNames, reverseKsWorkflow)
- printShardPositions(vc, ksShards)
- switchWrites(t, reverseKsWorkflow, false)
-
- insertQuery1 = "insert into customer(cid, name) values(1002, 'tempCustomer5')"
- require.True(t, validateThatQueryExecutesOnTablet(t, vtgateConn, productTab, "product", insertQuery1, matchInsertQuery1))
- // both inserts go into 80-, this tests the edge-case where a stream (-80) has no relevant new events after the previous switch
- insertQuery1 = "insert into customer(cid, name) values(1003, 'tempCustomer6')"
- require.False(t, validateThatQueryExecutesOnTablet(t, vtgateConn, customerTab1, "customer", insertQuery1, matchInsertQuery1))
- insertQuery1 = "insert into customer(cid, name) values(1004, 'tempCustomer7')"
- require.False(t, validateThatQueryExecutesOnTablet(t, vtgateConn, customerTab2, "customer", insertQuery1, matchInsertQuery1))
-
- //Go forward again
- switchReads(t, allCellNames, ksWorkflow)
- switchWrites(t, ksWorkflow, false)
- dropSourcesDryRun(t, ksWorkflow, false, dryRunResultsDropSourcesDropCustomerShard)
- dropSourcesDryRun(t, ksWorkflow, true, dryRunResultsDropSourcesRenameCustomerShard)
-
- var exists bool
- exists, err := checkIfBlacklistExists(t, vc, "product:0", "customer")
- require.NoError(t, err, "Error getting blacklist for customer:0")
- require.True(t, exists)
- dropSources(t, ksWorkflow)
+func insertMoreProductsForSourceThrottler(t *testing.T) {
+ sql := "insert into product(pid, description) values(103, 'new-cpu'),(104, 'new-camera'),(105, 'new-mouse');"
+ execVtgateQuery(t, vtgateConn, "product", sql)
+}
- exists, err = checkIfBlacklistExists(t, vc, "product:0", "customer")
- require.NoError(t, err, "Error getting blacklist for customer:0")
- require.False(t, exists)
+func insertMoreProductsForTargetThrottler(t *testing.T) {
+ sql := "insert into product(pid, description) values(203, 'new-cpu'),(204, 'new-camera'),(205, 'new-mouse');"
+ execVtgateQuery(t, vtgateConn, "product", sql)
+}
- for _, shard := range strings.Split("-80,80-", ",") {
- expectNumberOfStreams(t, vtgateConn, "shardCustomerTargetStreams", "p2c", "customer:"+shard, 0)
+func shardCustomer(t *testing.T, testReverse bool, cells []*Cell, sourceCellOrAlias string) {
+ t.Run("shardCustomer", func(t *testing.T) {
+ workflow := "p2c"
+ sourceKs := "product"
+ targetKs := "customer"
+ ksWorkflow := fmt.Sprintf("%s.%s", targetKs, workflow)
+ if _, err := vc.AddKeyspace(t, cells, "customer", "-80,80-", customerVSchema, customerSchema, defaultReplicas, defaultRdonly, 200); err != nil {
+ t.Fatal(err)
+ }
+ if err := vtgate.WaitForStatusOfTabletInShard(fmt.Sprintf("%s.%s.master", "customer", "-80"), 1); err != nil {
+ t.Fatal(err)
+ }
+ if err := vtgate.WaitForStatusOfTabletInShard(fmt.Sprintf("%s.%s.master", "customer", "80-"), 1); err != nil {
+ t.Fatal(err)
}
- expectNumberOfStreams(t, vtgateConn, "shardCustomerReverseStreams", "p2c_reverse", "product:0", 0)
+ tables := "customer,tenant"
+ moveTables(t, sourceCellOrAlias, workflow, sourceKs, targetKs, tables)
- var found bool
- found, err = checkIfTableExists(t, vc, "zone1-100", "customer")
- assert.NoError(t, err, "Customer table not deleted from zone1-100")
- require.False(t, found)
+ // Assume we are operating on first cell
+ defaultCell := cells[0]
+ custKs := vc.Cells[defaultCell.Name].Keyspaces["customer"]
+ customerTab1 := custKs.Shards["-80"].Tablets["zone1-200"].Vttablet
+ customerTab2 := custKs.Shards["80-"].Tablets["zone1-300"].Vttablet
- found, err = checkIfTableExists(t, vc, "zone1-200", "customer")
- assert.NoError(t, err, "Customer table not deleted from zone1-200")
- require.True(t, found)
+ catchup(t, customerTab1, workflow, "MoveTables")
+ catchup(t, customerTab2, workflow, "MoveTables")
- insertQuery2 = "insert into customer(name, cid) values('tempCustomer8', 103)" //ID 103, hence due to reverse_bits in shard 80-
+ productTab := vc.Cells[defaultCell.Name].Keyspaces["product"].Shards["0"].Tablets["zone1-100"].Vttablet
+ query := "select * from customer"
+ require.True(t, validateThatQueryExecutesOnTablet(t, vtgateConn, productTab, "product", query, query))
+ insertQuery1 := "insert into customer(cid, name) values(1001, 'tempCustomer1')"
+ matchInsertQuery1 := "insert into customer(cid, `name`) values (:vtg1, :vtg2)"
+ require.True(t, validateThatQueryExecutesOnTablet(t, vtgateConn, productTab, "product", insertQuery1, matchInsertQuery1))
+ execVtgateQuery(t, vtgateConn, "product", "update tenant set name='xyz'")
+ vdiff(t, ksWorkflow, "")
+ switchReadsDryRun(t, allCellNames, ksWorkflow, dryRunResultsReadCustomerShard)
+ switchReads(t, allCellNames, ksWorkflow)
+ require.True(t, validateThatQueryExecutesOnTablet(t, vtgateConn, productTab, "customer", query, query))
+ switchWritesDryRun(t, ksWorkflow, dryRunResultsSwitchWritesCustomerShard)
+ switchWrites(t, ksWorkflow, false)
+ ksShards := []string{"product/0", "customer/-80", "customer/80-"}
+ printShardPositions(vc, ksShards)
+ insertQuery2 := "insert into customer(name, cid) values('tempCustomer2', 100)"
+ matchInsertQuery2 := "insert into customer(`name`, cid) values (:vtg1, :_cid0)"
require.False(t, validateThatQueryExecutesOnTablet(t, vtgateConn, productTab, "customer", insertQuery2, matchInsertQuery2))
- insertQuery2 = "insert into customer(name, cid) values('tempCustomer10', 104)" //ID 105, hence due to reverse_bits in shard -80
- require.True(t, validateThatQueryExecutesOnTablet(t, vtgateConn, customerTab1, "customer", insertQuery2, matchInsertQuery2))
- insertQuery2 = "insert into customer(name, cid) values('tempCustomer9', 105)" //ID 104, hence due to reverse_bits in shard 80-
+
+ insertQuery2 = "insert into customer(name, cid) values('tempCustomer3', 101)" //ID 101, hence due to reverse_bits in shard 80-
require.True(t, validateThatQueryExecutesOnTablet(t, vtgateConn, customerTab2, "customer", insertQuery2, matchInsertQuery2))
- execVtgateQuery(t, vtgateConn, "customer", "delete from customer where name like 'tempCustomer%'")
- validateCountInTablet(t, customerTab1, "customer", "customer", 1)
- validateCountInTablet(t, customerTab2, "customer", "customer", 2)
- validateCount(t, vtgateConn, "customer", "customer.customer", 3)
+ insertQuery2 = "insert into customer(name, cid) values('tempCustomer4', 102)" //ID 102, hence due to reverse_bits in shard -80
+ require.True(t, validateThatQueryExecutesOnTablet(t, vtgateConn, customerTab1, "customer", insertQuery2, matchInsertQuery2))
+
+ execVtgateQuery(t, vtgateConn, "customer", "update customer set meta = convert(x'7b7d' using utf8mb4) where cid = 1")
+ reverseKsWorkflow := "product.p2c_reverse"
+ if testReverse {
+ //Reverse Replicate
+ switchReads(t, allCellNames, reverseKsWorkflow)
+ printShardPositions(vc, ksShards)
+ switchWrites(t, reverseKsWorkflow, false)
+
+ insertQuery1 = "insert into customer(cid, name) values(1002, 'tempCustomer5')"
+ require.True(t, validateThatQueryExecutesOnTablet(t, vtgateConn, productTab, "product", insertQuery1, matchInsertQuery1))
+ // both inserts go into 80-, this tests the edge-case where a stream (-80) has no relevant new events after the previous switch
+ insertQuery1 = "insert into customer(cid, name) values(1003, 'tempCustomer6')"
+ require.False(t, validateThatQueryExecutesOnTablet(t, vtgateConn, customerTab1, "customer", insertQuery1, matchInsertQuery1))
+ insertQuery1 = "insert into customer(cid, name) values(1004, 'tempCustomer7')"
+ require.False(t, validateThatQueryExecutesOnTablet(t, vtgateConn, customerTab2, "customer", insertQuery1, matchInsertQuery1))
+
+ //Go forward again
+ switchReads(t, allCellNames, ksWorkflow)
+ switchWrites(t, ksWorkflow, false)
+ dropSourcesDryRun(t, ksWorkflow, false, dryRunResultsDropSourcesDropCustomerShard)
+ dropSourcesDryRun(t, ksWorkflow, true, dryRunResultsDropSourcesRenameCustomerShard)
+
+ var exists bool
+ exists, err := checkIfBlacklistExists(t, vc, "product:0", "customer")
+ require.NoError(t, err, "Error getting blacklist for customer:0")
+ require.True(t, exists)
+ dropSources(t, ksWorkflow)
+
+ exists, err = checkIfBlacklistExists(t, vc, "product:0", "customer")
+ require.NoError(t, err, "Error getting blacklist for customer:0")
+ require.False(t, exists)
+
+ for _, shard := range strings.Split("-80,80-", ",") {
+ expectNumberOfStreams(t, vtgateConn, "shardCustomerTargetStreams", "p2c", "customer:"+shard, 0)
+ }
- query = "insert into customer (name, cid) values('george', 5)"
- execVtgateQuery(t, vtgateConn, "customer", query)
- validateCountInTablet(t, customerTab1, "customer", "customer", 1)
- validateCountInTablet(t, customerTab2, "customer", "customer", 3)
- validateCount(t, vtgateConn, "customer", "customer.customer", 4)
- }
+ expectNumberOfStreams(t, vtgateConn, "shardCustomerReverseStreams", "p2c_reverse", "product:0", 0)
+
+ var found bool
+ found, err = checkIfTableExists(t, vc, "zone1-100", "customer")
+ assert.NoError(t, err, "Customer table not deleted from zone1-100")
+ require.False(t, found)
+
+ found, err = checkIfTableExists(t, vc, "zone1-200", "customer")
+ assert.NoError(t, err, "Customer table not deleted from zone1-200")
+ require.True(t, found)
+
+ insertQuery2 = "insert into customer(name, cid) values('tempCustomer8', 103)" //ID 103, hence due to reverse_bits in shard 80-
+ require.False(t, validateThatQueryExecutesOnTablet(t, vtgateConn, productTab, "customer", insertQuery2, matchInsertQuery2))
+ insertQuery2 = "insert into customer(name, cid) values('tempCustomer10', 104)" //ID 105, hence due to reverse_bits in shard -80
+ require.True(t, validateThatQueryExecutesOnTablet(t, vtgateConn, customerTab1, "customer", insertQuery2, matchInsertQuery2))
+ insertQuery2 = "insert into customer(name, cid) values('tempCustomer9', 105)" //ID 104, hence due to reverse_bits in shard 80-
+ require.True(t, validateThatQueryExecutesOnTablet(t, vtgateConn, customerTab2, "customer", insertQuery2, matchInsertQuery2))
+
+ execVtgateQuery(t, vtgateConn, "customer", "delete from customer where name like 'tempCustomer%'")
+ validateCountInTablet(t, customerTab1, "customer", "customer", 1)
+ validateCountInTablet(t, customerTab2, "customer", "customer", 2)
+ validateCount(t, vtgateConn, "customer", "customer.customer", 3)
+
+ query = "insert into customer (name, cid) values('george', 5)"
+ execVtgateQuery(t, vtgateConn, "customer", query)
+ validateCountInTablet(t, customerTab1, "customer", "customer", 1)
+ validateCountInTablet(t, customerTab2, "customer", "customer", 3)
+ validateCount(t, vtgateConn, "customer", "customer.customer", 4)
+ }
+ })
}
func validateRollupReplicates(t *testing.T) {
- insertMoreProducts(t)
- time.Sleep(1 * time.Second)
- validateCount(t, vtgateConn, "product", "rollup", 1)
- validateQuery(t, vtgateConn, "product:0", "select rollupname, kount from rollup",
- `[[VARCHAR("total") INT32(5)]]`)
+ t.Run("validateRollupReplicates", func(t *testing.T) {
+ insertMoreProducts(t)
+ time.Sleep(1 * time.Second)
+ validateCount(t, vtgateConn, "product", "rollup", 1)
+ validateQuery(t, vtgateConn, "product:0", "select rollupname, kount from rollup",
+ `[[VARCHAR("total") INT32(5)]]`)
+ })
}
func reshardCustomer2to4Split(t *testing.T, cells []*Cell, sourceCellOrAlias string) {
- ksName := "customer"
- counts := map[string]int{"zone1-600": 4, "zone1-700": 5, "zone1-800": 6, "zone1-900": 5}
- reshard(t, ksName, "customer", "c2c4", "-80,80-", "-40,40-80,80-c0,c0-", 600, counts, nil, cells, sourceCellOrAlias)
- validateCount(t, vtgateConn, ksName, "customer", 20)
- query := "insert into customer (name) values('yoko')"
- execVtgateQuery(t, vtgateConn, ksName, query)
- validateCount(t, vtgateConn, ksName, "customer", 21)
+ t.Run("reshardCustomer2to4Split", func(t *testing.T) {
+ ksName := "customer"
+ counts := map[string]int{"zone1-600": 4, "zone1-700": 5, "zone1-800": 6, "zone1-900": 5}
+ reshard(t, ksName, "customer", "c2c4", "-80,80-", "-40,40-80,80-c0,c0-", 600, counts, nil, cells, sourceCellOrAlias)
+ validateCount(t, vtgateConn, ksName, "customer", 20)
+ query := "insert into customer (name) values('yoko')"
+ execVtgateQuery(t, vtgateConn, ksName, query)
+ validateCount(t, vtgateConn, ksName, "customer", 21)
+ })
}
func reshardMerchant2to3SplitMerge(t *testing.T) {
- ksName := "merchant"
- counts := map[string]int{"zone1-1600": 0, "zone1-1700": 2, "zone1-1800": 0}
- reshard(t, ksName, "merchant", "m2m3", "-80,80-", "-40,40-c0,c0-", 1600, counts, dryRunResultsSwitchWritesM2m3, nil, "")
- validateCount(t, vtgateConn, ksName, "merchant", 2)
- query := "insert into merchant (mname, category) values('amazon', 'electronics')"
- execVtgateQuery(t, vtgateConn, ksName, query)
- validateCount(t, vtgateConn, ksName, "merchant", 3)
+ t.Run("reshardMerchant2to3SplitMerge", func(t *testing.T) {
+ ksName := "merchant"
+ counts := map[string]int{"zone1-1600": 0, "zone1-1700": 2, "zone1-1800": 0}
+ reshard(t, ksName, "merchant", "m2m3", "-80,80-", "-40,40-c0,c0-", 1600, counts, dryRunResultsSwitchWritesM2m3, nil, "")
+ validateCount(t, vtgateConn, ksName, "merchant", 2)
+ query := "insert into merchant (mname, category) values('amazon', 'electronics')"
+ execVtgateQuery(t, vtgateConn, ksName, query)
+ validateCount(t, vtgateConn, ksName, "merchant", 3)
+
+ var output string
+ var err error
- var output string
- var err error
-
- for _, shard := range strings.Split("-80,80-", ",") {
- output, err = vc.VtctlClient.ExecuteCommandWithOutput("GetShard", "merchant:"+shard)
- if err == nil {
- t.Fatal("GetShard merchant:-80 failed")
+ for _, shard := range strings.Split("-80,80-", ",") {
+ output, err = vc.VtctlClient.ExecuteCommandWithOutput("GetShard", "merchant:"+shard)
+ if err == nil {
+ t.Fatal("GetShard merchant:-80 failed")
+ }
+ assert.Contains(t, output, "node doesn't exist", "GetShard succeeded for dropped shard merchant:"+shard)
}
- assert.Contains(t, output, "node doesn't exist", "GetShard succeeded for dropped shard merchant:"+shard)
- }
- for _, shard := range strings.Split("-40,40-c0,c0-", ",") {
- output, err = vc.VtctlClient.ExecuteCommandWithOutput("GetShard", "merchant:"+shard)
- if err != nil {
- t.Fatalf("GetShard merchant failed for: %s: %v", shard, err)
+ for _, shard := range strings.Split("-40,40-c0,c0-", ",") {
+ output, err = vc.VtctlClient.ExecuteCommandWithOutput("GetShard", "merchant:"+shard)
+ if err != nil {
+ t.Fatalf("GetShard merchant failed for: %s: %v", shard, err)
+ }
+ assert.NotContains(t, output, "node doesn't exist", "GetShard failed for valid shard merchant:"+shard)
+ assert.Contains(t, output, "master_alias", "GetShard failed for valid shard merchant:"+shard)
}
- assert.NotContains(t, output, "node doesn't exist", "GetShard failed for valid shard merchant:"+shard)
- assert.Contains(t, output, "master_alias", "GetShard failed for valid shard merchant:"+shard)
- }
- for _, shard := range strings.Split("-40,40-c0,c0-", ",") {
- expectNumberOfStreams(t, vtgateConn, "reshardMerchant2to3SplitMerge", "m2m3", "merchant:"+shard, 0)
- }
-
- var found bool
- found, err = checkIfTableExists(t, vc, "zone1-1600", "customer")
- assert.NoError(t, err, "Customer table found incorrectly in zone1-1600")
- require.False(t, found)
- found, err = checkIfTableExists(t, vc, "zone1-1600", "merchant")
- assert.NoError(t, err, "Merchant table not found in zone1-1600")
- require.True(t, found)
+ for _, shard := range strings.Split("-40,40-c0,c0-", ",") {
+ expectNumberOfStreams(t, vtgateConn, "reshardMerchant2to3SplitMerge", "m2m3", "merchant:"+shard, 0)
+ }
+ var found bool
+ found, err = checkIfTableExists(t, vc, "zone1-1600", "customer")
+ assert.NoError(t, err, "Customer table found incorrectly in zone1-1600")
+ require.False(t, found)
+ found, err = checkIfTableExists(t, vc, "zone1-1600", "merchant")
+ assert.NoError(t, err, "Merchant table not found in zone1-1600")
+ require.True(t, found)
+ })
}
func reshardMerchant3to1Merge(t *testing.T) {
- ksName := "merchant"
- counts := map[string]int{"zone1-2000": 3}
- reshard(t, ksName, "merchant", "m3m1", "-40,40-c0,c0-", "0", 2000, counts, nil, nil, "")
- validateCount(t, vtgateConn, ksName, "merchant", 3)
- query := "insert into merchant (mname, category) values('flipkart', 'electronics')"
- execVtgateQuery(t, vtgateConn, ksName, query)
- validateCount(t, vtgateConn, ksName, "merchant", 4)
+ t.Run("reshardMerchant3to1Merge", func(t *testing.T) {
+ ksName := "merchant"
+ counts := map[string]int{"zone1-2000": 3}
+ reshard(t, ksName, "merchant", "m3m1", "-40,40-c0,c0-", "0", 2000, counts, nil, nil, "")
+ validateCount(t, vtgateConn, ksName, "merchant", 3)
+ query := "insert into merchant (mname, category) values('flipkart', 'electronics')"
+ execVtgateQuery(t, vtgateConn, ksName, query)
+ validateCount(t, vtgateConn, ksName, "merchant", 4)
+ })
}
func reshardCustomer3to2SplitMerge(t *testing.T) { //-40,40-80,80-c0 => merge/split, c0- stays the same ending up with 3
- ksName := "customer"
- counts := map[string]int{"zone1-1000": 8, "zone1-1100": 8, "zone1-1200": 5}
- reshard(t, ksName, "customer", "c4c3", "-40,40-80,80-c0", "-60,60-c0", 1000, counts, nil, nil, "")
+ t.Run("reshardCustomer3to2SplitMerge", func(t *testing.T) {
+ ksName := "customer"
+ counts := map[string]int{"zone1-1000": 8, "zone1-1100": 8, "zone1-1200": 5}
+ reshard(t, ksName, "customer", "c4c3", "-40,40-80,80-c0", "-60,60-c0", 1000, counts, nil, nil, "")
+ })
}
func reshardCustomer3to1Merge(t *testing.T) { //to unsharded
- ksName := "customer"
- counts := map[string]int{"zone1-1500": 21}
- reshard(t, ksName, "customer", "c3c1", "-60,60-c0,c0-", "0", 1500, counts, nil, nil, "")
+ t.Run("reshardCustomer3to1Merge", func(t *testing.T) {
+ ksName := "customer"
+ counts := map[string]int{"zone1-1500": 21}
+ reshard(t, ksName, "customer", "c3c1", "-60,60-c0,c0-", "0", 1500, counts, nil, nil, "")
+ })
}
func reshard(t *testing.T, ksName string, tableName string, workflow string, sourceShards string, targetShards string, tabletIDBase int, counts map[string]int, dryRunResultSwitchWrites []string, cells []*Cell, sourceCellOrAlias string) {
- if cells == nil {
- cells = []*Cell{defaultCell}
- }
- if sourceCellOrAlias == "" {
- sourceCellOrAlias = defaultCell.Name
- }
- ksWorkflow := ksName + "." + workflow
- keyspace := vc.Cells[defaultCell.Name].Keyspaces[ksName]
- require.NoError(t, vc.AddShards(t, cells, keyspace, targetShards, defaultReplicas, defaultRdonly, tabletIDBase))
- arrTargetShardNames := strings.Split(targetShards, ",")
-
- for _, shardName := range arrTargetShardNames {
- if err := vtgate.WaitForStatusOfTabletInShard(fmt.Sprintf("%s.%s.master", ksName, shardName), 1); err != nil {
- t.Fatal(err)
+ t.Run("reshard", func(t *testing.T) {
+ if cells == nil {
+ cells = []*Cell{defaultCell}
}
- }
- if err := vc.VtctlClient.ExecuteCommand("Reshard", "-cells="+sourceCellOrAlias, "-tablet_types=replica,master", ksWorkflow, sourceShards, targetShards); err != nil {
- t.Fatalf("Reshard command failed with %+v\n", err)
- }
- tablets := vc.getVttabletsInKeyspace(t, defaultCell, ksName, "master")
- targetShards = "," + targetShards + ","
- for _, tab := range tablets {
- if strings.Contains(targetShards, ","+tab.Shard+",") {
- fmt.Printf("Waiting for vrepl to catch up on %s since it IS a target shard\n", tab.Shard)
- catchup(t, tab, workflow, "Reshard")
- } else {
- fmt.Printf("Not waiting for vrepl to catch up on %s since it is NOT a target shard\n", tab.Shard)
- continue
+ if sourceCellOrAlias == "" {
+ sourceCellOrAlias = defaultCell.Name
}
- }
- vdiff(t, ksWorkflow)
- switchReads(t, allCellNames, ksWorkflow)
- if dryRunResultSwitchWrites != nil {
- switchWritesDryRun(t, ksWorkflow, dryRunResultSwitchWrites)
- }
- switchWrites(t, ksWorkflow, false)
- dropSources(t, ksWorkflow)
+ ksWorkflow := ksName + "." + workflow
+ keyspace := vc.Cells[defaultCell.Name].Keyspaces[ksName]
+ require.NoError(t, vc.AddShards(t, cells, keyspace, targetShards, defaultReplicas, defaultRdonly, tabletIDBase))
+ arrTargetShardNames := strings.Split(targetShards, ",")
+
+ for _, shardName := range arrTargetShardNames {
+ if err := vtgate.WaitForStatusOfTabletInShard(fmt.Sprintf("%s.%s.master", ksName, shardName), 1); err != nil {
+ t.Fatal(err)
+ }
+ }
+ if err := vc.VtctlClient.ExecuteCommand("Reshard", "-cells="+sourceCellOrAlias, "-tablet_types=replica,master", ksWorkflow, sourceShards, targetShards); err != nil {
+ t.Fatalf("Reshard command failed with %+v\n", err)
+ }
+ tablets := vc.getVttabletsInKeyspace(t, defaultCell, ksName, "master")
+ targetShards = "," + targetShards + ","
+ for _, tab := range tablets {
+ if strings.Contains(targetShards, ","+tab.Shard+",") {
+ fmt.Printf("Waiting for vrepl to catch up on %s since it IS a target shard\n", tab.Shard)
+ catchup(t, tab, workflow, "Reshard")
+ } else {
+ fmt.Printf("Not waiting for vrepl to catch up on %s since it is NOT a target shard\n", tab.Shard)
+ continue
+ }
+ }
+ vdiff(t, ksWorkflow, "")
+ switchReads(t, allCellNames, ksWorkflow)
+ if dryRunResultSwitchWrites != nil {
+ switchWritesDryRun(t, ksWorkflow, dryRunResultSwitchWrites)
+ }
+ switchWrites(t, ksWorkflow, false)
+ dropSources(t, ksWorkflow)
- for tabletName, count := range counts {
- if tablets[tabletName] == nil {
- continue
+ for tabletName, count := range counts {
+ if tablets[tabletName] == nil {
+ continue
+ }
+ validateCountInTablet(t, tablets[tabletName], ksName, tableName, count)
}
- validateCountInTablet(t, tablets[tabletName], ksName, tableName, count)
- }
+ })
}
func shardOrders(t *testing.T) {
- workflow := "o2c"
- cell := defaultCell.Name
- sourceKs := "product"
- targetKs := "customer"
- tables := "orders"
- ksWorkflow := fmt.Sprintf("%s.%s", targetKs, workflow)
- applyVSchema(t, ordersVSchema, targetKs)
- moveTables(t, cell, workflow, sourceKs, targetKs, tables)
-
- custKs := vc.Cells[defaultCell.Name].Keyspaces["customer"]
- customerTab1 := custKs.Shards["-80"].Tablets["zone1-200"].Vttablet
- customerTab2 := custKs.Shards["80-"].Tablets["zone1-300"].Vttablet
- catchup(t, customerTab1, workflow, "MoveTables")
- catchup(t, customerTab2, workflow, "MoveTables")
- vdiff(t, ksWorkflow)
- switchReads(t, allCellNames, ksWorkflow)
- switchWrites(t, ksWorkflow, false)
- dropSources(t, ksWorkflow)
- validateCountInTablet(t, customerTab1, "customer", "orders", 1)
- validateCountInTablet(t, customerTab2, "customer", "orders", 2)
- validateCount(t, vtgateConn, "customer", "orders", 3)
+ t.Run("shardOrders", func(t *testing.T) {
+ workflow := "o2c"
+ cell := defaultCell.Name
+ sourceKs := "product"
+ targetKs := "customer"
+ tables := "orders"
+ ksWorkflow := fmt.Sprintf("%s.%s", targetKs, workflow)
+ applyVSchema(t, ordersVSchema, targetKs)
+ moveTables(t, cell, workflow, sourceKs, targetKs, tables)
+
+ custKs := vc.Cells[defaultCell.Name].Keyspaces["customer"]
+ customerTab1 := custKs.Shards["-80"].Tablets["zone1-200"].Vttablet
+ customerTab2 := custKs.Shards["80-"].Tablets["zone1-300"].Vttablet
+ catchup(t, customerTab1, workflow, "MoveTables")
+ catchup(t, customerTab2, workflow, "MoveTables")
+ vdiff(t, ksWorkflow, "")
+ switchReads(t, allCellNames, ksWorkflow)
+ switchWrites(t, ksWorkflow, false)
+ dropSources(t, ksWorkflow)
+ validateCountInTablet(t, customerTab1, "customer", "orders", 1)
+ validateCountInTablet(t, customerTab2, "customer", "orders", 2)
+ validateCount(t, vtgateConn, "customer", "orders", 3)
+ })
}
func shardMerchant(t *testing.T) {
- workflow := "p2m"
- cell := defaultCell.Name
- sourceKs := "product"
- targetKs := "merchant"
- tables := "merchant"
- ksWorkflow := fmt.Sprintf("%s.%s", targetKs, workflow)
- if _, err := vc.AddKeyspace(t, []*Cell{defaultCell}, "merchant", "-80,80-", merchantVSchema, "", defaultReplicas, defaultRdonly, 400); err != nil {
- t.Fatal(err)
- }
- if err := vtgate.WaitForStatusOfTabletInShard(fmt.Sprintf("%s.%s.master", "merchant", "-80"), 1); err != nil {
- t.Fatal(err)
- }
- if err := vtgate.WaitForStatusOfTabletInShard(fmt.Sprintf("%s.%s.master", "merchant", "80-"), 1); err != nil {
- t.Fatal(err)
- }
- moveTables(t, cell, workflow, sourceKs, targetKs, tables)
- merchantKs := vc.Cells[defaultCell.Name].Keyspaces["merchant"]
- merchantTab1 := merchantKs.Shards["-80"].Tablets["zone1-400"].Vttablet
- merchantTab2 := merchantKs.Shards["80-"].Tablets["zone1-500"].Vttablet
- catchup(t, merchantTab1, workflow, "MoveTables")
- catchup(t, merchantTab2, workflow, "MoveTables")
-
- vdiff(t, "merchant.p2m")
- switchReads(t, allCellNames, ksWorkflow)
- switchWrites(t, ksWorkflow, false)
- dropSources(t, ksWorkflow)
-
- validateCountInTablet(t, merchantTab1, "merchant", "merchant", 1)
- validateCountInTablet(t, merchantTab2, "merchant", "merchant", 1)
- validateCount(t, vtgateConn, "merchant", "merchant", 2)
-
-}
-
-func vdiff(t *testing.T, workflow string) {
- output, err := vc.VtctlClient.ExecuteCommandWithOutput("VDiff", "-format", "json", workflow)
- fmt.Printf("vdiff err: %+v, output: %+v\n", err, output)
- require.Nil(t, err)
- require.NotNil(t, output)
- diffReports := make([]*wrangler.DiffReport, 0)
- err = json.Unmarshal([]byte(output), &diffReports)
- require.Nil(t, err)
- if len(diffReports) < 1 {
- t.Fatal("VDiff did not return a valid json response " + output + "\n")
- }
- require.True(t, len(diffReports) > 0)
- for key, diffReport := range diffReports {
- if diffReport.ProcessedRows != diffReport.MatchingRows {
- t.Errorf("vdiff error for %d : %#v\n", key, diffReport)
+ t.Run("shardMerchant", func(t *testing.T) {
+ workflow := "p2m"
+ cell := defaultCell.Name
+ sourceKs := "product"
+ targetKs := "merchant"
+ tables := "merchant"
+ ksWorkflow := fmt.Sprintf("%s.%s", targetKs, workflow)
+ if _, err := vc.AddKeyspace(t, []*Cell{defaultCell}, "merchant", "-80,80-", merchantVSchema, "", defaultReplicas, defaultRdonly, 400); err != nil {
+ t.Fatal(err)
}
- }
+ if err := vtgate.WaitForStatusOfTabletInShard(fmt.Sprintf("%s.%s.master", "merchant", "-80"), 1); err != nil {
+ t.Fatal(err)
+ }
+ if err := vtgate.WaitForStatusOfTabletInShard(fmt.Sprintf("%s.%s.master", "merchant", "80-"), 1); err != nil {
+ t.Fatal(err)
+ }
+ moveTables(t, cell, workflow, sourceKs, targetKs, tables)
+ merchantKs := vc.Cells[defaultCell.Name].Keyspaces["merchant"]
+ merchantTab1 := merchantKs.Shards["-80"].Tablets["zone1-400"].Vttablet
+ merchantTab2 := merchantKs.Shards["80-"].Tablets["zone1-500"].Vttablet
+ catchup(t, merchantTab1, workflow, "MoveTables")
+ catchup(t, merchantTab2, workflow, "MoveTables")
+
+ vdiff(t, "merchant.p2m", "")
+ switchReads(t, allCellNames, ksWorkflow)
+ switchWrites(t, ksWorkflow, false)
+ dropSources(t, ksWorkflow)
+
+ validateCountInTablet(t, merchantTab1, "merchant", "merchant", 1)
+ validateCountInTablet(t, merchantTab2, "merchant", "merchant", 1)
+ validateCount(t, vtgateConn, "merchant", "merchant", 2)
+ })
+}
+
+func vdiff(t *testing.T, workflow, cells string) {
+ t.Run("vdiff", func(t *testing.T) {
+ output, err := vc.VtctlClient.ExecuteCommandWithOutput("VDiff", "-tablet_types=master", "-source_cell="+cells, "-format", "json", workflow)
+ fmt.Printf("vdiff err: %+v, output: %+v\n", err, output)
+ require.Nil(t, err)
+ require.NotNil(t, output)
+ diffReports := make([]*wrangler.DiffReport, 0)
+ err = json.Unmarshal([]byte(output), &diffReports)
+ require.Nil(t, err)
+ if len(diffReports) < 1 {
+ t.Fatal("VDiff did not return a valid json response " + output + "\n")
+ }
+ require.True(t, len(diffReports) > 0)
+ for key, diffReport := range diffReports {
+ if diffReport.ProcessedRows != diffReport.MatchingRows {
+ require.Failf(t, "vdiff failed", "Table %d : %#v\n", key, diffReport)
+ }
+ }
+ })
}
func materialize(t *testing.T, spec string) {
- err := vc.VtctlClient.ExecuteCommand("Materialize", spec)
- require.NoError(t, err, "Materialize")
+ t.Run("materialize", func(t *testing.T) {
+ err := vc.VtctlClient.ExecuteCommand("Materialize", spec)
+ require.NoError(t, err, "Materialize")
+ })
}
func materializeProduct(t *testing.T) {
- workflow := "cproduct"
- keyspace := "customer"
- applyVSchema(t, materializeProductVSchema, keyspace)
- materialize(t, materializeProductSpec)
- customerTablets := vc.getVttabletsInKeyspace(t, defaultCell, keyspace, "master")
- for _, tab := range customerTablets {
- catchup(t, tab, workflow, "Materialize")
- }
- for _, tab := range customerTablets {
- validateCountInTablet(t, tab, keyspace, workflow, 5)
- }
+ t.Run("materializeProduct", func(t *testing.T) {
+ // materializing from "product" keyspace to "customer" keyspace
+ workflow := "cproduct"
+ keyspace := "customer"
+ applyVSchema(t, materializeProductVSchema, keyspace)
+ materialize(t, materializeProductSpec)
+ customerTablets := vc.getVttabletsInKeyspace(t, defaultCell, keyspace, "master")
+ {
+ for _, tab := range customerTablets {
+ catchup(t, tab, workflow, "Materialize")
+ }
+ for _, tab := range customerTablets {
+ validateCountInTablet(t, tab, keyspace, workflow, 5)
+ }
+ }
+
+ productTablets := vc.getVttabletsInKeyspace(t, defaultCell, "product", "master")
+ t.Run("throttle-app-product", func(t *testing.T) {
+ // Now, throttle the streamer on source tablets, insert some rows
+ for _, tab := range productTablets {
+ _, body, err := throttleApp(tab, sourceThrottlerAppName)
+ assert.NoError(t, err)
+ assert.Contains(t, body, sourceThrottlerAppName)
+ }
+ // Wait for throttling to take effect (caching will expire by this time):
+ time.Sleep(1 * time.Second)
+ for _, tab := range productTablets {
+ {
+ _, body, err := throttlerCheckSelf(tab, sourceThrottlerAppName)
+ assert.NoError(t, err)
+ assert.Contains(t, body, "417")
+ }
+ {
+ _, body, err := throttlerCheckSelf(tab, targetThrottlerAppName)
+ assert.NoError(t, err)
+ assert.Contains(t, body, "200")
+ }
+ }
+ insertMoreProductsForSourceThrottler(t)
+ // To be fair to the test, we give the target time to apply the new changes. We expect it to NOT get them in the first place,
+ time.Sleep(1 * time.Second)
+ // we expect the additional rows to **not appear** in the materialized view
+ for _, tab := range customerTablets {
+ validateCountInTablet(t, tab, keyspace, workflow, 5)
+ }
+ })
+ t.Run("unthrottle-app-product", func(t *testing.T) {
+ // unthrottle on source tablets, and expect the rows to show up
+ for _, tab := range productTablets {
+ _, body, err := unthrottleApp(tab, sourceThrottlerAppName)
+ assert.NoError(t, err)
+ assert.Contains(t, body, sourceThrottlerAppName)
+ }
+ // give time for unthrottling to take effect and for target to fetch data
+ time.Sleep(3 * time.Second)
+ for _, tab := range productTablets {
+ {
+ _, body, err := throttlerCheckSelf(tab, sourceThrottlerAppName)
+ assert.NoError(t, err)
+ assert.Contains(t, body, "200")
+ }
+ }
+ for _, tab := range customerTablets {
+ validateCountInTablet(t, tab, keyspace, workflow, 8)
+ }
+ })
+
+ t.Run("throttle-app-customer", func(t *testing.T) {
+ // Now, throttle the streamer on source tablets, insert some rows
+ for _, tab := range customerTablets {
+ _, body, err := throttleApp(tab, targetThrottlerAppName)
+ assert.NoError(t, err)
+ assert.Contains(t, body, targetThrottlerAppName)
+ }
+ // Wait for throttling to take effect (caching will expire by this time):
+ time.Sleep(1 * time.Second)
+ for _, tab := range customerTablets {
+ {
+ _, body, err := throttlerCheckSelf(tab, targetThrottlerAppName)
+ assert.NoError(t, err)
+ assert.Contains(t, body, "417")
+ }
+ {
+ _, body, err := throttlerCheckSelf(tab, sourceThrottlerAppName)
+ assert.NoError(t, err)
+ assert.Contains(t, body, "200")
+ }
+ }
+ insertMoreProductsForTargetThrottler(t)
+ // To be fair to the test, we give the target time to apply the new changes. We expect it to NOT get them in the first place,
+ time.Sleep(1 * time.Second)
+ // we expect the additional rows to **not appear** in the materialized view
+ for _, tab := range customerTablets {
+ validateCountInTablet(t, tab, keyspace, workflow, 8)
+ }
+ })
+ t.Run("unthrottle-app-customer", func(t *testing.T) {
+ // unthrottle on source tablets, and expect the rows to show up
+ for _, tab := range customerTablets {
+ _, body, err := unthrottleApp(tab, targetThrottlerAppName)
+ assert.NoError(t, err)
+ assert.Contains(t, body, targetThrottlerAppName)
+ }
+ // give time for unthrottling to take effect and for target to fetch data
+ time.Sleep(3 * time.Second)
+ for _, tab := range customerTablets {
+ {
+ _, body, err := throttlerCheckSelf(tab, targetThrottlerAppName)
+ assert.NoError(t, err)
+ assert.Contains(t, body, "200")
+ }
+ }
+ for _, tab := range customerTablets {
+ validateCountInTablet(t, tab, keyspace, workflow, 11)
+ }
+ })
+ })
}
func materializeRollup(t *testing.T) {
- keyspace := "product"
- workflow := "rollup"
- applyVSchema(t, materializeSalesVSchema, keyspace)
- productTab := vc.Cells[defaultCell.Name].Keyspaces["product"].Shards["0"].Tablets["zone1-100"].Vttablet
- materialize(t, materializeRollupSpec)
- catchup(t, productTab, workflow, "Materialize")
- validateCount(t, vtgateConn, "product", "rollup", 1)
- validateQuery(t, vtgateConn, "product:0", "select rollupname, kount from rollup",
- `[[VARCHAR("total") INT32(2)]]`)
+ t.Run("materializeRollup", func(t *testing.T) {
+ keyspace := "product"
+ workflow := "rollup"
+ applyVSchema(t, materializeSalesVSchema, keyspace)
+ productTab := vc.Cells[defaultCell.Name].Keyspaces["product"].Shards["0"].Tablets["zone1-100"].Vttablet
+ materialize(t, materializeRollupSpec)
+ catchup(t, productTab, workflow, "Materialize")
+ validateCount(t, vtgateConn, "product", "rollup", 1)
+ validateQuery(t, vtgateConn, "product:0", "select rollupname, kount from rollup",
+ `[[VARCHAR("total") INT32(2)]]`)
+ })
}
func materializeSales(t *testing.T) {
- keyspace := "product"
- applyVSchema(t, materializeSalesVSchema, keyspace)
- materialize(t, materializeSalesSpec)
- productTab := vc.Cells[defaultCell.Name].Keyspaces["product"].Shards["0"].Tablets["zone1-100"].Vttablet
- catchup(t, productTab, "sales", "Materialize")
- validateCount(t, vtgateConn, "product", "sales", 2)
- validateQuery(t, vtgateConn, "product:0", "select kount, amount from sales",
- `[[INT32(1) INT32(10)] [INT32(2) INT32(35)]]`)
+ t.Run("materializeSales", func(t *testing.T) {
+ keyspace := "product"
+ applyVSchema(t, materializeSalesVSchema, keyspace)
+ materialize(t, materializeSalesSpec)
+ productTab := vc.Cells[defaultCell.Name].Keyspaces["product"].Shards["0"].Tablets["zone1-100"].Vttablet
+ catchup(t, productTab, "sales", "Materialize")
+ validateCount(t, vtgateConn, "product", "sales", 2)
+ validateQuery(t, vtgateConn, "product:0", "select kount, amount from sales",
+ `[[INT32(1) INT32(10)] [INT32(2) INT32(35)]]`)
+ })
}
func materializeMerchantSales(t *testing.T) {
- workflow := "msales"
- materialize(t, materializeMerchantSalesSpec)
- merchantTablets := vc.getVttabletsInKeyspace(t, defaultCell, "merchant", "master")
- for _, tab := range merchantTablets {
- catchup(t, tab, workflow, "Materialize")
- }
- validateCountInTablet(t, merchantTablets["zone1-400"], "merchant", "msales", 1)
- validateCountInTablet(t, merchantTablets["zone1-500"], "merchant", "msales", 1)
- validateCount(t, vtgateConn, "merchant", "msales", 2)
+ t.Run("materializeMerchantSales", func(t *testing.T) {
+ workflow := "msales"
+ materialize(t, materializeMerchantSalesSpec)
+ merchantTablets := vc.getVttabletsInKeyspace(t, defaultCell, "merchant", "master")
+ for _, tab := range merchantTablets {
+ catchup(t, tab, workflow, "Materialize")
+ }
+ validateCountInTablet(t, merchantTablets["zone1-400"], "merchant", "msales", 1)
+ validateCountInTablet(t, merchantTablets["zone1-500"], "merchant", "msales", 1)
+ validateCount(t, vtgateConn, "merchant", "msales", 2)
+ })
}
func materializeMerchantOrders(t *testing.T) {
- workflow := "morders"
- keyspace := "merchant"
- applyVSchema(t, merchantOrdersVSchema, keyspace)
- materialize(t, materializeMerchantOrdersSpec)
- merchantTablets := vc.getVttabletsInKeyspace(t, defaultCell, "merchant", "master")
- for _, tab := range merchantTablets {
- catchup(t, tab, workflow, "Materialize")
- }
- validateCountInTablet(t, merchantTablets["zone1-400"], "merchant", "morders", 2)
- validateCountInTablet(t, merchantTablets["zone1-500"], "merchant", "morders", 1)
- validateCount(t, vtgateConn, "merchant", "morders", 3)
+ t.Run("materializeMerchantOrders", func(t *testing.T) {
+ workflow := "morders"
+ keyspace := "merchant"
+ applyVSchema(t, merchantOrdersVSchema, keyspace)
+ materialize(t, materializeMerchantOrdersSpec)
+ merchantTablets := vc.getVttabletsInKeyspace(t, defaultCell, "merchant", "master")
+ for _, tab := range merchantTablets {
+ catchup(t, tab, workflow, "Materialize")
+ }
+ validateCountInTablet(t, merchantTablets["zone1-400"], "merchant", "morders", 2)
+ validateCountInTablet(t, merchantTablets["zone1-500"], "merchant", "morders", 1)
+ validateCount(t, vtgateConn, "merchant", "morders", 3)
+ })
}
func checkVtgateHealth(t *testing.T, cell *Cell) {
@@ -594,8 +781,8 @@ func checkTabletHealth(t *testing.T, tablet *Tablet) {
}
}
-func iterateTablets(t *testing.T, f func(t *testing.T, tablet *Tablet)) {
- for _, cell := range vc.Cells {
+func iterateTablets(t *testing.T, cluster *VitessCluster, f func(t *testing.T, tablet *Tablet)) {
+ for _, cell := range cluster.Cells {
for _, ks := range cell.Keyspaces {
for _, shard := range ks.Shards {
for _, tablet := range shard.Tablets {
@@ -606,15 +793,15 @@ func iterateTablets(t *testing.T, f func(t *testing.T, tablet *Tablet)) {
}
}
-func iterateCells(t *testing.T, f func(t *testing.T, cell *Cell)) {
- for _, cell := range vc.Cells {
+func iterateCells(t *testing.T, cluster *VitessCluster, f func(t *testing.T, cell *Cell)) {
+ for _, cell := range cluster.Cells {
f(t, cell)
}
}
-func verifyClusterHealth(t *testing.T) {
- iterateCells(t, checkVtgateHealth)
- iterateTablets(t, checkTabletHealth)
+func verifyClusterHealth(t *testing.T, cluster *VitessCluster) {
+ iterateCells(t, cluster, checkVtgateHealth)
+ iterateTablets(t, cluster, checkTabletHealth)
}
func catchup(t *testing.T, vttablet *cluster.VttabletProcess, workflow, info string) {
diff --git a/go/test/endtoend/vtcombo/vttest_sample_test.go b/go/test/endtoend/vtcombo/vttest_sample_test.go
index 32c8fb86729..2bce46efb5f 100644
--- a/go/test/endtoend/vtcombo/vttest_sample_test.go
+++ b/go/test/endtoend/vtcombo/vttest_sample_test.go
@@ -74,6 +74,7 @@ func TestMain(m *testing.M) {
cfg.Topology = topology
cfg.SchemaDir = os.Getenv("VTROOT") + "/test/vttest_schema"
cfg.DefaultSchemaDir = os.Getenv("VTROOT") + "/test/vttest_schema/default"
+ cfg.PersistentMode = true
localCluster = &vttest.LocalCluster{
Config: cfg,
@@ -116,27 +117,24 @@ func TestStandalone(t *testing.T) {
conn, err := vtgateconn.Dial(ctx, grpcAddress)
require.Nil(t, err)
defer conn.Close()
- cur := conn.Session(ks1+":-80@master", nil)
idStart, rowCount := 1000, 500
- query := "insert into test_table (id, msg, keyspace_id) values (:id, :msg, :keyspace_id)"
- _, err = cur.Execute(ctx, "begin", nil)
- require.Nil(t, err)
+ insertManyRows(ctx, t, conn, idStart, rowCount)
+ assertInsertedRowsExist(ctx, t, conn, idStart, rowCount)
+ assertCanInsertRow(ctx, t, conn)
+ assertTablesPresent(t)
- for i := idStart; i < idStart+rowCount; i++ {
- bindVariables := map[string]*querypb.BindVariable{
- "id": {Type: querypb.Type_UINT64, Value: []byte(strconv.FormatInt(int64(i), 10))},
- "msg": {Type: querypb.Type_VARCHAR, Value: []byte("test" + strconv.FormatInt(int64(i), 10))},
- "keyspace_id": {Type: querypb.Type_UINT64, Value: []byte(strconv.FormatInt(int64(i), 10))},
- }
- _, err = cur.Execute(ctx, query, bindVariables)
- require.Nil(t, err)
- }
-
- _, err = cur.Execute(ctx, "commit", nil)
+ err = localCluster.TearDown()
require.Nil(t, err)
+ err = localCluster.Setup()
+ require.Nil(t, err)
+
+ assertInsertedRowsExist(ctx, t, conn, idStart, rowCount)
+ assertTablesPresent(t)
+}
- cur = conn.Session(ks1+":-80@rdonly", nil)
+func assertInsertedRowsExist(ctx context.Context, t *testing.T, conn *vtgateconn.VTGateConn, idStart, rowCount int) {
+ cur := conn.Session(ks1+":-80@rdonly", nil)
bindVariables := map[string]*querypb.BindVariable{
"id_start": {Type: querypb.Type_UINT64, Value: []byte(strconv.FormatInt(int64(idStart), 10))},
}
@@ -153,23 +151,49 @@ func TestStandalone(t *testing.T) {
require.Nil(t, err)
require.Equal(t, 1, len(res.Rows))
assert.Equal(t, "VARCHAR(\"test1000\")", res.Rows[0][1].String())
+}
- cur = conn.Session(ks1+":80-@master", nil)
- _, err = cur.Execute(ctx, "begin", nil)
+func assertCanInsertRow(ctx context.Context, t *testing.T, conn *vtgateconn.VTGateConn) {
+ cur := conn.Session(ks1+":80-@master", nil)
+ _, err := cur.Execute(ctx, "begin", nil)
require.Nil(t, err)
i := 0x810000000000000
- bindVariables = map[string]*querypb.BindVariable{
+ bindVariables := map[string]*querypb.BindVariable{
"id": {Type: querypb.Type_UINT64, Value: []byte(strconv.FormatInt(int64(i), 10))},
"msg": {Type: querypb.Type_VARCHAR, Value: []byte("test" + strconv.FormatInt(int64(i), 10))},
"keyspace_id": {Type: querypb.Type_UINT64, Value: []byte(strconv.FormatInt(int64(i), 10))},
}
+ query := "insert into test_table (id, msg, keyspace_id) values (:id, :msg, :keyspace_id)"
_, err = cur.Execute(ctx, query, bindVariables)
require.Nil(t, err)
_, err = cur.Execute(ctx, "commit", nil)
require.Nil(t, err)
+}
+
+func insertManyRows(ctx context.Context, t *testing.T, conn *vtgateconn.VTGateConn, idStart, rowCount int) {
+ cur := conn.Session(ks1+":-80@master", nil)
+
+ query := "insert into test_table (id, msg, keyspace_id) values (:id, :msg, :keyspace_id)"
+ _, err := cur.Execute(ctx, "begin", nil)
+ require.Nil(t, err)
+
+ for i := idStart; i < idStart+rowCount; i++ {
+ bindVariables := map[string]*querypb.BindVariable{
+ "id": {Type: querypb.Type_UINT64, Value: []byte(strconv.FormatInt(int64(i), 10))},
+ "msg": {Type: querypb.Type_VARCHAR, Value: []byte("test" + strconv.FormatInt(int64(i), 10))},
+ "keyspace_id": {Type: querypb.Type_UINT64, Value: []byte(strconv.FormatInt(int64(i), 10))},
+ }
+ _, err = cur.Execute(ctx, query, bindVariables)
+ require.Nil(t, err)
+ }
+
+ _, err = cur.Execute(ctx, "commit", nil)
+ require.Nil(t, err)
+}
+func assertTablesPresent(t *testing.T) {
tmpCmd := exec.Command("vtctlclient", "-vtctl_client_protocol", "grpc", "-server", grpcAddress, "-stderrthreshold", "0", "ListAllTablets", "test")
log.Infof("Running vtctlclient with command: %v", tmpCmd.Args)
diff --git a/go/test/endtoend/vtgate/aggr_test.go b/go/test/endtoend/vtgate/aggr_test.go
index f68a5808c34..adc8c93a84c 100644
--- a/go/test/endtoend/vtgate/aggr_test.go
+++ b/go/test/endtoend/vtgate/aggr_test.go
@@ -40,3 +40,22 @@ func TestAggregateTypes(t *testing.T) {
assertMatches(t, conn, "select val1, count(distinct val2) k, count(*) from aggr_test group by val1 order by k desc, val1 limit 4", `[[VARCHAR("c") INT64(2) INT64(2)] [VARCHAR("a") INT64(1) INT64(2)] [VARCHAR("b") INT64(1) INT64(1)] [VARCHAR("e") INT64(1) INT64(2)]]`)
exec(t, conn, "delete from aggr_test")
}
+
+func TestGroupBy(t *testing.T) {
+ defer cluster.PanicHandler(t)
+ ctx := context.Background()
+ conn, err := mysql.Connect(ctx, &vtParams)
+ require.Nil(t, err)
+ defer conn.Close()
+ exec(t, conn, "insert into t3(id5, id6, id7) values(1,1,2), (2,2,4), (3,2,4), (4,1,2), (5,1,2), (6,3,6)")
+ // test ordering and group by int column
+ assertMatches(t, conn, "select id6, id7, count(*) k from t3 group by id6, id7 order by k", `[[INT64(3) INT64(6) INT64(1)] [INT64(2) INT64(4) INT64(2)] [INT64(1) INT64(2) INT64(3)]]`)
+
+ defer func() {
+ exec(t, conn, "set workload = oltp")
+ exec(t, conn, "delete from t3")
+ }()
+ // Test the same queries in streaming mode
+ exec(t, conn, "set workload = olap")
+ assertMatches(t, conn, "select id6, id7, count(*) k from t3 group by id6, id7 order by k", `[[INT64(3) INT64(6) INT64(1)] [INT64(2) INT64(4) INT64(2)] [INT64(1) INT64(2) INT64(3)]]`)
+}
diff --git a/go/test/endtoend/vtgate/createdb_plugin/main_test.go b/go/test/endtoend/vtgate/createdb_plugin/main_test.go
new file mode 100644
index 00000000000..bf1677f7330
--- /dev/null
+++ b/go/test/endtoend/vtgate/createdb_plugin/main_test.go
@@ -0,0 +1,189 @@
+/*
+Copyright 2020 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package unsharded
+
+import (
+ "context"
+ "flag"
+ "fmt"
+ "os"
+ "sync"
+ "testing"
+ "time"
+
+ "github.com/stretchr/testify/assert"
+
+ "github.com/google/go-cmp/cmp"
+ "github.com/stretchr/testify/require"
+
+ "vitess.io/vitess/go/mysql"
+ "vitess.io/vitess/go/sqltypes"
+ "vitess.io/vitess/go/test/endtoend/cluster"
+)
+
+var (
+ clusterInstance *cluster.LocalProcessCluster
+ vtParams mysql.ConnParams
+ keyspaceName = "ks"
+ cell = "zone1"
+ hostname = "localhost"
+)
+
+func TestMain(m *testing.M) {
+ defer cluster.PanicHandler(nil)
+ flag.Parse()
+
+ exitCode := func() int {
+ clusterInstance = cluster.NewCluster(cell, hostname)
+ defer clusterInstance.Teardown()
+
+ // Start topo server
+ if err := clusterInstance.StartTopo(); err != nil {
+ return 1
+ }
+
+ // Start keyspace
+ keyspace := &cluster.Keyspace{
+ Name: keyspaceName,
+ }
+ if err := clusterInstance.StartKeyspace(*keyspace, []string{"-80", "80-"}, 0, false); err != nil {
+ return 1
+ }
+
+ // Start vtgate
+ clusterInstance.VtGateExtraArgs = []string{"-dbddl_plugin", "noop", "-mysql_server_query_timeout", "60s"}
+ vtgateProcess := clusterInstance.NewVtgateInstance()
+ vtgateProcess.SysVarSetEnabled = true
+ if err := vtgateProcess.Setup(); err != nil {
+ return 1
+ }
+
+ vtParams = mysql.ConnParams{
+ Host: clusterInstance.Hostname,
+ Port: clusterInstance.VtgateMySQLPort,
+ }
+ return m.Run()
+ }()
+ os.Exit(exitCode)
+}
+
+func TestDBDDLPlugin(t *testing.T) {
+ defer cluster.PanicHandler(t)
+ ctx := context.Background()
+ vtParams := mysql.ConnParams{
+ Host: "localhost",
+ Port: clusterInstance.VtgateMySQLPort,
+ }
+ conn, err := mysql.Connect(ctx, &vtParams)
+ require.NoError(t, err)
+ defer conn.Close()
+
+ createAndDrop := func(t *testing.T) {
+ wg := sync.WaitGroup{}
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+ qr := exec(t, conn, `create database aaa`)
+ require.EqualValues(t, 1, qr.RowsAffected)
+ }()
+ time.Sleep(300 * time.Millisecond)
+ start(t, "aaa")
+
+ // wait until the create database query has returned
+ wg.Wait()
+
+ exec(t, conn, `use aaa`)
+ exec(t, conn, `create table t (id bigint primary key)`)
+ exec(t, conn, `insert into t(id) values (1),(2),(3),(4),(5)`)
+ assertMatches(t, conn, "select count(*) from t", `[[INT64(5)]]`)
+
+ wg.Add(1)
+ go func() {
+ defer wg.Done()
+ _ = exec(t, conn, `drop database aaa`)
+ }()
+ time.Sleep(300 * time.Millisecond)
+ shutdown(t, "aaa")
+
+ // wait until the drop database query has returned
+ wg.Wait()
+
+ _, err = conn.ExecuteFetch(`select count(*) from t`, 1000, true)
+ require.Error(t, err)
+ }
+ t.Run("first try", func(t *testing.T) {
+ createAndDrop(t)
+ })
+ if !t.Failed() {
+ t.Run("second try", func(t *testing.T) {
+ createAndDrop(t)
+ })
+ }
+}
+
+func start(t *testing.T, ksName string) {
+ keyspace := &cluster.Keyspace{
+ Name: ksName,
+ }
+ require.NoError(t,
+ clusterInstance.StartUnshardedKeyspace(*keyspace, 0, false),
+ "new database creation failed")
+}
+
+func shutdown(t *testing.T, ksName string) {
+ for _, ks := range clusterInstance.Keyspaces {
+ if ks.Name != ksName {
+ continue
+ }
+ for _, shard := range ks.Shards {
+ for _, tablet := range shard.Vttablets {
+ if tablet.MysqlctlProcess.TabletUID > 0 {
+ _, err := tablet.MysqlctlProcess.StopProcess()
+ assert.NoError(t, err)
+ }
+ if tablet.MysqlctldProcess.TabletUID > 0 {
+ err := tablet.MysqlctldProcess.Stop()
+ assert.NoError(t, err)
+ }
+ _ = tablet.VttabletProcess.TearDown()
+ }
+ }
+ }
+
+ require.NoError(t,
+ clusterInstance.VtctlclientProcess.ExecuteCommand("DeleteKeyspace", "-recursive", ksName))
+
+ require.NoError(t,
+ clusterInstance.VtctlclientProcess.ExecuteCommand("RebuildVSchemaGraph"))
+}
+
+func exec(t *testing.T, conn *mysql.Conn, query string) *sqltypes.Result {
+ t.Helper()
+ qr, err := conn.ExecuteFetch(query, 1000, true)
+ require.NoError(t, err)
+ return qr
+}
+
+func assertMatches(t *testing.T, conn *mysql.Conn, query, expected string) {
+ t.Helper()
+ qr := exec(t, conn, query)
+ got := fmt.Sprintf("%v", qr.Rows)
+ diff := cmp.Diff(expected, got)
+ if diff != "" {
+ t.Errorf("Query: %s (-want +got):\n%s", query, diff)
+ }
+}
diff --git a/go/test/endtoend/vtgate/keyspace_watches/keyspace_watch_test.go b/go/test/endtoend/vtgate/keyspace_watches/keyspace_watch_test.go
new file mode 100644
index 00000000000..9fc3c9d59ea
--- /dev/null
+++ b/go/test/endtoend/vtgate/keyspace_watches/keyspace_watch_test.go
@@ -0,0 +1,136 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+/*
+Test the vtgate's ability to route while watching a subset of keyspaces.
+*/
+
+package keyspacewatches
+
+import (
+ "database/sql"
+ "fmt"
+ "math/rand"
+ "os"
+ "testing"
+ "time"
+
+ _ "github.com/go-sql-driver/mysql"
+ "github.com/stretchr/testify/require"
+
+ "vitess.io/vitess/go/mysql"
+ "vitess.io/vitess/go/test/endtoend/cluster"
+)
+
+var (
+ vtParams mysql.ConnParams
+ keyspaceUnshardedName = "ks1"
+ cell = "zone1"
+ hostname = "localhost"
+ mysqlAuthServerStatic = "mysql_auth_server_static.json"
+ sqlSchema = `
+ create table keyspaces_to_watch_test(
+ id BIGINT NOT NULL,
+ msg VARCHAR(64) NOT NULL,
+ PRIMARY KEY (id)
+ ) Engine=InnoDB;`
+)
+
+// createConfig creates a config file in TmpDir in vtdataroot and writes the given data.
+func createConfig(clusterInstance *cluster.LocalProcessCluster, name, data string) error {
+ // creating new file
+ f, err := os.Create(clusterInstance.TmpDirectory + "/" + name)
+ if err != nil {
+ return err
+ }
+
+ if data == "" {
+ return nil
+ }
+
+ // write the given data
+ _, err = fmt.Fprint(f, data)
+ return err
+}
+
+func createCluster() (*cluster.LocalProcessCluster, int) {
+ clusterInstance := cluster.NewCluster(cell, hostname)
+
+ // Start topo server
+ if err := clusterInstance.StartTopo(); err != nil {
+ return nil, 1
+ }
+
+ // create auth server config
+ SQLConfig := `{
+ "testuser1": {
+ "Password": "testpassword1",
+ "UserData": "vtgate client 1"
+ }
+ }`
+ if err := createConfig(clusterInstance, mysqlAuthServerStatic, SQLConfig); err != nil {
+ return nil, 1
+ }
+
+ // Start keyspace
+ keyspace := &cluster.Keyspace{
+ Name: keyspaceUnshardedName,
+ SchemaSQL: sqlSchema,
+ }
+ if err := clusterInstance.StartUnshardedKeyspace(*keyspace, 1, false); err != nil {
+ return nil, 1
+ }
+
+ clusterInstance.VtGateExtraArgs = []string{
+ "-mysql_auth_server_static_file", clusterInstance.TmpDirectory + "/" + mysqlAuthServerStatic,
+ "-keyspaces_to_watch", "ks1",
+ }
+
+ // Start vtgate
+ if err := clusterInstance.StartVtgate(); err != nil {
+ return nil, 1
+ }
+ vtParams = mysql.ConnParams{
+ Host: clusterInstance.Hostname,
+ Port: clusterInstance.VtgateMySQLPort,
+ }
+ rand.Seed(time.Now().UnixNano())
+ return clusterInstance, 0
+}
+
+func TestRoutingWithKeyspacesToWatch(t *testing.T) {
+ defer cluster.PanicHandler(t)
+
+ clusterInstance, exitCode := createCluster()
+ defer clusterInstance.Teardown()
+
+ if exitCode != 0 {
+ os.Exit(exitCode)
+ }
+
+ dsn := fmt.Sprintf(
+ "testuser1:testpassword1@tcp(%s:%v)/",
+ clusterInstance.Hostname,
+ clusterInstance.VtgateMySQLPort,
+ )
+ db, err := sql.Open("mysql", dsn)
+ require.Nil(t, err)
+ defer db.Close()
+
+ // if this returns w/o failing the test we're good to go
+ _, err = db.Exec("select * from keyspaces_to_watch_test")
+ require.Nil(t, err)
+}
diff --git a/go/test/endtoend/vtgate/misc_test.go b/go/test/endtoend/vtgate/misc_test.go
index 09a075556ae..042c5062205 100644
--- a/go/test/endtoend/vtgate/misc_test.go
+++ b/go/test/endtoend/vtgate/misc_test.go
@@ -77,6 +77,18 @@ func TestShowColumns(t *testing.T) {
assertMatches(t, conn, "SHOW columns FROM `t5_null_vindex` in `ks`", expected)
}
+func TestShowTables(t *testing.T) {
+ conn, err := mysql.Connect(context.Background(), &vtParams)
+ require.NoError(t, err)
+ defer conn.Close()
+
+ query := "show tables;"
+ qr := exec(t, conn, query)
+
+ assert.Equal(t, "information_schema", qr.Fields[0].Database)
+ assert.Equal(t, "Tables_in_ks", qr.Fields[0].Name)
+}
+
func TestCastConvert(t *testing.T) {
conn, err := mysql.Connect(context.Background(), &vtParams)
require.NoError(t, err)
@@ -352,6 +364,9 @@ func TestExplainPassthrough(t *testing.T) {
got := fmt.Sprintf("%v", result.Rows)
require.Contains(t, got, "SIMPLE") // there is a lot more coming from mysql,
// but we are trying to make the test less fragile
+
+ result = exec(t, conn, "explain ks.t1")
+ require.EqualValues(t, 2, len(result.Rows))
}
func TestXXHash(t *testing.T) {
@@ -404,8 +419,15 @@ func TestSwitchBetweenOlapAndOltp(t *testing.T) {
require.NoError(t, err)
defer conn.Close()
+ assertMatches(t, conn, "select @@workload", `[[VARBINARY("OLTP")]]`)
+
exec(t, conn, "set workload='olap'")
+
+ assertMatches(t, conn, "select @@workload", `[[VARBINARY("OLAP")]]`)
+
exec(t, conn, "set workload='oltp'")
+
+ assertMatches(t, conn, "select @@workload", `[[VARBINARY("OLTP")]]`)
}
func TestFoundRowsOnDualQueries(t *testing.T) {
@@ -425,7 +447,7 @@ func TestUseStmtInOLAP(t *testing.T) {
require.NoError(t, err)
defer conn.Close()
- queries := []string{"set workload='olap'", "use `ks:80-`"}
+ queries := []string{"set workload='olap'", "use `ks:80-`", "use `ks:-80`"}
for i, q := range queries {
t.Run(fmt.Sprintf("%d-%s", i, q), func(t *testing.T) {
exec(t, conn, q)
@@ -496,6 +518,69 @@ func TestCreateView(t *testing.T) {
assertMatches(t, conn, "select * from v1", `[[INT64(1) INT64(1)] [INT64(2) INT64(2)] [INT64(3) INT64(3)] [INT64(4) INT64(4)] [INT64(5) INT64(5)]]`)
}
+func TestVersions(t *testing.T) {
+ defer cluster.PanicHandler(t)
+ ctx := context.Background()
+ conn, err := mysql.Connect(ctx, &vtParams)
+ require.NoError(t, err)
+ defer conn.Close()
+
+ qr := exec(t, conn, `select @@version`)
+ assert.Contains(t, fmt.Sprintf("%v", qr.Rows), "vitess")
+
+ qr = exec(t, conn, `select @@version_comment`)
+ assert.Contains(t, fmt.Sprintf("%v", qr.Rows), "Git revision")
+}
+
+func TestFlush(t *testing.T) {
+ defer cluster.PanicHandler(t)
+ ctx := context.Background()
+ conn, err := mysql.Connect(ctx, &vtParams)
+ require.NoError(t, err)
+ defer conn.Close()
+ exec(t, conn, "flush local tables t1, t2")
+}
+
+func TestShowVariables(t *testing.T) {
+ defer cluster.PanicHandler(t)
+ ctx := context.Background()
+ conn, err := mysql.Connect(ctx, &vtParams)
+ require.NoError(t, err)
+ defer conn.Close()
+ res := exec(t, conn, "show variables like \"%version%\";")
+ found := false
+ for _, row := range res.Rows {
+ if row[0].ToString() == "version" {
+ assert.Contains(t, row[1].ToString(), "vitess")
+ found = true
+ }
+ }
+ require.True(t, found, "Expected a row for version in show query")
+}
+
+func TestOrderBy(t *testing.T) {
+ defer cluster.PanicHandler(t)
+ ctx := context.Background()
+ conn, err := mysql.Connect(ctx, &vtParams)
+ require.Nil(t, err)
+ defer conn.Close()
+ exec(t, conn, "insert into t4(id1, id2) values(1,'a'), (2,'Abc'), (3,'b'), (4,'c'), (5,'test')")
+ exec(t, conn, "insert into t4(id1, id2) values(6,'d'), (7,'e'), (8,'F')")
+ // test ordering of varchar column
+ assertMatches(t, conn, "select id1, id2 from t4 order by id2 desc", `[[INT64(5) VARCHAR("test")] [INT64(8) VARCHAR("F")] [INT64(7) VARCHAR("e")] [INT64(6) VARCHAR("d")] [INT64(4) VARCHAR("c")] [INT64(3) VARCHAR("b")] [INT64(2) VARCHAR("Abc")] [INT64(1) VARCHAR("a")]]`)
+ // test ordering of int column
+ assertMatches(t, conn, "select id1, id2 from t4 order by id1 desc", `[[INT64(8) VARCHAR("F")] [INT64(7) VARCHAR("e")] [INT64(6) VARCHAR("d")] [INT64(5) VARCHAR("test")] [INT64(4) VARCHAR("c")] [INT64(3) VARCHAR("b")] [INT64(2) VARCHAR("Abc")] [INT64(1) VARCHAR("a")]]`)
+
+ defer func() {
+ exec(t, conn, "set workload = oltp")
+ exec(t, conn, "delete from t4")
+ }()
+ // Test the same queries in streaming mode
+ exec(t, conn, "set workload = olap")
+ assertMatches(t, conn, "select id1, id2 from t4 order by id2 desc", `[[INT64(5) VARCHAR("test")] [INT64(8) VARCHAR("F")] [INT64(7) VARCHAR("e")] [INT64(6) VARCHAR("d")] [INT64(4) VARCHAR("c")] [INT64(3) VARCHAR("b")] [INT64(2) VARCHAR("Abc")] [INT64(1) VARCHAR("a")]]`)
+ assertMatches(t, conn, "select id1, id2 from t4 order by id1 desc", `[[INT64(8) VARCHAR("F")] [INT64(7) VARCHAR("e")] [INT64(6) VARCHAR("d")] [INT64(5) VARCHAR("test")] [INT64(4) VARCHAR("c")] [INT64(3) VARCHAR("b")] [INT64(2) VARCHAR("Abc")] [INT64(1) VARCHAR("a")]]`)
+}
+
func TestSubQueryOnTopOfSubQuery(t *testing.T) {
defer cluster.PanicHandler(t)
ctx := context.Background()
@@ -507,7 +592,7 @@ func TestSubQueryOnTopOfSubQuery(t *testing.T) {
exec(t, conn, `insert into t1(id1, id2) values (1, 1), (2, 2), (3, 3), (4, 4), (5, 5)`)
exec(t, conn, `insert into t2(id3, id4) values (1, 3), (2, 4)`)
- assertMatches(t, conn, "select id1 from t1 where id1 not in (select id3 from t2) and id2 in (select id4 from t2)", `[[INT64(3)] [INT64(4)]]`)
+ assertMatches(t, conn, "select id1 from t1 where id1 not in (select id3 from t2) and id2 in (select id4 from t2) order by id1", `[[INT64(3)] [INT64(4)]]`)
}
func assertMatches(t *testing.T, conn *mysql.Conn, query, expected string) {
diff --git a/go/test/endtoend/vtgate/mysql80/main_test.go b/go/test/endtoend/vtgate/mysql80/main_test.go
new file mode 100644
index 00000000000..56661010449
--- /dev/null
+++ b/go/test/endtoend/vtgate/mysql80/main_test.go
@@ -0,0 +1,70 @@
+/*
+Copyright 2019 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package vtgate
+
+import (
+ "flag"
+ "os"
+ "testing"
+
+ "vitess.io/vitess/go/mysql"
+ "vitess.io/vitess/go/test/endtoend/cluster"
+)
+
+var (
+ clusterInstance *cluster.LocalProcessCluster
+ vtParams mysql.ConnParams
+ KeyspaceName = "ks"
+ Cell = "test"
+)
+
+func TestMain(m *testing.M) {
+ defer cluster.PanicHandler(nil)
+ flag.Parse()
+
+ exitCode := func() int {
+ clusterInstance = cluster.NewCluster(Cell, "localhost")
+ defer clusterInstance.Teardown()
+
+ // Start topo server
+ err := clusterInstance.StartTopo()
+ if err != nil {
+ return 1
+ }
+
+ // Start keyspace
+ keyspace := &cluster.Keyspace{
+ Name: KeyspaceName,
+ }
+ err = clusterInstance.StartUnshardedKeyspace(*keyspace, 0, false)
+ if err != nil {
+ return 1
+ }
+
+ // Start vtgate
+ err = clusterInstance.StartVtgate()
+ if err != nil {
+ return 1
+ }
+ vtParams = mysql.ConnParams{
+ Host: clusterInstance.Hostname,
+ Port: clusterInstance.VtgateMySQLPort,
+ }
+ return m.Run()
+ }()
+ os.Exit(exitCode)
+}
diff --git a/go/test/endtoend/vtgate/mysql80/misc_test.go b/go/test/endtoend/vtgate/mysql80/misc_test.go
new file mode 100644
index 00000000000..72e4eff8c69
--- /dev/null
+++ b/go/test/endtoend/vtgate/mysql80/misc_test.go
@@ -0,0 +1,50 @@
+/*
+Copyright 2019 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package vtgate
+
+import (
+ "context"
+ "testing"
+
+ "vitess.io/vitess/go/test/endtoend/cluster"
+
+ "github.com/stretchr/testify/require"
+
+ "vitess.io/vitess/go/mysql"
+ "vitess.io/vitess/go/sqltypes"
+)
+
+func TestFunctionInDefault(t *testing.T) {
+ defer cluster.PanicHandler(t)
+ ctx := context.Background()
+ conn, err := mysql.Connect(ctx, &vtParams)
+ require.NoError(t, err)
+ defer conn.Close()
+
+ exec(t, conn, `create table function_default (x varchar(25) DEFAULT (TRIM(" check ")))`)
+ exec(t, conn, "drop table function_default")
+
+ exec(t, conn, `create table function_default (x varchar(25) DEFAULT "check")`)
+ exec(t, conn, "drop table function_default")
+}
+
+func exec(t *testing.T, conn *mysql.Conn, query string) *sqltypes.Result {
+ t.Helper()
+ qr, err := conn.ExecuteFetch(query, 1000, true)
+ require.NoError(t, err, "for query: "+query)
+ return qr
+}
diff --git a/go/test/endtoend/vtgate/reservedconn/main_test.go b/go/test/endtoend/vtgate/reservedconn/main_test.go
index 9bac75fd1e3..ebe133a2c81 100644
--- a/go/test/endtoend/vtgate/reservedconn/main_test.go
+++ b/go/test/endtoend/vtgate/reservedconn/main_test.go
@@ -167,3 +167,13 @@ func assertIsEmpty(t *testing.T, conn *mysql.Conn, query string) {
qr := checkedExec(t, conn, query)
assert.Empty(t, qr.Rows)
}
+
+func assertResponseMatch(t *testing.T, conn *mysql.Conn, query1, query2 string) {
+ qr1 := checkedExec(t, conn, query1)
+ got1 := fmt.Sprintf("%v", qr1.Rows)
+
+ qr2 := checkedExec(t, conn, query2)
+ got2 := fmt.Sprintf("%v", qr2.Rows)
+
+ assert.Equal(t, got1, got2)
+}
diff --git a/go/test/endtoend/vtgate/reservedconn/sysvar_test.go b/go/test/endtoend/vtgate/reservedconn/sysvar_test.go
index 19af2cdc4d2..69531781085 100644
--- a/go/test/endtoend/vtgate/reservedconn/sysvar_test.go
+++ b/go/test/endtoend/vtgate/reservedconn/sysvar_test.go
@@ -22,6 +22,7 @@ import (
"testing"
"time"
+ "github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"vitess.io/vitess/go/mysql"
@@ -319,3 +320,78 @@ func TestSetSystemVarInTxWithConnError(t *testing.T) {
// subsequent queries on 80- will pass
assertMatches(t, conn, "select id, @@sql_safe_updates from test where id = 4", "[[INT64(4) INT64(1)]]")
}
+
+func TestEnableSystemSettings(t *testing.T) {
+ vtParams := mysql.ConnParams{
+ Host: "localhost",
+ Port: clusterInstance.VtgateMySQLPort,
+ }
+ conn, err := mysql.Connect(context.Background(), &vtParams)
+ require.NoError(t, err)
+ defer conn.Close()
+
+ // test set @@enable_system_settings to false and true
+ checkedExec(t, conn, "set enable_system_settings = false")
+ assertMatches(t, conn, `select @@enable_system_settings`, `[[INT64(0)]]`)
+ checkedExec(t, conn, "set enable_system_settings = true")
+ assertMatches(t, conn, `select @@enable_system_settings`, `[[INT64(1)]]`)
+
+ // prepare the @@sql_mode variable
+ checkedExec(t, conn, "set sql_mode = 'NO_ZERO_DATE'")
+ assertMatches(t, conn, "select @@sql_mode", `[[VARCHAR("NO_ZERO_DATE")]]`)
+
+ // check disabling @@enable_system_settings
+ checkedExec(t, conn, "set enable_system_settings = false")
+ checkedExec(t, conn, "set sql_mode = ''") // attempting to set @@sql_mode to an empty string
+ assertMatches(t, conn, "select @@sql_mode", `[[VARCHAR("NO_ZERO_DATE")]]`) // @@sql_mode did not change
+
+ // check enabling @@enable_system_settings
+ checkedExec(t, conn, "set enable_system_settings = true")
+ checkedExec(t, conn, "set sql_mode = ''") // changing @@sql_mode to empty string
+ assertMatches(t, conn, "select @@sql_mode", `[[VARCHAR("")]]`) // @@sql_mode did change
+}
+
+// Tests type consitency through multiple queries
+func TestSystemVariableType(t *testing.T) {
+ vtParams := mysql.ConnParams{
+ Host: "localhost",
+ Port: clusterInstance.VtgateMySQLPort,
+ }
+ conn, err := mysql.Connect(context.Background(), &vtParams)
+ require.NoError(t, err)
+ defer conn.Close()
+
+ checkedExec(t, conn, "delete from test")
+ checkedExec(t, conn, "insert into test (id, val1, val2, val3) values (1, null, 0, 0)")
+
+ // regardless of the "from", the select @@autocommit should return the same type
+ query1 := "select @@autocommit"
+ query2 := "select @@autocommit from test"
+
+ checkedExec(t, conn, "set autocommit = false")
+ assertResponseMatch(t, conn, query1, query2)
+
+ checkedExec(t, conn, "set autocommit = true")
+ assertResponseMatch(t, conn, query1, query2)
+}
+
+func TestSysvarSocket(t *testing.T) {
+ vtParams := mysql.ConnParams{
+ Host: "localhost",
+ Port: clusterInstance.VtgateMySQLPort,
+ }
+ conn, err := mysql.Connect(context.Background(), &vtParams)
+ require.NoError(t, err)
+ defer conn.Close()
+
+ qr := checkedExec(t, conn, "select @@socket")
+ assert.Contains(t, fmt.Sprintf("%v", qr.Rows), "mysql.sock")
+
+ _, err = exec(t, conn, "set socket = '/any/path'")
+ require.Error(t, err)
+ sqlErr, ok := err.(*mysql.SQLError)
+ require.True(t, ok, "not a mysql error: %T", err)
+ assert.Equal(t, mysql.ERIncorrectGlobalLocalVar, sqlErr.Number())
+ assert.Equal(t, mysql.SSUnknownSQLState, sqlErr.SQLState())
+ assert.Equal(t, "Variable 'socket' is a read only variable (errno 1238) (sqlstate HY000) during query: set socket = '/any/path'", sqlErr.Error())
+}
diff --git a/go/test/endtoend/vtgate/reservedconn/udv_test.go b/go/test/endtoend/vtgate/reservedconn/udv_test.go
index d8ab49f267e..391fc722a4d 100644
--- a/go/test/endtoend/vtgate/reservedconn/udv_test.go
+++ b/go/test/endtoend/vtgate/reservedconn/udv_test.go
@@ -43,65 +43,64 @@ func TestSetUDV(t *testing.T) {
query string
expectedRows string
rowsAffected int
+ rowsReturned int
}
queries := []queriesWithExpectations{{
query: "select @foo",
- expectedRows: "[[NULL]]", rowsAffected: 1,
+ expectedRows: "[[NULL]]", rowsReturned: 1,
}, {
- query: "set @foo = 'abc', @bar = 42, @baz = 30.5, @tablet = concat('foo','bar')",
- expectedRows: "", rowsAffected: 0,
+ query: "set @foo = 'abc', @bar = 42, @baz = 30.5, @tablet = concat('foo','bar')",
}, {
- query: "/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE */",
- expectedRows: "", rowsAffected: 0,
+ query: "/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE */",
}, { // This is handled at vtgate.
query: "select @foo, @bar, @baz, @tablet",
- expectedRows: `[[VARBINARY("abc") INT64(42) FLOAT64(30.5) VARBINARY("foobar")]]`, rowsAffected: 1,
+ expectedRows: `[[VARBINARY("abc") INT64(42) FLOAT64(30.5) VARBINARY("foobar")]]`, rowsReturned: 1,
}, { // Cannot really check a specific value for sql_mode as it will differ based on database selected to run these tests.
query: "select @OLD_SQL_MODE = @@SQL_MODE",
- expectedRows: `[[INT64(1)]]`, rowsAffected: 1,
+ expectedRows: `[[INT64(1)]]`, rowsReturned: 1,
}, { // This one is sent to tablet.
query: "select @foo, @bar, @baz, @tablet, @OLD_SQL_MODE = @@SQL_MODE",
- expectedRows: `[[VARCHAR("abc") INT64(42) DECIMAL(30.5) VARCHAR("foobar") INT64(1)]]`, rowsAffected: 1,
+ expectedRows: `[[VARCHAR("abc") INT64(42) DECIMAL(30.5) VARCHAR("foobar") INT64(1)]]`, rowsReturned: 1,
}, {
query: "insert into test(id, val1, val2, val3) values(1, @foo, null, null), (2, null, @bar, null), (3, null, null, @baz)",
expectedRows: ``, rowsAffected: 3,
}, {
query: "select id, val1, val2, val3 from test order by id",
- expectedRows: `[[INT64(1) VARCHAR("abc") NULL NULL] [INT64(2) NULL INT32(42) NULL] [INT64(3) NULL NULL FLOAT32(30.5)]]`, rowsAffected: 3,
+ expectedRows: `[[INT64(1) VARCHAR("abc") NULL NULL] [INT64(2) NULL INT32(42) NULL] [INT64(3) NULL NULL FLOAT32(30.5)]]`, rowsReturned: 3,
}, {
query: "select id, val1 from test where val1=@foo",
- expectedRows: `[[INT64(1) VARCHAR("abc")]]`, rowsAffected: 1,
+ expectedRows: `[[INT64(1) VARCHAR("abc")]]`, rowsReturned: 1,
}, {
query: "select id, val2 from test where val2=@bar",
- expectedRows: `[[INT64(2) INT32(42)]]`, rowsAffected: 1,
+ expectedRows: `[[INT64(2) INT32(42)]]`, rowsReturned: 1,
}, {
query: "select id, val3 from test where val3=@baz",
- expectedRows: `[[INT64(3) FLOAT32(30.5)]]`, rowsAffected: 1,
+ expectedRows: `[[INT64(3) FLOAT32(30.5)]]`, rowsReturned: 1,
}, {
query: "delete from test where val2 = @bar",
expectedRows: ``, rowsAffected: 1,
}, {
query: "select id, val2 from test where val2=@bar",
- expectedRows: ``, rowsAffected: 0,
+ expectedRows: ``,
}, {
query: "update test set val2 = @bar where val1 = @foo",
expectedRows: ``, rowsAffected: 1,
}, {
query: "select id, val1, val2 from test where val1=@foo",
- expectedRows: `[[INT64(1) VARCHAR("abc") INT32(42)]]`, rowsAffected: 1,
+ expectedRows: `[[INT64(1) VARCHAR("abc") INT32(42)]]`, rowsReturned: 1,
}, {
query: "insert into test(id, val1, val2, val3) values (42, @tablet, null, null)",
expectedRows: ``, rowsAffected: 1,
}, {
query: "select id, val1 from test where val1 = @tablet",
- expectedRows: `[[INT64(42) VARCHAR("foobar")]]`, rowsAffected: 1,
+ expectedRows: `[[INT64(42) VARCHAR("foobar")]]`, rowsReturned: 1,
}, {
query: "set @foo = now(), @bar = now(), @dd = date('2020-10-20'), @tt = time('10:15')",
- expectedRows: `[]`, rowsAffected: 0,
+ expectedRows: `[]`,
}, {
query: "select @foo = @bar, @dd, @tt",
- expectedRows: `[[INT64(1) VARCHAR("2020-10-20") VARCHAR("10:15:00")]]`, rowsAffected: 1,
+ expectedRows: `[[INT64(1) VARCHAR("2020-10-20") VARCHAR("10:15:00")]]`, rowsReturned: 1,
}}
conn, err := mysql.Connect(ctx, &vtParams)
@@ -114,7 +113,8 @@ func TestSetUDV(t *testing.T) {
t.Run(fmt.Sprintf("%d-%s", i, q.query), func(t *testing.T) {
qr, err := exec(t, conn, q.query)
require.NoError(t, err)
- assert.Equal(t, uint64(q.rowsAffected), qr.RowsAffected, "rows affected wrong for query: %s", q.query)
+ assert.EqualValues(t, q.rowsAffected, qr.RowsAffected, "rows affected wrong for query: %s", q.query)
+ assert.EqualValues(t, q.rowsReturned, len(qr.Rows), "rows returned wrong for query: %s", q.query)
if q.expectedRows != "" {
result := fmt.Sprintf("%v", qr.Rows)
if diff := cmp.Diff(q.expectedRows, result); diff != "" {
@@ -125,6 +125,47 @@ func TestSetUDV(t *testing.T) {
}
}
+func TestMysqlDumpInitialLog(t *testing.T) {
+ defer cluster.PanicHandler(t)
+ ctx := context.Background()
+ vtParams := mysql.ConnParams{
+ Host: "localhost",
+ Port: clusterInstance.VtgateMySQLPort,
+ }
+ conn, err := mysql.Connect(ctx, &vtParams)
+ require.NoError(t, err)
+ defer conn.Close()
+
+ queries := []string{
+ "/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;",
+ "/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;",
+ "/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;",
+ "/*!50503 SET NAMES utf8mb4 */;",
+ "/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;",
+ "/*!40103 SET TIME_ZONE='+00:00' */;",
+ "/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;",
+ "/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;",
+ "/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;",
+ "/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;",
+ "/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;",
+ "/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;",
+ "/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;",
+ "/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;",
+ "/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;",
+ "/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;",
+ "/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;",
+ "/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;",
+ }
+
+ for _, query := range queries {
+ t.Run(query, func(t *testing.T) {
+ _, more, err := conn.ExecuteFetchMulti(query, 1000, true)
+ require.NoError(t, err)
+ require.False(t, more)
+ })
+ }
+}
+
func TestUserDefinedVariableResolvedAtTablet(t *testing.T) {
ctx := context.Background()
vtParams := mysql.ConnParams{
diff --git a/go/test/endtoend/vtgate/system_schema_test.go b/go/test/endtoend/vtgate/system_schema_test.go
index 8e5c29f3b5f..ed1c99b91da 100644
--- a/go/test/endtoend/vtgate/system_schema_test.go
+++ b/go/test/endtoend/vtgate/system_schema_test.go
@@ -78,8 +78,6 @@ func TestInformationSchemaQuery(t *testing.T) {
assertResultIsEmpty(t, conn, "table_schema = 'PERFORMANCE_SCHEMA'")
assertSingleRowIsReturned(t, conn, "table_schema = 'performance_schema' and table_name = 'users'", "performance_schema")
assertResultIsEmpty(t, conn, "table_schema = 'performance_schema' and table_name = 'foo'")
- assertSingleRowIsReturned(t, conn, "table_schema = 'vt_ks' and table_name = 't1'", "vt_ks")
- assertSingleRowIsReturned(t, conn, "table_schema = 'ks' and table_name = 't1'", "vt_ks")
}
func assertResultIsEmpty(t *testing.T, conn *mysql.Conn, pre string) {
@@ -141,6 +139,7 @@ func TestConnectWithSystemSchema(t *testing.T) {
connParams.DbName = dbname
conn, err := mysql.Connect(ctx, &connParams)
require.NoError(t, err)
+ exec(t, conn, `select @@max_allowed_packet from dual`)
conn.Close()
}
}
@@ -148,12 +147,12 @@ func TestConnectWithSystemSchema(t *testing.T) {
func TestUseSystemSchema(t *testing.T) {
defer cluster.PanicHandler(t)
ctx := context.Background()
+ conn, err := mysql.Connect(ctx, &vtParams)
+ require.NoError(t, err)
+ defer conn.Close()
for _, dbname := range []string{"information_schema", "mysql", "performance_schema", "sys"} {
- conn, err := mysql.Connect(ctx, &vtParams)
- require.NoError(t, err)
-
exec(t, conn, fmt.Sprintf("use %s", dbname))
- conn.Close()
+ exec(t, conn, `select @@max_allowed_packet from dual`)
}
}
@@ -213,5 +212,5 @@ func TestMultipleSchemaPredicates(t *testing.T) {
"where t.table_schema = '%s' and c.table_schema = '%s' and c.table_schema = '%s'", KeyspaceName, KeyspaceName, "a")
_, err = conn.ExecuteFetch(query, 1000, true)
require.Error(t, err)
- require.Contains(t, err.Error(), "specifying two different database in the query is not supported")
+ require.Contains(t, err.Error(), "two predicates for specifying the database are not supported")
}
diff --git a/go/test/endtoend/vtgate/unsharded/main_test.go b/go/test/endtoend/vtgate/unsharded/main_test.go
index 09089e00e05..547b12ef2af 100644
--- a/go/test/endtoend/vtgate/unsharded/main_test.go
+++ b/go/test/endtoend/vtgate/unsharded/main_test.go
@@ -24,6 +24,9 @@ import (
"testing"
"time"
+ "vitess.io/vitess/go/vt/log"
+ querypb "vitess.io/vitess/go/vt/proto/query"
+
"github.com/google/go-cmp/cmp"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
@@ -92,6 +95,55 @@ CREATE TABLE allDefaults (
}
}
}
+`
+
+ createProcSQL = `use vt_customer;
+CREATE PROCEDURE sp_insert()
+BEGIN
+ insert into allDefaults () values ();
+END;
+
+CREATE PROCEDURE sp_delete()
+BEGIN
+ delete from allDefaults;
+END;
+
+CREATE PROCEDURE sp_multi_dml()
+BEGIN
+ insert into allDefaults () values ();
+ delete from allDefaults;
+END;
+
+CREATE PROCEDURE sp_variable()
+BEGIN
+ insert into allDefaults () values ();
+ SELECT min(id) INTO @myvar FROM allDefaults;
+ DELETE FROM allDefaults WHERE id = @myvar;
+END;
+
+CREATE PROCEDURE sp_select()
+BEGIN
+ SELECT * FROM allDefaults;
+END;
+
+CREATE PROCEDURE sp_all()
+BEGIN
+ insert into allDefaults () values ();
+ select * from allDefaults;
+ delete from allDefaults;
+ set autocommit = 0;
+END;
+
+CREATE PROCEDURE in_parameter(IN val int)
+BEGIN
+ insert into allDefaults(id) values(val);
+END;
+
+CREATE PROCEDURE out_parameter(OUT val int)
+BEGIN
+ insert into allDefaults(id) values (128);
+ select 128 into val from dual;
+END;
`
)
@@ -116,11 +168,20 @@ func TestMain(m *testing.M) {
}
clusterInstance.VtTabletExtraArgs = []string{"-queryserver-config-transaction-timeout", "3"}
if err := clusterInstance.StartUnshardedKeyspace(*Keyspace, 0, false); err != nil {
+ log.Fatal(err.Error())
return 1
}
// Start vtgate
+ clusterInstance.VtGateExtraArgs = []string{"-warn_sharded_only=true"}
if err := clusterInstance.StartVtgate(); err != nil {
+ log.Fatal(err.Error())
+ return 1
+ }
+
+ masterProcess := clusterInstance.Keyspaces[0].Shards[0].MasterTablet().VttabletProcess
+ if _, err := masterProcess.QueryTablet(createProcSQL, KeyspaceName, false); err != nil {
+ log.Fatal(err.Error())
return 1
}
@@ -163,6 +224,7 @@ func TestSelectIntoAndLoadFrom(t *testing.T) {
query = `load data infile '` + directory + `x2.txt' replace into table t1 Fields terminated by ';' optionally enclosed by '"' escaped by '\t' lines terminated by '\n'`
exec(t, conn, query)
assertMatches(t, conn, `select c1,c2,c3 from t1`, `[[INT64(300) INT64(100) INT64(300)]]`)
+ assertMatches(t, conn, "show warnings", `[[VARCHAR("Warning") UINT16(1235) VARCHAR("use of feature that is only supported in unsharded mode: LOAD")]]`)
}
func TestEmptyStatement(t *testing.T) {
@@ -176,8 +238,9 @@ func TestEmptyStatement(t *testing.T) {
require.Nil(t, err)
defer conn.Close()
defer exec(t, conn, `delete from t1`)
- execAssertError(t, conn, " \t;", "Query was empty")
- execMulti(t, conn, `insert into t1(c1, c2, c3, c4) values (300,100,300,'abc'); ;; insert into t1(c1, c2, c3, c4) values (301,101,301,'abcd');;`)
+ execAssertError(t, conn, " \t; \n;", "Query was empty")
+ execMulti(t, conn, `insert into t1(c1, c2, c3, c4) values (300,100,300,'abc'); ;; insert into t1(c1, c2, c3, c4) values (301,101,301,'abcd');;`)
+
assertMatches(t, conn, `select c1,c2,c3 from t1`, `[[INT64(300) INT64(100) INT64(300)] [INT64(301) INT64(101) INT64(301)]]`)
}
@@ -237,6 +300,80 @@ func TestDDLUnsharded(t *testing.T) {
assertMatches(t, conn, "show tables", `[[VARCHAR("allDefaults")] [VARCHAR("t1")]]`)
}
+func TestCallProcedure(t *testing.T) {
+ defer cluster.PanicHandler(t)
+ ctx := context.Background()
+ vtParams := mysql.ConnParams{
+ Host: "localhost",
+ Port: clusterInstance.VtgateMySQLPort,
+ Flags: mysql.CapabilityClientMultiResults,
+ DbName: "@master",
+ }
+ time.Sleep(5 * time.Second)
+ conn, err := mysql.Connect(ctx, &vtParams)
+ require.NoError(t, err)
+ defer conn.Close()
+ qr := exec(t, conn, `CALL sp_insert()`)
+ require.EqualValues(t, 1, qr.RowsAffected)
+
+ assertMatches(t, conn, "show warnings", `[[VARCHAR("Warning") UINT16(1235) VARCHAR("'CALL' not supported in sharded mode")]]`)
+
+ _, err = conn.ExecuteFetch(`CALL sp_select()`, 1000, true)
+ require.Error(t, err)
+ require.Contains(t, err.Error(), "Multi-Resultset not supported in stored procedure")
+
+ _, err = conn.ExecuteFetch(`CALL sp_all()`, 1000, true)
+ require.Error(t, err)
+ require.Contains(t, err.Error(), "Multi-Resultset not supported in stored procedure")
+
+ qr = exec(t, conn, `CALL sp_delete()`)
+ require.GreaterOrEqual(t, 1, int(qr.RowsAffected))
+
+ qr = exec(t, conn, `CALL sp_multi_dml()`)
+ require.EqualValues(t, 1, qr.RowsAffected)
+
+ qr = exec(t, conn, `CALL sp_variable()`)
+ require.EqualValues(t, 1, qr.RowsAffected)
+
+ qr = exec(t, conn, `CALL in_parameter(42)`)
+ require.EqualValues(t, 1, qr.RowsAffected)
+
+ _ = exec(t, conn, `SET @foo = 123`)
+ qr = exec(t, conn, `CALL in_parameter(@foo)`)
+ require.EqualValues(t, 1, qr.RowsAffected)
+ qr = exec(t, conn, "select * from allDefaults where id = 123")
+ assert.NotEmpty(t, qr.Rows)
+
+ _, err = conn.ExecuteFetch(`CALL out_parameter(@foo)`, 100, true)
+ require.Error(t, err)
+ require.Contains(t, err.Error(), "OUT and INOUT parameters are not supported")
+}
+
+func TestTempTable(t *testing.T) {
+ defer cluster.PanicHandler(t)
+ ctx := context.Background()
+ vtParams := mysql.ConnParams{
+ Host: "localhost",
+ Port: clusterInstance.VtgateMySQLPort,
+ }
+ conn1, err := mysql.Connect(ctx, &vtParams)
+ require.NoError(t, err)
+ defer conn1.Close()
+
+ _ = exec(t, conn1, `create temporary table temp_t(id bigint primary key)`)
+ assertMatches(t, conn1, "show warnings", `[[VARCHAR("Warning") UINT16(1235) VARCHAR("'temporary table' not supported in sharded mode")]]`)
+ _ = exec(t, conn1, `insert into temp_t(id) values (1),(2),(3)`)
+ assertMatches(t, conn1, `select id from temp_t order by id`, `[[INT64(1)] [INT64(2)] [INT64(3)]]`)
+ assertMatches(t, conn1, `select count(table_id) from information_schema.innodb_temp_table_info`, `[[INT64(1)]]`)
+
+ conn2, err := mysql.Connect(ctx, &vtParams)
+ require.NoError(t, err)
+ defer conn2.Close()
+
+ assertMatches(t, conn2, `select count(table_id) from information_schema.innodb_temp_table_info`, `[[INT64(1)]]`)
+ execAssertError(t, conn2, `show create table temp_t`, `Table 'vt_customer.temp_t' doesn't exist (errno 1146) (sqlstate 42S02)`)
+}
+
func TestReservedConnDML(t *testing.T) {
defer cluster.PanicHandler(t)
ctx := context.Background()
@@ -260,6 +397,45 @@ func TestReservedConnDML(t *testing.T) {
exec(t, conn, `commit`)
}
+func TestNumericPrecisionScale(t *testing.T) {
+ defer cluster.PanicHandler(t)
+ ctx := context.Background()
+ vtParams := mysql.ConnParams{
+ Host: "localhost",
+ Port: clusterInstance.VtgateMySQLPort,
+ }
+ conn, err := mysql.Connect(ctx, &vtParams)
+ require.NoError(t, err)
+ defer conn.Close()
+
+ _ = exec(t, conn, "CREATE TABLE `a` (`one` bigint NOT NULL PRIMARY KEY) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4")
+ require.NoError(t, err)
+ defer exec(t, conn, "drop table `a`")
+
+ qr := exec(t, conn, "select numeric_precision, numeric_scale from information_schema.columns where table_name = 'a'")
+ require.Equal(t, 1, len(qr.Rows))
+
+ /*
+ We expect UINT64 to be returned as type for field and rows from VTGate to client.
+
+ require.Equal(t, querypb.Type_UINT64, qr.Fields[0].Type)
+ require.Equal(t, querypb.Type_UINT64, qr.Fields[1].Type)
+ require.Equal(t, sqltypes.Uint64, qr.Rows[0][0].Type())
+ require.Equal(t, sqltypes.Uint64, qr.Rows[0][1].Type())
+
+ But, the field query from mysql returns field at UINT32 and row types as UINT64.
+ Our conversion on VTGate on receiving data from VTTablet the Rows are converted to Field Types.
+ So, we see UINT32 for both fields and rows.
+
+ This issue is only with MySQL 8.0. In CI we use 5.7 as well. So asserting with both the values.
+ */
+
+ assert.True(t, qr.Fields[0].Type == querypb.Type_UINT64 || qr.Fields[0].Type == querypb.Type_UINT32)
+ assert.True(t, qr.Fields[1].Type == querypb.Type_UINT64 || qr.Fields[1].Type == querypb.Type_UINT32)
+ assert.True(t, qr.Rows[0][0].Type() == sqltypes.Uint64 || qr.Rows[0][0].Type() == sqltypes.Uint32)
+ assert.True(t, qr.Rows[0][1].Type() == sqltypes.Uint64 || qr.Rows[0][1].Type() == sqltypes.Uint32)
+}
+
func exec(t *testing.T, conn *mysql.Conn, query string) *sqltypes.Result {
t.Helper()
qr, err := conn.ExecuteFetch(query, 1000, true)
diff --git a/go/test/endtoend/vtgate/vtroot_6701/topo_6702/topo-stderr.txt b/go/test/endtoend/vtgate/vtroot_6701/topo_6702/topo-stderr.txt
deleted file mode 100644
index e69de29bb2d..00000000000
diff --git a/go/test/fuzzing/oss_fuzz_build.sh b/go/test/fuzzing/oss_fuzz_build.sh
new file mode 100644
index 00000000000..167f6769f8e
--- /dev/null
+++ b/go/test/fuzzing/oss_fuzz_build.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+# Copyright 2021 The Vitess Authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+compile_go_fuzzer ./go/test/fuzzing Fuzz vtctl_fuzzer
+compile_go_fuzzer ./go/test/fuzzing FuzzIsDML is_dml_fuzzer
+compile_go_fuzzer ./go/test/fuzzing FuzzNormalizer normalizer_fuzzer
+compile_go_fuzzer ./go/test/fuzzing FuzzParser parser_fuzzer
+
+#cp ./go/test/fuzzing/mysql/mysql_fuzzer.go ./go/mysql/
+compile_go_fuzzer ./go/mysql FuzzWritePacket write_packet_fuzzer
+compile_go_fuzzer ./go/mysql FuzzHandleNextCommand handle_next_command_fuzzer
+compile_go_fuzzer ./go/mysql FuzzReadQueryResults read_query_results_fuzzer
+
+# Build dictionaries
+cp $SRC/vitess/go/test/fuzzing/vtctl_fuzzer.dict $OUT/
diff --git a/go/test/fuzzing/parser_fuzzer.go b/go/test/fuzzing/parser_fuzzer.go
new file mode 100644
index 00000000000..a1595fcfef5
--- /dev/null
+++ b/go/test/fuzzing/parser_fuzzer.go
@@ -0,0 +1,47 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+// +build gofuzz
+
+package fuzzing
+
+import (
+ querypb "vitess.io/vitess/go/vt/proto/query"
+ "vitess.io/vitess/go/vt/sqlparser"
+)
+
+func FuzzIsDML(data []byte) int {
+ _ = sqlparser.IsDML(string(data))
+ return 1
+}
+
+func FuzzNormalizer(data []byte) int {
+ stmt, reservedVars, err := sqlparser.Parse2(string(data))
+ if err != nil {
+ return -1
+ }
+ prefix := "bv"
+ bv := make(map[string]*querypb.BindVariable)
+ sqlparser.Normalize(stmt, reservedVars, bv, prefix)
+ return 1
+}
+
+func FuzzParser(data []byte) int {
+ _, err := sqlparser.Parse(string(data))
+ if err != nil {
+ return 0
+ }
+ return 1
+}
diff --git a/go/test/fuzzing/vtctl_fuzzer.dict b/go/test/fuzzing/vtctl_fuzzer.dict
new file mode 100644
index 00000000000..7a4628c267d
--- /dev/null
+++ b/go/test/fuzzing/vtctl_fuzzer.dict
@@ -0,0 +1,58 @@
+
+"insert into"
+"("
+")"
+"values"
+"create"
+"table"
+"bigint"
+"char"
+"NOT NULL"
+"varbinary"
+"primary key"
+"constraint"
+"references"
+"where"
+"from"
+"as"
+"select"
+"and"
+"group"
+"order"
+"by"
+"$""
+"_"
+"'"
+"inner"
+"left"
+"right"
+"full"
+"outer"
+"join"
+"on"
+
+
+"="
+":"
+";"
+","
+"-allow_update"
+"-allow_master"
+"-allow_different_shard"
+"-allow_master_override"
+"-parent"
+"-db_name_override"
+"-dry-run"
+"-hostname"
+"-mysql_port"
+"-port"
+"-grpc_port"
+"-tags"
+"-keyspace"
+"-shard"
+"-cells"
+"-json"
+"-use_pool"
+"-max_rows"
+"-concurrency"
+"-disable_binlogs"
\ No newline at end of file
diff --git a/go/test/fuzzing/vtctl_fuzzer.go b/go/test/fuzzing/vtctl_fuzzer.go
new file mode 100644
index 00000000000..3e5b3350187
--- /dev/null
+++ b/go/test/fuzzing/vtctl_fuzzer.go
@@ -0,0 +1,202 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+// +build gofuzz
+
+package fuzzing
+
+import (
+ "context"
+ "strings"
+
+ "vitess.io/vitess/go/vt/logutil"
+ "vitess.io/vitess/go/vt/topo"
+ "vitess.io/vitess/go/vt/topo/memorytopo"
+ "vitess.io/vitess/go/vt/vtctl"
+ "vitess.io/vitess/go/vt/vttablet/tmclient"
+ "vitess.io/vitess/go/vt/wrangler"
+)
+
+func init() {
+ *tmclient.TabletManagerProtocol = "fuzzing"
+ tmclient.RegisterTabletManagerClientFactory("fuzzing", func() tmclient.TabletManagerClient {
+ return nil
+ })
+}
+
+func IsDivisibleBy(n int, divisibleby int) bool {
+ return (n % divisibleby) == 0
+}
+
+func getCommandType(index int) string {
+
+ m := map[int]string{
+ 0: "GetTablet", // Tablets
+ 1: "InitTablet",
+ 2: "UpdateTabletAddrs",
+ 3: "DeleteTablet",
+ 4: "SetReadOnly",
+ 5: "SetReadWrite",
+ 6: "StartReplication",
+ 7: "StopReplication",
+ 8: "ChangeTabletType",
+ 9: "Ping",
+ 10: "RefreshState",
+ 11: "RefreshStateByShard",
+ 12: "RunHealthCheck",
+ 13: "IgnoreHealthCheck",
+ 14: "IgnoreHealthError",
+ 15: "ExecuteHook",
+ 16: "ExecuteFetchAsApp",
+ 17: "ExecuteFetchAsDba",
+ 18: "VReplicationExec",
+ 19: "Backup",
+ 20: "RestoreFromBackup",
+ 21: "ReparentTablet",
+ 22: "CreateShard", // Shards
+ 23: "GetShard",
+ 24: "ValidateShard",
+ 25: "ShardReplicationPositions",
+ 26: "ListShardTablets",
+ 27: "SetShardIsMasterServing",
+ 28: "SetShardTabletControl",
+ 29: "UpdateSrvKeyspacePartition",
+ 30: "SourceShardDelete",
+ 31: "SourceShardAdd",
+ 32: "ShardReplicationFix",
+ 33: "WaitForFilteredReplication",
+ 34: "RemoveShardCell",
+ 35: "DeleteShard",
+ 36: "ListBackups",
+ 37: "BackupShard",
+ 38: "RemoveBackup",
+ 39: "InitShardMaster",
+ 40: "PlannedReparentShard",
+ 41: "EmergencyReparentShard",
+ 42: "TabletExternallyReparented",
+ 43: "CreateKeyspace", // Keyspaces
+ 44: "DeleteKeyspace",
+ 45: "RemoveKeyspaceCell",
+ 46: "GetKeyspace",
+ 47: "GetKeyspaces",
+ 48: "SetKeyspaceShardingInfo",
+ 49: "SetKeyspaceServedFrom",
+ 50: "RebuildKeyspaceGraph",
+ 51: "ValidateKeyspace",
+ 52: "Reshard",
+ 53: "MoveTables",
+ 54: "DropSources",
+ 55: "CreateLookupVindex",
+ 56: "ExternalizeVindex",
+ 57: "Materialize",
+ 58: "SplitClone",
+ 59: "VerticalSplitClone",
+ 60: "VDiff",
+ 61: "MigrateServedTypes",
+ 62: "MigrateServedFrom",
+ 63: "SwitchReads",
+ 64: "SwitchWrites",
+ 65: "CancelResharding",
+ 66: "ShowResharding",
+ 67: "FindAllShardsInKeyspace",
+ 68: "WaitForDrain",
+ }
+ return m[index]
+
+}
+
+/*
+ In this fuzzer we split the input into 3 chunks:
+ 1: the first byte - Is converted to an int, and
+ that int determines the number of command-line
+ calls the fuzzer will make.
+ 2: The next n bytes where n is equal to the int from
+ the first byte. These n bytes are converted to
+ a corresponding command and represent which
+ commands will be called.
+ 3: The rest of the data array should have a length
+ that is divisible by the number of calls.
+ This part is split up into equally large chunks,
+ and each chunk is used as parameters for the
+ corresponding command.
+*/
+func Fuzz(data []byte) int {
+
+ // Basic checks
+ if len(data) == 0 {
+ return -1
+ }
+ numberOfCalls := int(data[0])
+ if numberOfCalls < 3 || numberOfCalls > 10 {
+ return -1
+ }
+ if len(data) < numberOfCalls+numberOfCalls+1 {
+ return -1
+ }
+
+ // Define part 2 and 3 of the data array
+ commandPart := data[1 : numberOfCalls+1]
+ restOfArray := data[numberOfCalls+1:]
+
+ // Just a small check. It is necessary
+ if len(commandPart) != numberOfCalls {
+ return -1
+ }
+
+ // Check if restOfArray is divisible by numberOfCalls
+ if !IsDivisibleBy(len(restOfArray), numberOfCalls) {
+ return -1
+ }
+
+ // At this point we have a data array that can
+ // be divided properly. We can now proceed to
+ // passing it to Vitess
+ ctx := context.Background()
+ topo, err := createTopo(ctx)
+ if err != nil {
+ return -1
+ }
+ tmc := tmclient.NewTabletManagerClient()
+ logger := logutil.NewMemoryLogger()
+
+ chunkSize := len(restOfArray) / numberOfCalls
+ command := 0
+ for i := 0; i < len(restOfArray); i = i + chunkSize {
+ from := i //lower
+ to := i + chunkSize //upper
+
+ // Index of command in getCommandType():
+ commandIndex := int(commandPart[command]) % 68
+ vtCommand := getCommandType(commandIndex)
+ command_slice := []string{vtCommand}
+ args := strings.Split(string(restOfArray[from:to]), " ")
+
+ // Add params to the command
+ for i := range args {
+ command_slice = append(command_slice, args[i])
+ }
+
+ _ = vtctl.RunCommand(ctx, wrangler.New(logger, topo, tmc), command_slice)
+ command++
+ }
+
+ return 1
+
+}
+
+func createTopo(ctx context.Context) (*topo.Server, error) {
+ ts := memorytopo.NewServer("zone1", "zone2", "zone3")
+ return ts, nil
+}
diff --git a/go/timer/suspendable_ticker.go b/go/timer/suspendable_ticker.go
index 2d971c69eb0..5257626b85f 100644
--- a/go/timer/suspendable_ticker.go
+++ b/go/timer/suspendable_ticker.go
@@ -61,6 +61,15 @@ func (s *SuspendableTicker) Stop() {
s.ticker.Stop()
}
+// TickNow generates a tick at this point in time. It may block
+// if nothing consumes the tick.
+func (s *SuspendableTicker) TickNow() {
+ if atomic.LoadInt64(&s.suspended) == 0 {
+ // not suspended
+ s.C <- time.Now()
+ }
+}
+
func (s *SuspendableTicker) loop() {
for t := range s.ticker.C {
if atomic.LoadInt64(&s.suspended) == 0 {
diff --git a/go/tools/astfmtgen/main.go b/go/tools/astfmtgen/main.go
new file mode 100644
index 00000000000..839c8a52cc5
--- /dev/null
+++ b/go/tools/astfmtgen/main.go
@@ -0,0 +1,221 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package main
+
+import (
+ "fmt"
+ "go/ast"
+ "go/printer"
+ "go/token"
+ "go/types"
+ "os"
+ "path"
+ "strconv"
+ "strings"
+
+ "golang.org/x/tools/go/ast/astutil"
+ "golang.org/x/tools/go/packages"
+)
+
+func main() {
+ err := load(os.Args[1])
+ if err != nil {
+ panic(err)
+ }
+}
+
+func load(packageName string) error {
+ config := &packages.Config{
+ Mode: packages.NeedName |
+ packages.NeedFiles |
+ packages.NeedCompiledGoFiles |
+ packages.NeedImports |
+ packages.NeedTypes |
+ packages.NeedSyntax |
+ packages.NeedTypesInfo,
+ }
+ pkgs, err := packages.Load(config, packageName)
+ if err != nil {
+ return fmt.Errorf("error loading package %s: %w", packageName, err)
+ }
+ for _, pkg := range pkgs {
+ if pkg.Name == "sqlparser" {
+ rewriter := &Rewriter{pkg: pkg}
+ err := rewriter.Rewrite()
+ if err != nil {
+ return err
+ }
+ }
+ }
+ return nil
+}
+
+type Rewriter struct {
+ pkg *packages.Package
+ astExpr *types.Interface
+}
+
+func (r *Rewriter) Rewrite() error {
+ scope := r.pkg.Types.Scope()
+ exprT := scope.Lookup("Expr").(*types.TypeName)
+ exprN := exprT.Type().(*types.Named).Underlying()
+ r.astExpr = exprN.(*types.Interface)
+
+ for i, file := range r.pkg.GoFiles {
+ dirname, filename := path.Split(file)
+ if filename == "ast_format.go" {
+ syntax := r.pkg.Syntax[i]
+ astutil.Apply(syntax, r.replaceAstfmtCalls, nil)
+
+ f, err := os.Create(path.Join(dirname, "ast_format_fast.go"))
+ if err != nil {
+ return err
+ }
+ fmt.Fprintf(f, "// Code generated by ASTFmtGen. DO NOT EDIT.\n")
+ printer.Fprint(f, r.pkg.Fset, syntax)
+ f.Close()
+ }
+ }
+ return nil
+}
+
+func (r *Rewriter) replaceAstfmtCalls(cursor *astutil.Cursor) bool {
+ switch v := cursor.Node().(type) {
+ case *ast.Comment:
+ v.Text = strings.ReplaceAll(v.Text, " Format ", " formatFast ")
+ case *ast.FuncDecl:
+ if v.Name.Name == "Format" {
+ v.Name.Name = "formatFast"
+ }
+ case *ast.ExprStmt:
+ if call, ok := v.X.(*ast.CallExpr); ok {
+ if r.isPrintfCall(call) {
+ return r.rewriteAstPrintf(cursor, call)
+ }
+ }
+ }
+ return true
+}
+
+func (r *Rewriter) isPrintfCall(n *ast.CallExpr) bool {
+ s, ok := n.Fun.(*ast.SelectorExpr)
+ if !ok {
+ return false
+ }
+ id := s.Sel
+ if id != nil && !r.pkg.TypesInfo.Types[id].IsType() {
+ return id.Name == "astPrintf"
+ }
+ return false
+}
+
+func (r *Rewriter) rewriteLiteral(rcv ast.Expr, method string, arg ast.Expr) ast.Stmt {
+ expr := &ast.CallExpr{
+ Fun: &ast.SelectorExpr{
+ X: rcv,
+ Sel: &ast.Ident{Name: method},
+ },
+ Args: []ast.Expr{arg},
+ }
+ return &ast.ExprStmt{X: expr}
+}
+
+func (r *Rewriter) rewriteAstPrintf(cursor *astutil.Cursor, expr *ast.CallExpr) bool {
+ callexpr := expr.Fun.(*ast.SelectorExpr)
+ lit := expr.Args[1].(*ast.BasicLit)
+ format, _ := strconv.Unquote(lit.Value)
+
+ end := len(format)
+ fieldnum := 0
+ for i := 0; i < end; {
+ lasti := i
+ for i < end && format[i] != '%' {
+ i++
+ }
+ if i > lasti {
+ var arg ast.Expr
+ var method string
+ var lit = format[lasti:i]
+
+ if len(lit) == 1 {
+ method = "WriteByte"
+ arg = &ast.BasicLit{
+ Kind: token.CHAR,
+ Value: strconv.QuoteRune(rune(lit[0])),
+ }
+ } else {
+ method = "WriteString"
+ arg = &ast.BasicLit{
+ Kind: token.STRING,
+ Value: strconv.Quote(lit),
+ }
+ }
+
+ cursor.InsertBefore(r.rewriteLiteral(callexpr.X, method, arg))
+ }
+ if i >= end {
+ break
+ }
+ i++ // '%'
+ token := format[i]
+ switch token {
+ case 'c':
+ cursor.InsertBefore(r.rewriteLiteral(callexpr.X, "WriteByte", expr.Args[2+fieldnum]))
+ case 's':
+ cursor.InsertBefore(r.rewriteLiteral(callexpr.X, "WriteString", expr.Args[2+fieldnum]))
+ case 'l', 'r', 'v':
+ leftExpr := expr.Args[0]
+ leftExprT := r.pkg.TypesInfo.Types[leftExpr].Type
+
+ rightExpr := expr.Args[2+fieldnum]
+ rightExprT := r.pkg.TypesInfo.Types[rightExpr].Type
+
+ var call ast.Expr
+ if types.Implements(leftExprT, r.astExpr) && types.Implements(rightExprT, r.astExpr) {
+ call = &ast.CallExpr{
+ Fun: &ast.SelectorExpr{
+ X: callexpr.X,
+ Sel: &ast.Ident{Name: "printExpr"},
+ },
+ Args: []ast.Expr{
+ leftExpr,
+ rightExpr,
+ &ast.Ident{
+ Name: strconv.FormatBool(token != 'r'),
+ },
+ },
+ }
+ } else {
+ call = &ast.CallExpr{
+ Fun: &ast.SelectorExpr{
+ X: rightExpr,
+ Sel: &ast.Ident{Name: "formatFast"},
+ },
+ Args: []ast.Expr{callexpr.X},
+ }
+ }
+ cursor.InsertBefore(&ast.ExprStmt{X: call})
+ default:
+ panic(fmt.Sprintf("unsupported escape %q", token))
+ }
+ fieldnum++
+ i++
+ }
+
+ cursor.Delete()
+ return true
+}
diff --git a/go/tools/asthelpergen/asthelpergen.go b/go/tools/asthelpergen/asthelpergen.go
new file mode 100644
index 00000000000..c1d7072b7c5
--- /dev/null
+++ b/go/tools/asthelpergen/asthelpergen.go
@@ -0,0 +1,324 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package asthelpergen
+
+import (
+ "bytes"
+ "fmt"
+ "go/types"
+ "io/ioutil"
+ "log"
+ "path"
+ "strings"
+
+ "github.com/dave/jennifer/jen"
+ "golang.org/x/tools/go/packages"
+)
+
+const licenseFileHeader = `Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.`
+
+type (
+ generatorSPI interface {
+ addType(t types.Type)
+ scope() *types.Scope
+ findImplementations(iff *types.Interface, impl func(types.Type) error) error
+ iface() *types.Interface
+ }
+ generator interface {
+ genFile() (string, *jen.File)
+ interfaceMethod(t types.Type, iface *types.Interface, spi generatorSPI) error
+ structMethod(t types.Type, strct *types.Struct, spi generatorSPI) error
+ ptrToStructMethod(t types.Type, strct *types.Struct, spi generatorSPI) error
+ ptrToBasicMethod(t types.Type, basic *types.Basic, spi generatorSPI) error
+ sliceMethod(t types.Type, slice *types.Slice, spi generatorSPI) error
+ basicMethod(t types.Type, basic *types.Basic, spi generatorSPI) error
+ }
+ // astHelperGen finds implementations of the given interface,
+ // and uses the supplied `generator`s to produce the output code
+ astHelperGen struct {
+ DebugTypes bool
+ mod *packages.Module
+ sizes types.Sizes
+ namedIface *types.Named
+ _iface *types.Interface
+ gens []generator
+
+ _scope *types.Scope
+ todo []types.Type
+ }
+)
+
+func (gen *astHelperGen) iface() *types.Interface {
+ return gen._iface
+}
+
+func newGenerator(mod *packages.Module, sizes types.Sizes, named *types.Named, generators ...generator) *astHelperGen {
+ return &astHelperGen{
+ DebugTypes: true,
+ mod: mod,
+ sizes: sizes,
+ namedIface: named,
+ _iface: named.Underlying().(*types.Interface),
+ gens: generators,
+ }
+}
+
+func findImplementations(scope *types.Scope, iff *types.Interface, impl func(types.Type) error) error {
+ for _, name := range scope.Names() {
+ obj := scope.Lookup(name)
+ if _, ok := obj.(*types.TypeName); !ok {
+ continue
+ }
+ baseType := obj.Type()
+ if types.Implements(baseType, iff) {
+ err := impl(baseType)
+ if err != nil {
+ return err
+ }
+ continue
+ }
+ pointerT := types.NewPointer(baseType)
+ if types.Implements(pointerT, iff) {
+ err := impl(pointerT)
+ if err != nil {
+ return err
+ }
+ continue
+ }
+ }
+ return nil
+}
+func (gen *astHelperGen) findImplementations(iff *types.Interface, impl func(types.Type) error) error {
+ for _, name := range gen._scope.Names() {
+ obj := gen._scope.Lookup(name)
+ if _, ok := obj.(*types.TypeName); !ok {
+ continue
+ }
+ baseType := obj.Type()
+ if types.Implements(baseType, iff) {
+ err := impl(baseType)
+ if err != nil {
+ return err
+ }
+ continue
+ }
+ pointerT := types.NewPointer(baseType)
+ if types.Implements(pointerT, iff) {
+ err := impl(pointerT)
+ if err != nil {
+ return err
+ }
+ continue
+ }
+ }
+ return nil
+}
+
+// GenerateCode is the main loop where we build up the code per file.
+func (gen *astHelperGen) GenerateCode() (map[string]*jen.File, error) {
+ pkg := gen.namedIface.Obj().Pkg()
+
+ gen._scope = pkg.Scope()
+ gen.todo = append(gen.todo, gen.namedIface)
+ jenFiles := gen.createFiles()
+
+ result := map[string]*jen.File{}
+ for fName, genFile := range jenFiles {
+ fullPath := path.Join(gen.mod.Dir, strings.TrimPrefix(pkg.Path(), gen.mod.Path), fName)
+ result[fullPath] = genFile
+ }
+
+ return result, nil
+}
+
+// TypePaths are the packages
+type TypePaths []string
+
+func (t *TypePaths) String() string {
+ return fmt.Sprintf("%v", *t)
+}
+
+// Set adds the package path
+func (t *TypePaths) Set(path string) error {
+ *t = append(*t, path)
+ return nil
+}
+
+// VerifyFilesOnDisk compares the generated results from the codegen against the files that
+// currently exist on disk and returns any mismatches
+func VerifyFilesOnDisk(result map[string]*jen.File) (errors []error) {
+ for fullPath, file := range result {
+ existing, err := ioutil.ReadFile(fullPath)
+ if err != nil {
+ errors = append(errors, fmt.Errorf("missing file on disk: %s (%w)", fullPath, err))
+ continue
+ }
+
+ var buf bytes.Buffer
+ if err := file.Render(&buf); err != nil {
+ errors = append(errors, fmt.Errorf("render error for '%s': %w", fullPath, err))
+ continue
+ }
+
+ if !bytes.Equal(existing, buf.Bytes()) {
+ errors = append(errors, fmt.Errorf("'%s' has changed", fullPath))
+ continue
+ }
+ }
+ return errors
+}
+
+// GenerateASTHelpers loads the input code, constructs the necessary generators,
+// and generates the rewriter and clone methods for the AST
+func GenerateASTHelpers(packagePatterns []string, rootIface, exceptCloneType string) (map[string]*jen.File, error) {
+ loaded, err := packages.Load(&packages.Config{
+ Mode: packages.NeedName | packages.NeedTypes | packages.NeedTypesSizes | packages.NeedTypesInfo | packages.NeedDeps | packages.NeedImports | packages.NeedModule,
+ }, packagePatterns...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ scopes := make(map[string]*types.Scope)
+ for _, pkg := range loaded {
+ scopes[pkg.PkgPath] = pkg.Types.Scope()
+ }
+
+ pos := strings.LastIndexByte(rootIface, '.')
+ if pos < 0 {
+ return nil, fmt.Errorf("unexpected input type: %s", rootIface)
+ }
+
+ pkgname := rootIface[:pos]
+ typename := rootIface[pos+1:]
+
+ scope := scopes[pkgname]
+ if scope == nil {
+ return nil, fmt.Errorf("no scope found for type '%s'", rootIface)
+ }
+
+ tt := scope.Lookup(typename)
+ if tt == nil {
+ return nil, fmt.Errorf("no type called '%s' found in '%s'", typename, pkgname)
+ }
+
+ nt := tt.Type().(*types.Named)
+ pName := nt.Obj().Pkg().Name()
+ generator := newGenerator(loaded[0].Module, loaded[0].TypesSizes, nt,
+ newEqualsGen(pName),
+ newCloneGen(pName, exceptCloneType),
+ newVisitGen(pName),
+ newRewriterGen(pName, types.TypeString(nt, noQualifier)),
+ )
+
+ it, err := generator.GenerateCode()
+ if err != nil {
+ return nil, err
+ }
+
+ return it, nil
+}
+
+var _ generatorSPI = (*astHelperGen)(nil)
+
+func (gen *astHelperGen) scope() *types.Scope {
+ return gen._scope
+}
+
+func (gen *astHelperGen) addType(t types.Type) {
+ gen.todo = append(gen.todo, t)
+}
+
+func (gen *astHelperGen) createFiles() map[string]*jen.File {
+ alreadyDone := map[string]bool{}
+ for len(gen.todo) > 0 {
+ t := gen.todo[0]
+ underlying := t.Underlying()
+ typeName := printableTypeName(t)
+ gen.todo = gen.todo[1:]
+
+ if alreadyDone[typeName] {
+ continue
+ }
+ var err error
+ for _, g := range gen.gens {
+ switch underlying := underlying.(type) {
+ case *types.Interface:
+ err = g.interfaceMethod(t, underlying, gen)
+ case *types.Slice:
+ err = g.sliceMethod(t, underlying, gen)
+ case *types.Struct:
+ err = g.structMethod(t, underlying, gen)
+ case *types.Pointer:
+ ptrToType := underlying.Elem().Underlying()
+ switch ptrToType := ptrToType.(type) {
+ case *types.Struct:
+ err = g.ptrToStructMethod(t, ptrToType, gen)
+ case *types.Basic:
+ err = g.ptrToBasicMethod(t, ptrToType, gen)
+ default:
+ panic(fmt.Sprintf("%T", ptrToType))
+ }
+ case *types.Basic:
+ err = g.basicMethod(t, underlying, gen)
+ default:
+ log.Fatalf("don't know how to handle %s %T", typeName, underlying)
+ }
+ if err != nil {
+ log.Fatal(err)
+ }
+ }
+ alreadyDone[typeName] = true
+ }
+
+ result := map[string]*jen.File{}
+ for _, g := range gen.gens {
+ fName, jenFile := g.genFile()
+ result[fName] = jenFile
+ }
+ return result
+}
+
+// printableTypeName returns a string that can be used as a valid golang identifier
+func printableTypeName(t types.Type) string {
+ switch t := t.(type) {
+ case *types.Pointer:
+ return "RefOf" + printableTypeName(t.Elem())
+ case *types.Slice:
+ return "SliceOf" + printableTypeName(t.Elem())
+ case *types.Named:
+ return t.Obj().Name()
+ case *types.Basic:
+ return strings.Title(t.Name())
+ case *types.Interface:
+ return t.String()
+ default:
+ panic(fmt.Sprintf("unknown type %T %v", t, t))
+ }
+}
diff --git a/go/tools/asthelpergen/asthelpergen_test.go b/go/tools/asthelpergen/asthelpergen_test.go
new file mode 100644
index 00000000000..16372b13d75
--- /dev/null
+++ b/go/tools/asthelpergen/asthelpergen_test.go
@@ -0,0 +1,43 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package asthelpergen
+
+import (
+ "fmt"
+ "strings"
+ "testing"
+
+ "github.com/stretchr/testify/require"
+)
+
+func TestFullGeneration(t *testing.T) {
+ result, err := GenerateASTHelpers([]string{"./integration/..."}, "vitess.io/vitess/go/tools/asthelpergen/integration.AST", "*NoCloneType")
+ require.NoError(t, err)
+
+ verifyErrors := VerifyFilesOnDisk(result)
+ require.Empty(t, verifyErrors)
+
+ for _, file := range result {
+ contents := fmt.Sprintf("%#v", file)
+ require.Contains(t, contents, "http://www.apache.org/licenses/LICENSE-2.0")
+ applyIdx := strings.Index(contents, "func (a *application) apply(parent, node AST, replacer replacerFunc)")
+ cloneIdx := strings.Index(contents, "CloneAST(in AST) AST")
+ if applyIdx == 0 && cloneIdx == 0 {
+ t.Fatalf("file doesn't contain expected contents")
+ }
+ }
+}
diff --git a/go/tools/asthelpergen/clone_gen.go b/go/tools/asthelpergen/clone_gen.go
new file mode 100644
index 00000000000..121f53c18c6
--- /dev/null
+++ b/go/tools/asthelpergen/clone_gen.go
@@ -0,0 +1,252 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package asthelpergen
+
+import (
+ "fmt"
+ "go/types"
+ "log"
+
+ "github.com/dave/jennifer/jen"
+)
+
+// cloneGen creates the deep clone methods for the AST. It works by discovering the types that it needs to support,
+// starting from a root interface type. While creating the clone method for this root interface, more types that need
+// to be cloned are discovered. This continues type by type until all necessary types have been traversed.
+type cloneGen struct {
+ exceptType string
+ file *jen.File
+}
+
+var _ generator = (*cloneGen)(nil)
+
+func newCloneGen(pkgname string, exceptType string) *cloneGen {
+ file := jen.NewFile(pkgname)
+ file.HeaderComment(licenseFileHeader)
+ file.HeaderComment("Code generated by ASTHelperGen. DO NOT EDIT.")
+
+ return &cloneGen{
+ exceptType: exceptType,
+ file: file,
+ }
+}
+
+func (c *cloneGen) addFunc(name string, code *jen.Statement) {
+ c.file.Add(jen.Comment(fmt.Sprintf("%s creates a deep clone of the input.", name)))
+ c.file.Add(code)
+}
+
+func (c *cloneGen) genFile() (string, *jen.File) {
+ return "ast_clone.go", c.file
+}
+
+const cloneName = "Clone"
+
+// readValueOfType produces code to read the expression of type `t`, and adds the type to the todo-list
+func (c *cloneGen) readValueOfType(t types.Type, expr jen.Code, spi generatorSPI) jen.Code {
+ switch t.Underlying().(type) {
+ case *types.Basic:
+ return expr
+ case *types.Interface:
+ if types.TypeString(t, noQualifier) == "interface{}" {
+ // these fields have to be taken care of manually
+ return expr
+ }
+ }
+ spi.addType(t)
+ return jen.Id(cloneName + printableTypeName(t)).Call(expr)
+}
+
+func (c *cloneGen) structMethod(t types.Type, _ *types.Struct, spi generatorSPI) error {
+ typeString := types.TypeString(t, noQualifier)
+ funcName := cloneName + printableTypeName(t)
+ c.addFunc(funcName,
+ jen.Func().Id(funcName).Call(jen.Id("n").Id(typeString)).Id(typeString).Block(
+ jen.Return(jen.Op("*").Add(c.readValueOfType(types.NewPointer(t), jen.Op("&").Id("n"), spi))),
+ ))
+ return nil
+}
+
+func (c *cloneGen) sliceMethod(t types.Type, slice *types.Slice, spi generatorSPI) error {
+ typeString := types.TypeString(t, noQualifier)
+ name := printableTypeName(t)
+ funcName := cloneName + name
+
+ c.addFunc(funcName,
+ //func (n Bytes) Clone() Bytes {
+ jen.Func().Id(funcName).Call(jen.Id("n").Id(typeString)).Id(typeString).Block(
+ // res := make(Bytes, len(n))
+ jen.Id("res").Op(":=").Id("make").Call(jen.Id(typeString), jen.Lit(0), jen.Id("len").Call(jen.Id("n"))),
+ c.copySliceElement(slice.Elem(), spi),
+ // return res
+ jen.Return(jen.Id("res")),
+ ))
+ return nil
+}
+
+func (c *cloneGen) basicMethod(t types.Type, basic *types.Basic, spi generatorSPI) error {
+ return nil
+}
+
+func (c *cloneGen) copySliceElement(elType types.Type, spi generatorSPI) jen.Code {
+ if isBasic(elType) {
+ // copy(res, n)
+ return jen.Id("copy").Call(jen.Id("res"), jen.Id("n"))
+ }
+
+ //for _, x := range n {
+ // res = append(res, CloneAST(x))
+ //}
+ spi.addType(elType)
+
+ return jen.For(jen.List(jen.Op("_"), jen.Id("x"))).Op(":=").Range().Id("n").Block(
+ jen.Id("res").Op("=").Id("append").Call(jen.Id("res"), c.readValueOfType(elType, jen.Id("x"), spi)),
+ )
+}
+
+func (c *cloneGen) interfaceMethod(t types.Type, iface *types.Interface, spi generatorSPI) error {
+
+ //func CloneAST(in AST) AST {
+ // if in == nil {
+ // return nil
+ //}
+ // switch in := in.(type) {
+ //case *RefContainer:
+ // return in.CloneRefOfRefContainer()
+ //}
+ // // this should never happen
+ // return nil
+ //}
+
+ typeString := types.TypeString(t, noQualifier)
+ typeName := printableTypeName(t)
+
+ stmts := []jen.Code{ifNilReturnNil("in")}
+
+ var cases []jen.Code
+ _ = findImplementations(spi.scope(), iface, func(t types.Type) error {
+ typeString := types.TypeString(t, noQualifier)
+
+ // case Type: return CloneType(in)
+ block := jen.Case(jen.Id(typeString)).Block(jen.Return(c.readValueOfType(t, jen.Id("in"), spi)))
+ switch t := t.(type) {
+ case *types.Pointer:
+ _, isIface := t.Elem().(*types.Interface)
+ if !isIface {
+ cases = append(cases, block)
+ }
+
+ case *types.Named:
+ _, isIface := t.Underlying().(*types.Interface)
+ if !isIface {
+ cases = append(cases, block)
+ }
+
+ default:
+ log.Fatalf("unexpected type encountered: %s", typeString)
+ }
+
+ return nil
+ })
+
+ cases = append(cases,
+ jen.Default().Block(
+ jen.Comment("this should never happen"),
+ jen.Return(jen.Nil()),
+ ))
+
+ // switch n := node.(type) {
+ stmts = append(stmts, jen.Switch(jen.Id("in").Op(":=").Id("in").Assert(jen.Id("type")).Block(
+ cases...,
+ )))
+
+ funcName := cloneName + typeName
+ funcDecl := jen.Func().Id(funcName).Call(jen.Id("in").Id(typeString)).Id(typeString).Block(stmts...)
+ c.addFunc(funcName, funcDecl)
+ return nil
+}
+
+func (c *cloneGen) ptrToBasicMethod(t types.Type, _ *types.Basic, spi generatorSPI) error {
+ ptr := t.Underlying().(*types.Pointer)
+ return c.ptrToOtherMethod(t, ptr, spi)
+}
+
+func (c *cloneGen) ptrToOtherMethod(t types.Type, ptr *types.Pointer, spi generatorSPI) error {
+ receiveType := types.TypeString(t, noQualifier)
+
+ funcName := "Clone" + printableTypeName(t)
+ c.addFunc(funcName,
+ jen.Func().Id(funcName).Call(jen.Id("n").Id(receiveType)).Id(receiveType).Block(
+ ifNilReturnNil("n"),
+ jen.Id("out").Op(":=").Add(c.readValueOfType(ptr.Elem(), jen.Op("*").Id("n"), spi)),
+ jen.Return(jen.Op("&").Id("out")),
+ ))
+ return nil
+}
+
+func ifNilReturnNil(id string) *jen.Statement {
+ return jen.If(jen.Id(id).Op("==").Nil()).Block(jen.Return(jen.Nil()))
+}
+
+func isBasic(t types.Type) bool {
+ _, x := t.Underlying().(*types.Basic)
+ return x
+}
+
+func (c *cloneGen) ptrToStructMethod(t types.Type, strct *types.Struct, spi generatorSPI) error {
+ receiveType := types.TypeString(t, noQualifier)
+ funcName := cloneName + printableTypeName(t)
+
+ //func CloneRefOfType(n *Type) *Type
+ funcDeclaration := jen.Func().Id(funcName).Call(jen.Id("n").Id(receiveType)).Id(receiveType)
+
+ if receiveType == c.exceptType {
+ c.addFunc(funcName, funcDeclaration.Block(
+ jen.Return(jen.Id("n")),
+ ))
+ return nil
+ }
+
+ var fields []jen.Code
+ for i := 0; i < strct.NumFields(); i++ {
+ field := strct.Field(i)
+ if isBasic(field.Type()) || field.Name() == "_" {
+ continue
+ }
+ // out.Field = CloneType(n.Field)
+ fields = append(fields,
+ jen.Id("out").Dot(field.Name()).Op("=").Add(c.readValueOfType(field.Type(), jen.Id("n").Dot(field.Name()), spi)))
+ }
+
+ stmts := []jen.Code{
+ // if n == nil { return nil }
+ ifNilReturnNil("n"),
+ // out := *n
+ jen.Id("out").Op(":=").Op("*").Id("n"),
+ }
+
+ // handle all fields with CloneAble types
+ stmts = append(stmts, fields...)
+
+ stmts = append(stmts,
+ // return &out
+ jen.Return(jen.Op("&").Id("out")),
+ )
+
+ c.addFunc(funcName, funcDeclaration.Block(stmts...))
+ return nil
+}
diff --git a/go/tools/asthelpergen/equals_gen.go b/go/tools/asthelpergen/equals_gen.go
new file mode 100644
index 00000000000..93125ebcd37
--- /dev/null
+++ b/go/tools/asthelpergen/equals_gen.go
@@ -0,0 +1,259 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package asthelpergen
+
+import (
+ "fmt"
+ "go/types"
+
+ "github.com/dave/jennifer/jen"
+)
+
+const equalsName = "Equals"
+
+type equalsGen struct {
+ file *jen.File
+}
+
+var _ generator = (*equalsGen)(nil)
+
+func newEqualsGen(pkgname string) *equalsGen {
+ file := jen.NewFile(pkgname)
+ file.HeaderComment(licenseFileHeader)
+ file.HeaderComment("Code generated by ASTHelperGen. DO NOT EDIT.")
+
+ return &equalsGen{
+ file: file,
+ }
+}
+
+func (e *equalsGen) addFunc(name string, code *jen.Statement) {
+ e.file.Add(jen.Comment(fmt.Sprintf("%s does deep equals between the two objects.", name)))
+ e.file.Add(code)
+}
+
+func (e *equalsGen) genFile() (string, *jen.File) {
+ return "ast_equals.go", e.file
+}
+
+func (e *equalsGen) interfaceMethod(t types.Type, iface *types.Interface, spi generatorSPI) error {
+ /*
+ func EqualsAST(inA, inB AST) bool {
+ if inA == inB {
+ return true
+ }
+ if inA == nil || inB8 == nil {
+ return false
+ }
+ switch a := inA.(type) {
+ case *SubImpl:
+ b, ok := inB.(*SubImpl)
+ if !ok {
+ return false
+ }
+ return EqualsSubImpl(a, b)
+ }
+ return false
+ }
+ */
+ stmts := []jen.Code{
+ jen.If(jen.Id("inA == nil").Op("&&").Id("inB == nil")).Block(jen.Return(jen.True())),
+ jen.If(jen.Id("inA == nil").Op("||").Id("inB == nil")).Block(jen.Return(jen.False())),
+ }
+
+ var cases []jen.Code
+ _ = spi.findImplementations(iface, func(t types.Type) error {
+ if _, ok := t.Underlying().(*types.Interface); ok {
+ return nil
+ }
+ typeString := types.TypeString(t, noQualifier)
+ caseBlock := jen.Case(jen.Id(typeString)).Block(
+ jen.Id("b, ok := inB.").Call(jen.Id(typeString)),
+ jen.If(jen.Id("!ok")).Block(jen.Return(jen.False())),
+ jen.Return(compareValueType(t, jen.Id("a"), jen.Id("b"), true, spi)),
+ )
+ cases = append(cases, caseBlock)
+ return nil
+ })
+
+ cases = append(cases,
+ jen.Default().Block(
+ jen.Comment("this should never happen"),
+ jen.Return(jen.False()),
+ ))
+
+ stmts = append(stmts, jen.Switch(jen.Id("a := inA.(type)").Block(
+ cases...,
+ )))
+
+ typeString := types.TypeString(t, noQualifier)
+ funcName := equalsName + printableTypeName(t)
+ funcDecl := jen.Func().Id(funcName).Call(jen.List(jen.Id("inA"), jen.Id("inB")).Id(typeString)).Bool().Block(stmts...)
+ e.addFunc(funcName, funcDecl)
+
+ return nil
+}
+
+func compareValueType(t types.Type, a, b *jen.Statement, eq bool, spi generatorSPI) *jen.Statement {
+ switch t.Underlying().(type) {
+ case *types.Basic:
+ if eq {
+ return a.Op("==").Add(b)
+ }
+ return a.Op("!=").Add(b)
+ }
+ spi.addType(t)
+ var neg = "!"
+ if eq {
+ neg = ""
+ }
+ return jen.Id(neg+equalsName+printableTypeName(t)).Call(a, b)
+}
+
+func (e *equalsGen) structMethod(t types.Type, strct *types.Struct, spi generatorSPI) error {
+ /*
+ func EqualsRefOfRefContainer(inA RefContainer, inB RefContainer) bool {
+ return EqualsRefOfLeaf(inA.ASTImplementationType, inB.ASTImplementationType) &&
+ EqualsAST(inA.ASTType, inB.ASTType) && inA.NotASTType == inB.NotASTType
+ }
+
+ */
+
+ typeString := types.TypeString(t, noQualifier)
+ funcName := equalsName + printableTypeName(t)
+ funcDecl := jen.Func().Id(funcName).Call(jen.List(jen.Id("a"), jen.Id("b")).Id(typeString)).Bool().
+ Block(jen.Return(compareAllStructFields(strct, spi)))
+ e.addFunc(funcName, funcDecl)
+
+ return nil
+}
+
+func compareAllStructFields(strct *types.Struct, spi generatorSPI) jen.Code {
+ var basicsPred []*jen.Statement
+ var others []*jen.Statement
+ for i := 0; i < strct.NumFields(); i++ {
+ field := strct.Field(i)
+ if field.Type().Underlying().String() == "interface{}" || field.Name() == "_" {
+ // we can safely ignore this, we do not want ast to contain interface{} types.
+ continue
+ }
+ fieldA := jen.Id("a").Dot(field.Name())
+ fieldB := jen.Id("b").Dot(field.Name())
+ pred := compareValueType(field.Type(), fieldA, fieldB, true, spi)
+ if _, ok := field.Type().(*types.Basic); ok {
+ basicsPred = append(basicsPred, pred)
+ continue
+ }
+ others = append(others, pred)
+ }
+
+ var ret *jen.Statement
+ for _, pred := range basicsPred {
+ if ret == nil {
+ ret = pred
+ } else {
+ ret = ret.Op("&&").Line().Add(pred)
+ }
+ }
+
+ for _, pred := range others {
+ if ret == nil {
+ ret = pred
+ } else {
+ ret = ret.Op("&&").Line().Add(pred)
+ }
+ }
+
+ if ret == nil {
+ return jen.True()
+ }
+ return ret
+}
+
+func (e *equalsGen) ptrToStructMethod(t types.Type, strct *types.Struct, spi generatorSPI) error {
+ typeString := types.TypeString(t, noQualifier)
+ funcName := equalsName + printableTypeName(t)
+
+ //func EqualsRefOfType(a,b *Type) *Type
+ funcDeclaration := jen.Func().Id(funcName).Call(jen.Id("a"), jen.Id("b").Id(typeString)).Bool()
+ stmts := []jen.Code{
+ jen.If(jen.Id("a == b")).Block(jen.Return(jen.True())),
+ jen.If(jen.Id("a == nil").Op("||").Id("b == nil")).Block(jen.Return(jen.False())),
+ jen.Return(compareAllStructFields(strct, spi)),
+ }
+
+ e.addFunc(funcName, funcDeclaration.Block(stmts...))
+ return nil
+}
+
+func (e *equalsGen) ptrToBasicMethod(t types.Type, _ *types.Basic, spi generatorSPI) error {
+ /*
+ func EqualsRefOfBool(a, b *bool) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return *a == *b
+ }
+ */
+ typeString := types.TypeString(t, noQualifier)
+ funcName := equalsName + printableTypeName(t)
+
+ //func EqualsRefOfType(a,b *Type) *Type
+ funcDeclaration := jen.Func().Id(funcName).Call(jen.Id("a"), jen.Id("b").Id(typeString)).Bool()
+ stmts := []jen.Code{
+ jen.If(jen.Id("a == b")).Block(jen.Return(jen.True())),
+ jen.If(jen.Id("a == nil").Op("||").Id("b == nil")).Block(jen.Return(jen.False())),
+ jen.Return(jen.Id("*a == *b")),
+ }
+ e.addFunc(funcName, funcDeclaration.Block(stmts...))
+ return nil
+}
+
+func (e *equalsGen) sliceMethod(t types.Type, slice *types.Slice, spi generatorSPI) error {
+ /*
+ func EqualsSliceOfRefOfLeaf(a, b []*Leaf) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsRefOfLeaf(a[i], b[i]) {
+ return false
+ }
+ }
+ return false
+ }
+ */
+
+ stmts := []jen.Code{jen.If(jen.Id("len(a) != len(b)")).Block(jen.Return(jen.False())),
+ jen.For(jen.Id("i := 0; i < len(a); i++")).Block(
+ jen.If(compareValueType(slice.Elem(), jen.Id("a[i]"), jen.Id("b[i]"), false, spi)).Block(jen.Return(jen.False()))),
+ jen.Return(jen.True()),
+ }
+
+ typeString := types.TypeString(t, noQualifier)
+ funcName := equalsName + printableTypeName(t)
+ funcDecl := jen.Func().Id(funcName).Call(jen.List(jen.Id("a"), jen.Id("b")).Id(typeString)).Bool().Block(stmts...)
+ e.addFunc(funcName, funcDecl)
+ return nil
+}
+
+func (e *equalsGen) basicMethod(t types.Type, basic *types.Basic, spi generatorSPI) error {
+ return nil
+}
diff --git a/go/tools/asthelpergen/integration/ast_clone.go b/go/tools/asthelpergen/integration/ast_clone.go
new file mode 100644
index 00000000000..a11806b1301
--- /dev/null
+++ b/go/tools/asthelpergen/integration/ast_clone.go
@@ -0,0 +1,223 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+// Code generated by ASTHelperGen. DO NOT EDIT.
+
+package integration
+
+// CloneAST creates a deep clone of the input.
+func CloneAST(in AST) AST {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case BasicType:
+ return in
+ case Bytes:
+ return CloneBytes(in)
+ case InterfaceContainer:
+ return CloneInterfaceContainer(in)
+ case InterfaceSlice:
+ return CloneInterfaceSlice(in)
+ case *Leaf:
+ return CloneRefOfLeaf(in)
+ case LeafSlice:
+ return CloneLeafSlice(in)
+ case *NoCloneType:
+ return CloneRefOfNoCloneType(in)
+ case *RefContainer:
+ return CloneRefOfRefContainer(in)
+ case *RefSliceContainer:
+ return CloneRefOfRefSliceContainer(in)
+ case *SubImpl:
+ return CloneRefOfSubImpl(in)
+ case ValueContainer:
+ return CloneValueContainer(in)
+ case ValueSliceContainer:
+ return CloneValueSliceContainer(in)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+
+// CloneBytes creates a deep clone of the input.
+func CloneBytes(n Bytes) Bytes {
+ res := make(Bytes, 0, len(n))
+ copy(res, n)
+ return res
+}
+
+// CloneInterfaceContainer creates a deep clone of the input.
+func CloneInterfaceContainer(n InterfaceContainer) InterfaceContainer {
+ return *CloneRefOfInterfaceContainer(&n)
+}
+
+// CloneInterfaceSlice creates a deep clone of the input.
+func CloneInterfaceSlice(n InterfaceSlice) InterfaceSlice {
+ res := make(InterfaceSlice, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneAST(x))
+ }
+ return res
+}
+
+// CloneRefOfLeaf creates a deep clone of the input.
+func CloneRefOfLeaf(n *Leaf) *Leaf {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ return &out
+}
+
+// CloneLeafSlice creates a deep clone of the input.
+func CloneLeafSlice(n LeafSlice) LeafSlice {
+ res := make(LeafSlice, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneRefOfLeaf(x))
+ }
+ return res
+}
+
+// CloneRefOfNoCloneType creates a deep clone of the input.
+func CloneRefOfNoCloneType(n *NoCloneType) *NoCloneType {
+ return n
+}
+
+// CloneRefOfRefContainer creates a deep clone of the input.
+func CloneRefOfRefContainer(n *RefContainer) *RefContainer {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.ASTType = CloneAST(n.ASTType)
+ out.ASTImplementationType = CloneRefOfLeaf(n.ASTImplementationType)
+ return &out
+}
+
+// CloneRefOfRefSliceContainer creates a deep clone of the input.
+func CloneRefOfRefSliceContainer(n *RefSliceContainer) *RefSliceContainer {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.ASTElements = CloneSliceOfAST(n.ASTElements)
+ out.NotASTElements = CloneSliceOfInt(n.NotASTElements)
+ out.ASTImplementationElements = CloneSliceOfRefOfLeaf(n.ASTImplementationElements)
+ return &out
+}
+
+// CloneRefOfSubImpl creates a deep clone of the input.
+func CloneRefOfSubImpl(n *SubImpl) *SubImpl {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.inner = CloneSubIface(n.inner)
+ out.field = CloneRefOfBool(n.field)
+ return &out
+}
+
+// CloneValueContainer creates a deep clone of the input.
+func CloneValueContainer(n ValueContainer) ValueContainer {
+ return *CloneRefOfValueContainer(&n)
+}
+
+// CloneValueSliceContainer creates a deep clone of the input.
+func CloneValueSliceContainer(n ValueSliceContainer) ValueSliceContainer {
+ return *CloneRefOfValueSliceContainer(&n)
+}
+
+// CloneSubIface creates a deep clone of the input.
+func CloneSubIface(in SubIface) SubIface {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *SubImpl:
+ return CloneRefOfSubImpl(in)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+
+// CloneRefOfInterfaceContainer creates a deep clone of the input.
+func CloneRefOfInterfaceContainer(n *InterfaceContainer) *InterfaceContainer {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.v = n.v
+ return &out
+}
+
+// CloneSliceOfAST creates a deep clone of the input.
+func CloneSliceOfAST(n []AST) []AST {
+ res := make([]AST, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneAST(x))
+ }
+ return res
+}
+
+// CloneSliceOfInt creates a deep clone of the input.
+func CloneSliceOfInt(n []int) []int {
+ res := make([]int, 0, len(n))
+ copy(res, n)
+ return res
+}
+
+// CloneSliceOfRefOfLeaf creates a deep clone of the input.
+func CloneSliceOfRefOfLeaf(n []*Leaf) []*Leaf {
+ res := make([]*Leaf, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneRefOfLeaf(x))
+ }
+ return res
+}
+
+// CloneRefOfBool creates a deep clone of the input.
+func CloneRefOfBool(n *bool) *bool {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ return &out
+}
+
+// CloneRefOfValueContainer creates a deep clone of the input.
+func CloneRefOfValueContainer(n *ValueContainer) *ValueContainer {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.ASTType = CloneAST(n.ASTType)
+ out.ASTImplementationType = CloneRefOfLeaf(n.ASTImplementationType)
+ return &out
+}
+
+// CloneRefOfValueSliceContainer creates a deep clone of the input.
+func CloneRefOfValueSliceContainer(n *ValueSliceContainer) *ValueSliceContainer {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.ASTElements = CloneSliceOfAST(n.ASTElements)
+ out.NotASTElements = CloneSliceOfInt(n.NotASTElements)
+ out.ASTImplementationElements = CloneSliceOfRefOfLeaf(n.ASTImplementationElements)
+ return &out
+}
diff --git a/go/tools/asthelpergen/integration/ast_equals.go b/go/tools/asthelpergen/integration/ast_equals.go
new file mode 100644
index 00000000000..95bce62e7a6
--- /dev/null
+++ b/go/tools/asthelpergen/integration/ast_equals.go
@@ -0,0 +1,331 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+// Code generated by ASTHelperGen. DO NOT EDIT.
+
+package integration
+
+// EqualsAST does deep equals between the two objects.
+func EqualsAST(inA, inB AST) bool {
+ if inA == nil && inB == nil {
+ return true
+ }
+ if inA == nil || inB == nil {
+ return false
+ }
+ switch a := inA.(type) {
+ case BasicType:
+ b, ok := inB.(BasicType)
+ if !ok {
+ return false
+ }
+ return a == b
+ case Bytes:
+ b, ok := inB.(Bytes)
+ if !ok {
+ return false
+ }
+ return EqualsBytes(a, b)
+ case InterfaceContainer:
+ b, ok := inB.(InterfaceContainer)
+ if !ok {
+ return false
+ }
+ return EqualsInterfaceContainer(a, b)
+ case InterfaceSlice:
+ b, ok := inB.(InterfaceSlice)
+ if !ok {
+ return false
+ }
+ return EqualsInterfaceSlice(a, b)
+ case *Leaf:
+ b, ok := inB.(*Leaf)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfLeaf(a, b)
+ case LeafSlice:
+ b, ok := inB.(LeafSlice)
+ if !ok {
+ return false
+ }
+ return EqualsLeafSlice(a, b)
+ case *NoCloneType:
+ b, ok := inB.(*NoCloneType)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfNoCloneType(a, b)
+ case *RefContainer:
+ b, ok := inB.(*RefContainer)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfRefContainer(a, b)
+ case *RefSliceContainer:
+ b, ok := inB.(*RefSliceContainer)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfRefSliceContainer(a, b)
+ case *SubImpl:
+ b, ok := inB.(*SubImpl)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfSubImpl(a, b)
+ case ValueContainer:
+ b, ok := inB.(ValueContainer)
+ if !ok {
+ return false
+ }
+ return EqualsValueContainer(a, b)
+ case ValueSliceContainer:
+ b, ok := inB.(ValueSliceContainer)
+ if !ok {
+ return false
+ }
+ return EqualsValueSliceContainer(a, b)
+ default:
+ // this should never happen
+ return false
+ }
+}
+
+// EqualsBytes does deep equals between the two objects.
+func EqualsBytes(a, b Bytes) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if a[i] != b[i] {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsInterfaceContainer does deep equals between the two objects.
+func EqualsInterfaceContainer(a, b InterfaceContainer) bool {
+ return true
+}
+
+// EqualsInterfaceSlice does deep equals between the two objects.
+func EqualsInterfaceSlice(a, b InterfaceSlice) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsAST(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsRefOfLeaf does deep equals between the two objects.
+func EqualsRefOfLeaf(a, b *Leaf) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.v == b.v
+}
+
+// EqualsLeafSlice does deep equals between the two objects.
+func EqualsLeafSlice(a, b LeafSlice) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsRefOfLeaf(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsRefOfNoCloneType does deep equals between the two objects.
+func EqualsRefOfNoCloneType(a, b *NoCloneType) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.v == b.v
+}
+
+// EqualsRefOfRefContainer does deep equals between the two objects.
+func EqualsRefOfRefContainer(a, b *RefContainer) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.NotASTType == b.NotASTType &&
+ EqualsAST(a.ASTType, b.ASTType) &&
+ EqualsRefOfLeaf(a.ASTImplementationType, b.ASTImplementationType)
+}
+
+// EqualsRefOfRefSliceContainer does deep equals between the two objects.
+func EqualsRefOfRefSliceContainer(a, b *RefSliceContainer) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsSliceOfAST(a.ASTElements, b.ASTElements) &&
+ EqualsSliceOfInt(a.NotASTElements, b.NotASTElements) &&
+ EqualsSliceOfRefOfLeaf(a.ASTImplementationElements, b.ASTImplementationElements)
+}
+
+// EqualsRefOfSubImpl does deep equals between the two objects.
+func EqualsRefOfSubImpl(a, b *SubImpl) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsSubIface(a.inner, b.inner) &&
+ EqualsRefOfBool(a.field, b.field)
+}
+
+// EqualsValueContainer does deep equals between the two objects.
+func EqualsValueContainer(a, b ValueContainer) bool {
+ return a.NotASTType == b.NotASTType &&
+ EqualsAST(a.ASTType, b.ASTType) &&
+ EqualsRefOfLeaf(a.ASTImplementationType, b.ASTImplementationType)
+}
+
+// EqualsValueSliceContainer does deep equals between the two objects.
+func EqualsValueSliceContainer(a, b ValueSliceContainer) bool {
+ return EqualsSliceOfAST(a.ASTElements, b.ASTElements) &&
+ EqualsSliceOfInt(a.NotASTElements, b.NotASTElements) &&
+ EqualsSliceOfRefOfLeaf(a.ASTImplementationElements, b.ASTImplementationElements)
+}
+
+// EqualsSubIface does deep equals between the two objects.
+func EqualsSubIface(inA, inB SubIface) bool {
+ if inA == nil && inB == nil {
+ return true
+ }
+ if inA == nil || inB == nil {
+ return false
+ }
+ switch a := inA.(type) {
+ case *SubImpl:
+ b, ok := inB.(*SubImpl)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfSubImpl(a, b)
+ default:
+ // this should never happen
+ return false
+ }
+}
+
+// EqualsRefOfInterfaceContainer does deep equals between the two objects.
+func EqualsRefOfInterfaceContainer(a, b *InterfaceContainer) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return true
+}
+
+// EqualsSliceOfAST does deep equals between the two objects.
+func EqualsSliceOfAST(a, b []AST) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsAST(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsSliceOfInt does deep equals between the two objects.
+func EqualsSliceOfInt(a, b []int) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if a[i] != b[i] {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsSliceOfRefOfLeaf does deep equals between the two objects.
+func EqualsSliceOfRefOfLeaf(a, b []*Leaf) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsRefOfLeaf(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsRefOfBool does deep equals between the two objects.
+func EqualsRefOfBool(a, b *bool) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return *a == *b
+}
+
+// EqualsRefOfValueContainer does deep equals between the two objects.
+func EqualsRefOfValueContainer(a, b *ValueContainer) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.NotASTType == b.NotASTType &&
+ EqualsAST(a.ASTType, b.ASTType) &&
+ EqualsRefOfLeaf(a.ASTImplementationType, b.ASTImplementationType)
+}
+
+// EqualsRefOfValueSliceContainer does deep equals between the two objects.
+func EqualsRefOfValueSliceContainer(a, b *ValueSliceContainer) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsSliceOfAST(a.ASTElements, b.ASTElements) &&
+ EqualsSliceOfInt(a.NotASTElements, b.NotASTElements) &&
+ EqualsSliceOfRefOfLeaf(a.ASTImplementationElements, b.ASTImplementationElements)
+}
diff --git a/go/tools/asthelpergen/integration/ast_rewrite.go b/go/tools/asthelpergen/integration/ast_rewrite.go
new file mode 100644
index 00000000000..5d554e92e43
--- /dev/null
+++ b/go/tools/asthelpergen/integration/ast_rewrite.go
@@ -0,0 +1,498 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+// Code generated by ASTHelperGen. DO NOT EDIT.
+
+package integration
+
+func (a *application) rewriteAST(parent AST, node AST, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ switch node := node.(type) {
+ case BasicType:
+ return a.rewriteBasicType(parent, node, replacer)
+ case Bytes:
+ return a.rewriteBytes(parent, node, replacer)
+ case InterfaceContainer:
+ return a.rewriteInterfaceContainer(parent, node, replacer)
+ case InterfaceSlice:
+ return a.rewriteInterfaceSlice(parent, node, replacer)
+ case *Leaf:
+ return a.rewriteRefOfLeaf(parent, node, replacer)
+ case LeafSlice:
+ return a.rewriteLeafSlice(parent, node, replacer)
+ case *NoCloneType:
+ return a.rewriteRefOfNoCloneType(parent, node, replacer)
+ case *RefContainer:
+ return a.rewriteRefOfRefContainer(parent, node, replacer)
+ case *RefSliceContainer:
+ return a.rewriteRefOfRefSliceContainer(parent, node, replacer)
+ case *SubImpl:
+ return a.rewriteRefOfSubImpl(parent, node, replacer)
+ case ValueContainer:
+ return a.rewriteValueContainer(parent, node, replacer)
+ case ValueSliceContainer:
+ return a.rewriteValueSliceContainer(parent, node, replacer)
+ default:
+ // this should never happen
+ return true
+ }
+}
+func (a *application) rewriteBytes(parent AST, node Bytes, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteInterfaceContainer(parent AST, node InterfaceContainer, replacer replacerFunc) bool {
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteInterfaceSlice(parent AST, node InterfaceSlice, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ for x, el := range node {
+ if !a.rewriteAST(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent AST) {
+ parent.(InterfaceSlice)[idx] = newNode.(AST)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfLeaf(parent AST, node *Leaf, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteLeafSlice(parent AST, node LeafSlice, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ for x, el := range node {
+ if !a.rewriteRefOfLeaf(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent AST) {
+ parent.(LeafSlice)[idx] = newNode.(*Leaf)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfNoCloneType(parent AST, node *NoCloneType, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfRefContainer(parent AST, node *RefContainer, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteAST(node, node.ASTType, func(newNode, parent AST) {
+ parent.(*RefContainer).ASTType = newNode.(AST)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfLeaf(node, node.ASTImplementationType, func(newNode, parent AST) {
+ parent.(*RefContainer).ASTImplementationType = newNode.(*Leaf)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfRefSliceContainer(parent AST, node *RefSliceContainer, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ for x, el := range node.ASTElements {
+ if !a.rewriteAST(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent AST) {
+ parent.(*RefSliceContainer).ASTElements[idx] = newNode.(AST)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ for x, el := range node.ASTImplementationElements {
+ if !a.rewriteRefOfLeaf(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent AST) {
+ parent.(*RefSliceContainer).ASTImplementationElements[idx] = newNode.(*Leaf)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfSubImpl(parent AST, node *SubImpl, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteSubIface(node, node.inner, func(newNode, parent AST) {
+ parent.(*SubImpl).inner = newNode.(SubIface)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteValueContainer(parent AST, node ValueContainer, replacer replacerFunc) bool {
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteAST(node, node.ASTType, func(newNode, parent AST) {
+ panic("[BUG] tried to replace 'ASTType' on 'ValueContainer'")
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfLeaf(node, node.ASTImplementationType, func(newNode, parent AST) {
+ panic("[BUG] tried to replace 'ASTImplementationType' on 'ValueContainer'")
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteValueSliceContainer(parent AST, node ValueSliceContainer, replacer replacerFunc) bool {
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ for _, el := range node.ASTElements {
+ if !a.rewriteAST(node, el, func(newNode, parent AST) {
+ panic("[BUG] tried to replace 'ASTElements' on 'ValueSliceContainer'")
+ }) {
+ return false
+ }
+ }
+ for _, el := range node.ASTImplementationElements {
+ if !a.rewriteRefOfLeaf(node, el, func(newNode, parent AST) {
+ panic("[BUG] tried to replace 'ASTImplementationElements' on 'ValueSliceContainer'")
+ }) {
+ return false
+ }
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteSubIface(parent AST, node SubIface, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ switch node := node.(type) {
+ case *SubImpl:
+ return a.rewriteRefOfSubImpl(parent, node, replacer)
+ default:
+ // this should never happen
+ return true
+ }
+}
+func (a *application) rewriteBasicType(parent AST, node BasicType, replacer replacerFunc) bool {
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfInterfaceContainer(parent AST, node *InterfaceContainer, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfValueContainer(parent AST, node *ValueContainer, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteAST(node, node.ASTType, func(newNode, parent AST) {
+ parent.(*ValueContainer).ASTType = newNode.(AST)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfLeaf(node, node.ASTImplementationType, func(newNode, parent AST) {
+ parent.(*ValueContainer).ASTImplementationType = newNode.(*Leaf)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfValueSliceContainer(parent AST, node *ValueSliceContainer, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ for x, el := range node.ASTElements {
+ if !a.rewriteAST(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent AST) {
+ parent.(*ValueSliceContainer).ASTElements[idx] = newNode.(AST)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ for x, el := range node.ASTImplementationElements {
+ if !a.rewriteRefOfLeaf(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent AST) {
+ parent.(*ValueSliceContainer).ASTImplementationElements[idx] = newNode.(*Leaf)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
diff --git a/go/tools/asthelpergen/integration/ast_visit.go b/go/tools/asthelpergen/integration/ast_visit.go
new file mode 100644
index 00000000000..8fb3c89ad56
--- /dev/null
+++ b/go/tools/asthelpergen/integration/ast_visit.go
@@ -0,0 +1,242 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+// Code generated by ASTHelperGen. DO NOT EDIT.
+
+package integration
+
+func VisitAST(in AST, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case BasicType:
+ return VisitBasicType(in, f)
+ case Bytes:
+ return VisitBytes(in, f)
+ case InterfaceContainer:
+ return VisitInterfaceContainer(in, f)
+ case InterfaceSlice:
+ return VisitInterfaceSlice(in, f)
+ case *Leaf:
+ return VisitRefOfLeaf(in, f)
+ case LeafSlice:
+ return VisitLeafSlice(in, f)
+ case *NoCloneType:
+ return VisitRefOfNoCloneType(in, f)
+ case *RefContainer:
+ return VisitRefOfRefContainer(in, f)
+ case *RefSliceContainer:
+ return VisitRefOfRefSliceContainer(in, f)
+ case *SubImpl:
+ return VisitRefOfSubImpl(in, f)
+ case ValueContainer:
+ return VisitValueContainer(in, f)
+ case ValueSliceContainer:
+ return VisitValueSliceContainer(in, f)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+func VisitBytes(in Bytes, f Visit) error {
+ _, err := f(in)
+ return err
+}
+func VisitInterfaceContainer(in InterfaceContainer, f Visit) error {
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitInterfaceSlice(in InterfaceSlice, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ for _, el := range in {
+ if err := VisitAST(el, f); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+func VisitRefOfLeaf(in *Leaf, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitLeafSlice(in LeafSlice, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ for _, el := range in {
+ if err := VisitRefOfLeaf(el, f); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+func VisitRefOfNoCloneType(in *NoCloneType, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitRefOfRefContainer(in *RefContainer, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitAST(in.ASTType, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfLeaf(in.ASTImplementationType, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfRefSliceContainer(in *RefSliceContainer, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ for _, el := range in.ASTElements {
+ if err := VisitAST(el, f); err != nil {
+ return err
+ }
+ }
+ for _, el := range in.ASTImplementationElements {
+ if err := VisitRefOfLeaf(el, f); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+func VisitRefOfSubImpl(in *SubImpl, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitSubIface(in.inner, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitValueContainer(in ValueContainer, f Visit) error {
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitAST(in.ASTType, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfLeaf(in.ASTImplementationType, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitValueSliceContainer(in ValueSliceContainer, f Visit) error {
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ for _, el := range in.ASTElements {
+ if err := VisitAST(el, f); err != nil {
+ return err
+ }
+ }
+ for _, el := range in.ASTImplementationElements {
+ if err := VisitRefOfLeaf(el, f); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+func VisitSubIface(in SubIface, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *SubImpl:
+ return VisitRefOfSubImpl(in, f)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+func VisitBasicType(in BasicType, f Visit) error {
+ _, err := f(in)
+ return err
+}
+func VisitRefOfInterfaceContainer(in *InterfaceContainer, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitRefOfValueContainer(in *ValueContainer, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitAST(in.ASTType, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfLeaf(in.ASTImplementationType, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfValueSliceContainer(in *ValueSliceContainer, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ for _, el := range in.ASTElements {
+ if err := VisitAST(el, f); err != nil {
+ return err
+ }
+ }
+ for _, el := range in.ASTImplementationElements {
+ if err := VisitRefOfLeaf(el, f); err != nil {
+ return err
+ }
+ }
+ return nil
+}
diff --git a/go/tools/asthelpergen/integration/integration_clone_test.go b/go/tools/asthelpergen/integration/integration_clone_test.go
new file mode 100644
index 00000000000..f7adf9e7eef
--- /dev/null
+++ b/go/tools/asthelpergen/integration/integration_clone_test.go
@@ -0,0 +1,66 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package integration
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestCloneLeaf(t *testing.T) {
+ leaf1 := &Leaf{1}
+ clone := CloneRefOfLeaf(leaf1)
+ assert.Equal(t, leaf1, clone)
+ leaf1.v = 5
+ assert.NotEqual(t, leaf1, clone)
+}
+
+func TestClone2(t *testing.T) {
+ container := &RefContainer{
+ ASTType: &RefContainer{},
+ NotASTType: 0,
+ ASTImplementationType: &Leaf{2},
+ }
+ clone := CloneRefOfRefContainer(container)
+ assert.Equal(t, container, clone)
+ container.ASTImplementationType.v = 5
+ assert.NotEqual(t, container, clone)
+}
+
+func TestTypeException(t *testing.T) {
+ l1 := &Leaf{1}
+ nc := &NoCloneType{1}
+
+ slice := InterfaceSlice{
+ l1,
+ nc,
+ }
+
+ clone := CloneAST(slice)
+
+ // change the original values
+ l1.v = 99
+ nc.v = 99
+
+ expected := InterfaceSlice{
+ &Leaf{1}, // the change is not seen
+ &NoCloneType{99}, // since this type is not cloned, we do see the change
+ }
+
+ assert.Equal(t, expected, clone)
+}
diff --git a/go/tools/asthelpergen/integration/integration_equals_test.go b/go/tools/asthelpergen/integration/integration_equals_test.go
new file mode 100644
index 00000000000..df3316cfe17
--- /dev/null
+++ b/go/tools/asthelpergen/integration/integration_equals_test.go
@@ -0,0 +1,70 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package integration
+
+import (
+ "fmt"
+ "testing"
+
+ "github.com/stretchr/testify/require"
+)
+
+func TestEquals(t *testing.T) {
+ for idxA, objA := range createObjs() {
+ for idxB, objB := range createObjs() {
+ t.Run(fmt.Sprintf("%s == %s", name(objA), name(objB)), func(t *testing.T) {
+ if idxA == idxB {
+ require.True(t, EqualsAST(objA, objB))
+ } else {
+ require.False(t, EqualsAST(objA, objB))
+ }
+ })
+ }
+ }
+}
+
+func createObjs() []AST {
+ t := true
+ return []AST{
+ nil,
+ &Leaf{1},
+ &Leaf{2},
+ &RefContainer{ASTType: &Leaf{1}, ASTImplementationType: &Leaf{2}},
+ ValueContainer{ASTType: ValueContainer{ASTType: &Leaf{1}, ASTImplementationType: &Leaf{2}}},
+ &RefSliceContainer{ASTElements: []AST{&Leaf{1}, &Leaf{2}}, ASTImplementationElements: []*Leaf{{3}, {4}}},
+ ValueSliceContainer{ASTElements: []AST{&Leaf{1}, &Leaf{2}}, ASTImplementationElements: []*Leaf{{3}, {4}}},
+ InterfaceSlice{
+ &RefContainer{
+ ASTType: &RefContainer{NotASTType: 12},
+ ASTImplementationType: &Leaf{2},
+ },
+ &Leaf{2},
+ &Leaf{3},
+ },
+ &SubImpl{
+ inner: &SubImpl{},
+ field: &t,
+ },
+ }
+}
+
+func name(a AST) string {
+ if a == nil {
+ return "nil"
+ }
+ return a.String()
+}
diff --git a/go/tools/asthelpergen/integration/integration_rewriter_test.go b/go/tools/asthelpergen/integration/integration_rewriter_test.go
new file mode 100644
index 00000000000..7699fe45f6a
--- /dev/null
+++ b/go/tools/asthelpergen/integration/integration_rewriter_test.go
@@ -0,0 +1,353 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package integration
+
+import (
+ "fmt"
+ "reflect"
+ "testing"
+
+ "github.com/stretchr/testify/require"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestRewriteVisitRefContainer(t *testing.T) {
+ leaf1 := &Leaf{1}
+ leaf2 := &Leaf{2}
+ container := &RefContainer{ASTType: leaf1, ASTImplementationType: leaf2}
+ containerContainer := &RefContainer{ASTType: container}
+
+ tv := &rewriteTestVisitor{}
+
+ _ = Rewrite(containerContainer, tv.pre, tv.post)
+
+ expected := []step{
+ Pre{containerContainer},
+ Pre{container},
+ Pre{leaf1},
+ Post{leaf1},
+ Pre{leaf2},
+ Post{leaf2},
+ Post{container},
+ Post{containerContainer},
+ }
+ tv.assertEquals(t, expected)
+}
+
+func TestRewriteVisitValueContainer(t *testing.T) {
+ leaf1 := &Leaf{1}
+ leaf2 := &Leaf{2}
+ container := ValueContainer{ASTType: leaf1, ASTImplementationType: leaf2}
+ containerContainer := ValueContainer{ASTType: container}
+
+ tv := &rewriteTestVisitor{}
+
+ _ = Rewrite(containerContainer, tv.pre, tv.post)
+
+ expected := []step{
+ Pre{containerContainer},
+ Pre{container},
+ Pre{leaf1},
+ Post{leaf1},
+ Pre{leaf2},
+ Post{leaf2},
+ Post{container},
+ Post{containerContainer},
+ }
+ tv.assertEquals(t, expected)
+}
+
+func TestRewriteVisitRefSliceContainer(t *testing.T) {
+ leaf1 := &Leaf{1}
+ leaf2 := &Leaf{2}
+ leaf3 := &Leaf{3}
+ leaf4 := &Leaf{4}
+ container := &RefSliceContainer{ASTElements: []AST{leaf1, leaf2}, ASTImplementationElements: []*Leaf{leaf3, leaf4}}
+ containerContainer := &RefSliceContainer{ASTElements: []AST{container}}
+
+ tv := &rewriteTestVisitor{}
+
+ _ = Rewrite(containerContainer, tv.pre, tv.post)
+
+ tv.assertEquals(t, []step{
+ Pre{containerContainer},
+ Pre{container},
+ Pre{leaf1},
+ Post{leaf1},
+ Pre{leaf2},
+ Post{leaf2},
+ Pre{leaf3},
+ Post{leaf3},
+ Pre{leaf4},
+ Post{leaf4},
+ Post{container},
+ Post{containerContainer},
+ })
+}
+
+func TestRewriteVisitValueSliceContainer(t *testing.T) {
+ leaf1 := &Leaf{1}
+ leaf2 := &Leaf{2}
+ leaf3 := &Leaf{3}
+ leaf4 := &Leaf{4}
+ container := ValueSliceContainer{ASTElements: []AST{leaf1, leaf2}, ASTImplementationElements: []*Leaf{leaf3, leaf4}}
+ containerContainer := ValueSliceContainer{ASTElements: []AST{container}}
+
+ tv := &rewriteTestVisitor{}
+
+ _ = Rewrite(containerContainer, tv.pre, tv.post)
+
+ tv.assertEquals(t, []step{
+ Pre{containerContainer},
+ Pre{container},
+ Pre{leaf1},
+ Post{leaf1},
+ Pre{leaf2},
+ Post{leaf2},
+ Pre{leaf3},
+ Post{leaf3},
+ Pre{leaf4},
+ Post{leaf4},
+ Post{container},
+ Post{containerContainer},
+ })
+}
+
+func TestRewriteVisitInterfaceSlice(t *testing.T) {
+ leaf1 := &Leaf{2}
+ astType := &RefContainer{NotASTType: 12}
+ implementationType := &Leaf{2}
+
+ leaf2 := &Leaf{3}
+ refContainer := &RefContainer{
+ ASTType: astType,
+ ASTImplementationType: implementationType,
+ }
+ ast := InterfaceSlice{
+ refContainer,
+ leaf1,
+ leaf2,
+ }
+
+ tv := &rewriteTestVisitor{}
+
+ _ = Rewrite(ast, tv.pre, tv.post)
+
+ tv.assertEquals(t, []step{
+ Pre{ast},
+ Pre{refContainer},
+ Pre{astType},
+ Post{astType},
+ Pre{implementationType},
+ Post{implementationType},
+ Post{refContainer},
+ Pre{leaf1},
+ Post{leaf1},
+ Pre{leaf2},
+ Post{leaf2},
+ Post{ast},
+ })
+}
+
+func TestRewriteVisitRefContainerReplace(t *testing.T) {
+ ast := &RefContainer{
+ ASTType: &RefContainer{NotASTType: 12},
+ ASTImplementationType: &Leaf{2},
+ }
+
+ // rewrite field of type AST
+ _ = Rewrite(ast, func(cursor *Cursor) bool {
+ leaf, ok := cursor.node.(*RefContainer)
+ if ok && leaf.NotASTType == 12 {
+ cursor.Replace(&Leaf{99})
+ }
+ return true
+ }, nil)
+
+ assert.Equal(t, &RefContainer{
+ ASTType: &Leaf{99},
+ ASTImplementationType: &Leaf{2},
+ }, ast)
+
+ _ = Rewrite(ast, rewriteLeaf(2, 55), nil)
+
+ assert.Equal(t, &RefContainer{
+ ASTType: &Leaf{99},
+ ASTImplementationType: &Leaf{55},
+ }, ast)
+}
+
+func TestRewriteVisitValueContainerReplace(t *testing.T) {
+
+ ast := ValueContainer{
+ ASTType: ValueContainer{NotASTType: 12},
+ ASTImplementationType: &Leaf{2},
+ }
+
+ defer func() {
+ if r := recover(); r != nil {
+ require.Equal(t, "[BUG] tried to replace 'ASTType' on 'ValueContainer'", r)
+ }
+ }()
+ _ = Rewrite(ast, func(cursor *Cursor) bool {
+ leaf, ok := cursor.node.(ValueContainer)
+ if ok && leaf.NotASTType == 12 {
+ cursor.Replace(&Leaf{99})
+ }
+ return true
+ }, nil)
+
+}
+
+func TestRewriteVisitValueContainerReplace2(t *testing.T) {
+ ast := ValueContainer{
+ ASTType: ValueContainer{NotASTType: 12},
+ ASTImplementationType: &Leaf{2},
+ }
+
+ defer func() {
+ if r := recover(); r != nil {
+ require.Equal(t, "[BUG] tried to replace 'ASTImplementationType' on 'ValueContainer'", r)
+ }
+ }()
+ _ = Rewrite(ast, rewriteLeaf(2, 10), nil)
+}
+
+func TestRewriteVisitRefContainerPreOrPostOnly(t *testing.T) {
+ leaf1 := &Leaf{1}
+ leaf2 := &Leaf{2}
+ container := &RefContainer{ASTType: leaf1, ASTImplementationType: leaf2}
+ containerContainer := &RefContainer{ASTType: container}
+
+ tv := &rewriteTestVisitor{}
+
+ _ = Rewrite(containerContainer, tv.pre, nil)
+ tv.assertEquals(t, []step{
+ Pre{containerContainer},
+ Pre{container},
+ Pre{leaf1},
+ Pre{leaf2},
+ })
+
+ tv = &rewriteTestVisitor{}
+ _ = Rewrite(containerContainer, nil, tv.post)
+ tv.assertEquals(t, []step{
+ Post{leaf1},
+ Post{leaf2},
+ Post{container},
+ Post{containerContainer},
+ })
+}
+
+func rewriteLeaf(from, to int) func(*Cursor) bool {
+ return func(cursor *Cursor) bool {
+ leaf, ok := cursor.node.(*Leaf)
+ if ok && leaf.v == from {
+ cursor.Replace(&Leaf{to})
+ }
+ return true
+ }
+}
+
+func TestRefSliceContainerReplace(t *testing.T) {
+ ast := &RefSliceContainer{
+ ASTElements: []AST{&Leaf{1}, &Leaf{2}},
+ ASTImplementationElements: []*Leaf{{3}, {4}},
+ }
+
+ _ = Rewrite(ast, rewriteLeaf(2, 42), nil)
+
+ assert.Equal(t, &RefSliceContainer{
+ ASTElements: []AST{&Leaf{1}, &Leaf{42}},
+ ASTImplementationElements: []*Leaf{{3}, {4}},
+ }, ast)
+
+ _ = Rewrite(ast, rewriteLeaf(3, 88), nil)
+
+ assert.Equal(t, &RefSliceContainer{
+ ASTElements: []AST{&Leaf{1}, &Leaf{42}},
+ ASTImplementationElements: []*Leaf{{88}, {4}},
+ }, ast)
+}
+
+type step interface {
+ String() string
+}
+type Pre struct {
+ el AST
+}
+
+func (r Pre) String() string {
+ return fmt.Sprintf("Pre(%s)", r.el.String())
+}
+func (r Post) String() string {
+ return fmt.Sprintf("Post(%s)", r.el.String())
+}
+
+type Post struct {
+ el AST
+}
+
+type rewriteTestVisitor struct {
+ walk []step
+}
+
+func (tv *rewriteTestVisitor) pre(cursor *Cursor) bool {
+ tv.walk = append(tv.walk, Pre{el: cursor.Node()})
+ return true
+}
+func (tv *rewriteTestVisitor) post(cursor *Cursor) bool {
+ tv.walk = append(tv.walk, Post{el: cursor.Node()})
+ return true
+}
+func (tv *rewriteTestVisitor) assertEquals(t *testing.T, expected []step) {
+ t.Helper()
+ var lines []string
+ error := false
+ expectedSize := len(expected)
+ for i, step := range tv.walk {
+ if expectedSize <= i {
+ t.Errorf("❌️ - Expected less elements %v", tv.walk[i:])
+ break
+ } else {
+ e := expected[i]
+ if reflect.DeepEqual(e, step) {
+ a := "✔️ - " + e.String()
+ if error {
+ fmt.Println(a)
+ } else {
+ lines = append(lines, a)
+ }
+ } else {
+ if !error {
+ // first error we see.
+ error = true
+ for _, line := range lines {
+ fmt.Println(line)
+ }
+ }
+ t.Errorf("❌️ - Expected: %s Got: %s\n", e.String(), step.String())
+ }
+ }
+ }
+ walkSize := len(tv.walk)
+ if expectedSize > walkSize {
+ t.Errorf("❌️ - Expected more elements %v", expected[walkSize:])
+ }
+
+}
diff --git a/go/tools/asthelpergen/integration/integration_visit_test.go b/go/tools/asthelpergen/integration/integration_visit_test.go
new file mode 100644
index 00000000000..31c0d6451c4
--- /dev/null
+++ b/go/tools/asthelpergen/integration/integration_visit_test.go
@@ -0,0 +1,186 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package integration
+
+import (
+ "fmt"
+ "reflect"
+ "testing"
+
+ "github.com/stretchr/testify/require"
+)
+
+type testVisitor struct {
+ seen []AST
+}
+
+func (tv *testVisitor) visit(node AST) (bool, error) {
+ tv.seen = append(tv.seen, node)
+ return true, nil
+}
+
+func TestVisitRefContainer(t *testing.T) {
+ leaf1 := &Leaf{1}
+ leaf2 := &Leaf{2}
+ container := &RefContainer{ASTType: leaf1, ASTImplementationType: leaf2}
+ containerContainer := &RefContainer{ASTType: container}
+
+ tv := &testVisitor{}
+
+ require.NoError(t,
+ VisitAST(containerContainer, tv.visit))
+
+ tv.assertVisitOrder(t, []AST{
+ containerContainer,
+ container,
+ leaf1,
+ leaf2,
+ })
+}
+
+func TestVisitValueContainer(t *testing.T) {
+ leaf1 := &Leaf{1}
+ leaf2 := &Leaf{2}
+ container := ValueContainer{ASTType: leaf1, ASTImplementationType: leaf2}
+ containerContainer := ValueContainer{ASTType: container}
+
+ tv := &testVisitor{}
+
+ require.NoError(t,
+ VisitAST(containerContainer, tv.visit))
+
+ expected := []AST{
+ containerContainer,
+ container,
+ leaf1,
+ leaf2,
+ }
+ tv.assertVisitOrder(t, expected)
+}
+
+func TestVisitRefSliceContainer(t *testing.T) {
+ leaf1 := &Leaf{1}
+ leaf2 := &Leaf{2}
+ leaf3 := &Leaf{3}
+ leaf4 := &Leaf{4}
+ container := &RefSliceContainer{ASTElements: []AST{leaf1, leaf2}, ASTImplementationElements: []*Leaf{leaf3, leaf4}}
+ containerContainer := &RefSliceContainer{ASTElements: []AST{container}}
+
+ tv := &testVisitor{}
+
+ require.NoError(t,
+ VisitAST(containerContainer, tv.visit))
+
+ tv.assertVisitOrder(t, []AST{
+ containerContainer,
+ container,
+ leaf1,
+ leaf2,
+ leaf3,
+ leaf4,
+ })
+}
+
+func TestVisitValueSliceContainer(t *testing.T) {
+ leaf1 := &Leaf{1}
+ leaf2 := &Leaf{2}
+ leaf3 := &Leaf{3}
+ leaf4 := &Leaf{4}
+ container := ValueSliceContainer{ASTElements: []AST{leaf1, leaf2}, ASTImplementationElements: []*Leaf{leaf3, leaf4}}
+ containerContainer := ValueSliceContainer{ASTElements: []AST{container}}
+
+ tv := &testVisitor{}
+
+ require.NoError(t,
+ VisitAST(containerContainer, tv.visit))
+
+ tv.assertVisitOrder(t, []AST{
+ containerContainer,
+ container,
+ leaf1,
+ leaf2,
+ leaf3,
+ leaf4,
+ })
+}
+
+func TestVisitInterfaceSlice(t *testing.T) {
+ leaf1 := &Leaf{2}
+ astType := &RefContainer{NotASTType: 12}
+ implementationType := &Leaf{2}
+
+ leaf2 := &Leaf{3}
+ refContainer := &RefContainer{
+ ASTType: astType,
+ ASTImplementationType: implementationType,
+ }
+ ast := InterfaceSlice{
+ refContainer,
+ leaf1,
+ leaf2,
+ }
+
+ tv := &testVisitor{}
+
+ require.NoError(t,
+ VisitAST(ast, tv.visit))
+
+ tv.assertVisitOrder(t, []AST{
+ ast,
+ refContainer,
+ astType,
+ implementationType,
+ leaf1,
+ leaf2,
+ })
+}
+
+func (tv *testVisitor) assertVisitOrder(t *testing.T, expected []AST) {
+ t.Helper()
+ var lines []string
+ failed := false
+ expectedSize := len(expected)
+ for i, step := range tv.seen {
+ if expectedSize <= i {
+ t.Errorf("❌️ - Expected less elements %v", tv.seen[i:])
+ break
+ } else {
+ e := expected[i]
+ if reflect.DeepEqual(e, step) {
+ a := "✔️ - " + e.String()
+ if failed {
+ fmt.Println(a)
+ } else {
+ lines = append(lines, a)
+ }
+ } else {
+ if !failed {
+ // first error we see.
+ failed = true
+ for _, line := range lines {
+ fmt.Println(line)
+ }
+ }
+ t.Errorf("❌️ - Expected: %s Got: %s\n", e.String(), step.String())
+ }
+ }
+ }
+ walkSize := len(tv.seen)
+ if expectedSize > walkSize {
+ t.Errorf("❌️ - Expected more elements %v", expected[walkSize:])
+ }
+}
diff --git a/go/tools/asthelpergen/integration/test_helpers.go b/go/tools/asthelpergen/integration/test_helpers.go
new file mode 100644
index 00000000000..923f6f7c546
--- /dev/null
+++ b/go/tools/asthelpergen/integration/test_helpers.go
@@ -0,0 +1,81 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package integration
+
+import (
+ "strings"
+)
+
+// ast type helpers
+
+func sliceStringAST(els ...AST) string {
+ result := make([]string, len(els))
+ for i, el := range els {
+ result[i] = el.String()
+ }
+ return strings.Join(result, ", ")
+}
+func sliceStringLeaf(els ...*Leaf) string {
+ result := make([]string, len(els))
+ for i, el := range els {
+ result[i] = el.String()
+ }
+ return strings.Join(result, ", ")
+}
+
+// the methods below are what the generated code expected to be there in the package
+
+// ApplyFunc is apply function
+type ApplyFunc func(*Cursor) bool
+
+// Cursor is cursor
+type Cursor struct {
+ parent AST
+ replacer replacerFunc
+ node AST
+}
+
+// Node returns the current Node.
+func (c *Cursor) Node() AST { return c.node }
+
+// Parent returns the parent of the current Node.
+func (c *Cursor) Parent() AST { return c.parent }
+
+// Replace replaces the current node in the parent field with this new object. The use needs to make sure to not
+// replace the object with something of the wrong type, or the visitor will panic.
+func (c *Cursor) Replace(newNode AST) {
+ c.replacer(newNode, c.parent)
+ c.node = newNode
+}
+
+type replacerFunc func(newNode, parent AST)
+
+// Rewrite is the api.
+func Rewrite(node AST, pre, post ApplyFunc) AST {
+ outer := &struct{ AST }{node}
+
+ a := &application{
+ pre: pre,
+ post: post,
+ }
+
+ a.rewriteAST(outer, node, func(newNode, parent AST) {
+ outer.AST = newNode
+ })
+
+ return outer.AST
+}
diff --git a/go/tools/asthelpergen/integration/types.go b/go/tools/asthelpergen/integration/types.go
new file mode 100644
index 00000000000..3bed2b5e009
--- /dev/null
+++ b/go/tools/asthelpergen/integration/types.go
@@ -0,0 +1,180 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+//nolint
+package integration
+
+import (
+ "fmt"
+ "strings"
+)
+
+/*
+These types are used to test the rewriter generator against these types.
+To recreate them, just run:
+
+go run go/tools/asthelpergen -in ./go/tools/asthelpergen/integration -iface vitess.io/vitess/go/tools/asthelpergen/integration.AST -except "*NoCloneType"
+*/
+// AST is the interface all interface types implement
+type AST interface {
+ String() string
+}
+
+// Empty struct impl of the iface
+type Leaf struct {
+ v int
+}
+
+func (l *Leaf) String() string {
+ if l == nil {
+ return "nil"
+ }
+ return fmt.Sprintf("Leaf(%d)", l.v)
+}
+
+// Container implements the interface ByRef
+type RefContainer struct {
+ ASTType AST
+ NotASTType int
+ ASTImplementationType *Leaf
+}
+
+func (r *RefContainer) String() string {
+ if r == nil {
+ return "nil"
+ }
+ var astType = ""
+ if r.ASTType == nil {
+ astType = "nil"
+ } else {
+ astType = r.ASTType.String()
+ }
+ return fmt.Sprintf("RefContainer{%s, %d, %s}", astType, r.NotASTType, r.ASTImplementationType.String())
+}
+
+// Container implements the interface ByRef
+type RefSliceContainer struct {
+ ASTElements []AST
+ NotASTElements []int
+ ASTImplementationElements []*Leaf
+}
+
+func (r *RefSliceContainer) String() string {
+ return fmt.Sprintf("RefSliceContainer{%s, %s, %s}", sliceStringAST(r.ASTElements...), "r.NotASTType", sliceStringLeaf(r.ASTImplementationElements...))
+}
+
+// Container implements the interface ByValue
+type ValueContainer struct {
+ ASTType AST
+ NotASTType int
+ ASTImplementationType *Leaf
+}
+
+func (r ValueContainer) String() string {
+ return fmt.Sprintf("ValueContainer{%s, %d, %s}", r.ASTType.String(), r.NotASTType, r.ASTImplementationType.String())
+}
+
+// Container implements the interface ByValue
+type ValueSliceContainer struct {
+ ASTElements []AST
+ NotASTElements []int
+ ASTImplementationElements []*Leaf
+}
+
+func (r ValueSliceContainer) String() string {
+ return fmt.Sprintf("ValueSliceContainer{%s, %s, %s}", sliceStringAST(r.ASTElements...), "r.NotASTType", sliceStringLeaf(r.ASTImplementationElements...))
+}
+
+// We need to support these types - a slice of AST elements can implement the interface
+type InterfaceSlice []AST
+
+func (r InterfaceSlice) String() string {
+ var elements []string
+ for _, el := range r {
+ elements = append(elements, el.String())
+ }
+
+ return "[" + strings.Join(elements, ", ") + "]"
+}
+
+// We need to support these types - a slice of AST elements can implement the interface
+type Bytes []byte
+
+func (r Bytes) String() string {
+ return string(r)
+}
+
+type LeafSlice []*Leaf
+
+func (r LeafSlice) String() string {
+ var elements []string
+ for _, el := range r {
+ elements = append(elements, el.String())
+ }
+ return strings.Join(elements, ", ")
+}
+
+type BasicType int
+
+func (r BasicType) String() string {
+ return fmt.Sprintf("int(%d)", r)
+}
+
+const (
+ // these consts are here to try to trick the generator
+ thisIsNotAType BasicType = 1
+ thisIsNotAType2 BasicType = 2
+)
+
+// We want to support all types that are used as field types, which can include interfaces.
+// Example would be sqlparser.Expr that implements sqlparser.SQLNode
+type SubIface interface {
+ AST
+ iface()
+}
+
+type SubImpl struct {
+ inner SubIface
+ field *bool
+}
+
+func (r *SubImpl) String() string {
+ return "SubImpl"
+}
+func (r *SubImpl) iface() {}
+
+type InterfaceContainer struct {
+ v interface{}
+}
+
+func (r InterfaceContainer) String() string {
+ return fmt.Sprintf("%v", r.v)
+}
+
+type NoCloneType struct {
+ v int
+}
+
+func (r *NoCloneType) String() string {
+ return fmt.Sprintf("NoClone(%d)", r.v)
+}
+
+type Visit func(node AST) (bool, error)
+
+type application struct {
+ pre, post ApplyFunc
+ cur Cursor
+}
diff --git a/go/tools/asthelpergen/main/main.go b/go/tools/asthelpergen/main/main.go
new file mode 100644
index 00000000000..9225aa7615d
--- /dev/null
+++ b/go/tools/asthelpergen/main/main.go
@@ -0,0 +1,39 @@
+package main
+
+import (
+ "flag"
+ "log"
+
+ . "vitess.io/vitess/go/tools/asthelpergen"
+)
+
+func main() {
+ var patterns TypePaths
+ var generate, except string
+ var verify bool
+
+ flag.Var(&patterns, "in", "Go packages to load the generator")
+ flag.StringVar(&generate, "iface", "", "Root interface generate rewriter for")
+ flag.BoolVar(&verify, "verify", false, "ensure that the generated files are correct")
+ flag.StringVar(&except, "except", "", "don't deep clone these types")
+ flag.Parse()
+
+ result, err := GenerateASTHelpers(patterns, generate, except)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ if verify {
+ for _, err := range VerifyFilesOnDisk(result) {
+ log.Fatal(err)
+ }
+ log.Printf("%d files OK", len(result))
+ } else {
+ for fullPath, file := range result {
+ if err := file.Save(fullPath); err != nil {
+ log.Fatalf("failed to save file to '%s': %v", fullPath, err)
+ }
+ log.Printf("saved '%s'", fullPath)
+ }
+ }
+}
diff --git a/go/tools/asthelpergen/rewrite_gen.go b/go/tools/asthelpergen/rewrite_gen.go
new file mode 100644
index 00000000000..1a7d2411d7e
--- /dev/null
+++ b/go/tools/asthelpergen/rewrite_gen.go
@@ -0,0 +1,387 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package asthelpergen
+
+import (
+ "fmt"
+ "go/types"
+
+ "github.com/dave/jennifer/jen"
+)
+
+const (
+ rewriteName = "rewrite"
+)
+
+type rewriteGen struct {
+ ifaceName string
+ file *jen.File
+}
+
+var _ generator = (*rewriteGen)(nil)
+
+func newRewriterGen(pkgname string, ifaceName string) *rewriteGen {
+ file := jen.NewFile(pkgname)
+ file.HeaderComment(licenseFileHeader)
+ file.HeaderComment("Code generated by ASTHelperGen. DO NOT EDIT.")
+
+ return &rewriteGen{
+ ifaceName: ifaceName,
+ file: file,
+ }
+}
+
+func (r *rewriteGen) genFile() (string, *jen.File) {
+ return "ast_rewrite.go", r.file
+}
+
+func (r *rewriteGen) interfaceMethod(t types.Type, iface *types.Interface, spi generatorSPI) error {
+ if !shouldAdd(t, spi.iface()) {
+ return nil
+ }
+ /*
+ func VisitAST(in AST) (bool, error) {
+ if in == nil {
+ return false, nil
+ }
+ switch a := inA.(type) {
+ case *SubImpl:
+ return VisitSubImpl(a, b)
+ default:
+ return false, nil
+ }
+ }
+ */
+ stmts := []jen.Code{
+ jen.If(jen.Id("node == nil").Block(returnTrue())),
+ }
+
+ var cases []jen.Code
+ _ = spi.findImplementations(iface, func(t types.Type) error {
+ if _, ok := t.Underlying().(*types.Interface); ok {
+ return nil
+ }
+ typeString := types.TypeString(t, noQualifier)
+ funcName := rewriteName + printableTypeName(t)
+ spi.addType(t)
+ caseBlock := jen.Case(jen.Id(typeString)).Block(
+ jen.Return(jen.Id("a").Dot(funcName).Call(jen.Id("parent, node, replacer"))),
+ )
+ cases = append(cases, caseBlock)
+ return nil
+ })
+
+ cases = append(cases,
+ jen.Default().Block(
+ jen.Comment("this should never happen"),
+ returnTrue(),
+ ))
+
+ stmts = append(stmts, jen.Switch(jen.Id("node := node.(type)").Block(
+ cases...,
+ )))
+
+ r.rewriteFunc(t, stmts)
+ return nil
+}
+
+func (r *rewriteGen) structMethod(t types.Type, strct *types.Struct, spi generatorSPI) error {
+ if !shouldAdd(t, spi.iface()) {
+ return nil
+ }
+ fields := r.rewriteAllStructFields(t, strct, spi, true)
+
+ stmts := []jen.Code{executePre()}
+ stmts = append(stmts, fields...)
+ stmts = append(stmts, executePost(len(fields) > 0))
+ stmts = append(stmts, returnTrue())
+
+ r.rewriteFunc(t, stmts)
+
+ return nil
+}
+
+func (r *rewriteGen) ptrToStructMethod(t types.Type, strct *types.Struct, spi generatorSPI) error {
+ if !shouldAdd(t, spi.iface()) {
+ return nil
+ }
+
+ /*
+ if node == nil { return nil }
+ */
+ stmts := []jen.Code{jen.If(jen.Id("node == nil").Block(returnTrue()))}
+
+ /*
+ if !pre(&cur) {
+ return nil
+ }
+ */
+ stmts = append(stmts, executePre())
+ fields := r.rewriteAllStructFields(t, strct, spi, false)
+ stmts = append(stmts, fields...)
+ stmts = append(stmts, executePost(len(fields) > 0))
+ stmts = append(stmts, returnTrue())
+
+ r.rewriteFunc(t, stmts)
+
+ return nil
+}
+
+func (r *rewriteGen) ptrToBasicMethod(t types.Type, _ *types.Basic, spi generatorSPI) error {
+ if !shouldAdd(t, spi.iface()) {
+ return nil
+ }
+
+ /*
+ */
+
+ stmts := []jen.Code{
+ jen.Comment("ptrToBasicMethod"),
+ }
+ r.rewriteFunc(t, stmts)
+
+ return nil
+}
+
+func (r *rewriteGen) sliceMethod(t types.Type, slice *types.Slice, spi generatorSPI) error {
+ if !shouldAdd(t, spi.iface()) {
+ return nil
+ }
+
+ /*
+ if node == nil {
+ return nil
+ }
+ cur := Cursor{
+ node: node,
+ parent: parent,
+ replacer: replacer,
+ }
+ if !pre(&cur) {
+ return nil
+ }
+ */
+ stmts := []jen.Code{
+ jen.If(jen.Id("node == nil").Block(returnTrue())),
+ }
+ stmts = append(stmts, executePre())
+
+ haveChildren := false
+ if shouldAdd(slice.Elem(), spi.iface()) {
+ /*
+ for i, el := range node {
+ if err := rewriteRefOfLeaf(node, el, func(newNode, parent AST) {
+ parent.(LeafSlice)[i] = newNode.(*Leaf)
+ }, pre, post); err != nil {
+ return err
+ }
+ }
+ */
+ haveChildren = true
+ stmts = append(stmts,
+ jen.For(jen.Id("x, el").Op(":=").Id("range node")).
+ Block(r.rewriteChildSlice(t, slice.Elem(), "notUsed", jen.Id("el"), jen.Index(jen.Id("idx")), false)))
+ }
+
+ stmts = append(stmts, executePost(haveChildren))
+ stmts = append(stmts, returnTrue())
+
+ r.rewriteFunc(t, stmts)
+ return nil
+}
+
+func setupCursor() []jen.Code {
+ return []jen.Code{
+ jen.Id("a.cur.replacer = replacer"),
+ jen.Id("a.cur.parent = parent"),
+ jen.Id("a.cur.node = node"),
+ }
+}
+func executePre() jen.Code {
+ curStmts := setupCursor()
+ curStmts = append(curStmts, jen.If(jen.Id("!a.pre(&a.cur)")).Block(returnTrue()))
+ return jen.If(jen.Id("a.pre!= nil").Block(curStmts...))
+}
+
+func executePost(seenChildren bool) jen.Code {
+ var curStmts []jen.Code
+ if seenChildren {
+ // if we have visited children, we have to write to the cursor fields
+ curStmts = setupCursor()
+ } else {
+ curStmts = append(curStmts,
+ jen.If(jen.Id("a.pre == nil")).Block(setupCursor()...))
+ }
+
+ curStmts = append(curStmts, jen.If(jen.Id("!a.post(&a.cur)")).Block(returnFalse()))
+
+ return jen.If(jen.Id("a.post != nil")).Block(curStmts...)
+}
+
+func (r *rewriteGen) basicMethod(t types.Type, _ *types.Basic, spi generatorSPI) error {
+ if !shouldAdd(t, spi.iface()) {
+ return nil
+ }
+
+ stmts := []jen.Code{executePre(), executePost(false), returnTrue()}
+ r.rewriteFunc(t, stmts)
+ return nil
+}
+
+func (r *rewriteGen) rewriteFunc(t types.Type, stmts []jen.Code) {
+
+ /*
+ func (a *application) rewriteNodeType(parent AST, node NodeType, replacer replacerFunc) {
+ */
+
+ typeString := types.TypeString(t, noQualifier)
+ funcName := fmt.Sprintf("%s%s", rewriteName, printableTypeName(t))
+ code := jen.Func().Params(
+ jen.Id("a").Op("*").Id("application"),
+ ).Id(funcName).Params(
+ jen.Id(fmt.Sprintf("parent %s, node %s, replacer replacerFunc", r.ifaceName, typeString)),
+ ).Bool().Block(stmts...)
+
+ r.file.Add(code)
+}
+
+func (r *rewriteGen) rewriteAllStructFields(t types.Type, strct *types.Struct, spi generatorSPI, fail bool) []jen.Code {
+ /*
+ if errF := rewriteAST(node, node.ASTType, func(newNode, parent AST) {
+ err = vterrors.New(vtrpcpb.Code_INTERNAL, "[BUG] tried to replace '%s' on '%s'")
+ }, pre, post); errF != nil {
+ return errF
+ }
+
+ */
+ var output []jen.Code
+ for i := 0; i < strct.NumFields(); i++ {
+ field := strct.Field(i)
+ if types.Implements(field.Type(), spi.iface()) {
+ spi.addType(field.Type())
+ output = append(output, r.rewriteChild(t, field.Type(), field.Name(), jen.Id("node").Dot(field.Name()), jen.Dot(field.Name()), fail))
+ continue
+ }
+ slice, isSlice := field.Type().(*types.Slice)
+ if isSlice && types.Implements(slice.Elem(), spi.iface()) {
+ spi.addType(slice.Elem())
+ id := jen.Id("x")
+ if fail {
+ id = jen.Id("_")
+ }
+ output = append(output,
+ jen.For(jen.List(id, jen.Id("el")).Op(":=").Id("range node."+field.Name())).
+ Block(r.rewriteChildSlice(t, slice.Elem(), field.Name(), jen.Id("el"), jen.Dot(field.Name()).Index(jen.Id("idx")), fail)))
+ }
+ }
+ return output
+}
+
+func failReplacer(t types.Type, f string) *jen.Statement {
+ typeString := types.TypeString(t, noQualifier)
+ return jen.Panic(jen.Lit(fmt.Sprintf("[BUG] tried to replace '%s' on '%s'", f, typeString)))
+}
+
+func (r *rewriteGen) rewriteChild(t, field types.Type, fieldName string, param jen.Code, replace jen.Code, fail bool) jen.Code {
+ /*
+ if errF := rewriteAST(node, node.ASTType, func(newNode, parent AST) {
+ parent.(*RefContainer).ASTType = newNode.(AST)
+ }, pre, post); errF != nil {
+ return errF
+ }
+
+ if errF := rewriteAST(node, el, func(newNode, parent AST) {
+ parent.(*RefSliceContainer).ASTElements[i] = newNode.(AST)
+ }, pre, post); errF != nil {
+ return errF
+ }
+
+ */
+ funcName := rewriteName + printableTypeName(field)
+ var replaceOrFail *jen.Statement
+ if fail {
+ replaceOrFail = failReplacer(t, fieldName)
+ } else {
+ replaceOrFail = jen.Id("parent").
+ Assert(jen.Id(types.TypeString(t, noQualifier))).
+ Add(replace).
+ Op("=").
+ Id("newNode").Assert(jen.Id(types.TypeString(field, noQualifier)))
+
+ }
+ funcBlock := jen.Func().Call(jen.Id("newNode, parent").Id(r.ifaceName)).
+ Block(replaceOrFail)
+
+ rewriteField := jen.If(
+ jen.Op("!").Id("a").Dot(funcName).Call(
+ jen.Id("node"),
+ param,
+ funcBlock).Block(returnFalse()))
+
+ return rewriteField
+}
+
+func (r *rewriteGen) rewriteChildSlice(t, field types.Type, fieldName string, param jen.Code, replace jen.Code, fail bool) jen.Code {
+ /*
+ if errF := a.rewriteAST(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent AST) {
+ parent.(InterfaceSlice)[idx] = newNode.(AST)
+ }
+ }(i)); errF != nil {
+ return errF
+ }
+
+ if errF := a.rewriteAST(node, el, func(newNode, parent AST) {
+ return errr...
+ }); errF != nil {
+ return errF
+ }
+
+ */
+
+ funcName := rewriteName + printableTypeName(field)
+ var funcBlock jen.Code
+ replacerFuncDef := jen.Func().Call(jen.Id("newNode, parent").Id(r.ifaceName))
+ if fail {
+ funcBlock = replacerFuncDef.Block(failReplacer(t, fieldName))
+ } else {
+ funcBlock = jen.Func().Call(jen.Id("idx int")).Id("replacerFunc").
+ Block(jen.Return(replacerFuncDef.Block(
+ jen.Id("parent").Assert(jen.Id(types.TypeString(t, noQualifier))).Add(replace).Op("=").Id("newNode").Assert(jen.Id(types.TypeString(field, noQualifier)))),
+ )).Call(jen.Id("x"))
+ }
+
+ rewriteField := jen.If(
+ jen.Op("!").Id("a").Dot(funcName).Call(
+ jen.Id("node"),
+ param,
+ funcBlock).Block(returnFalse()))
+
+ return rewriteField
+}
+
+var noQualifier = func(p *types.Package) string {
+ return ""
+}
+
+func returnTrue() jen.Code {
+ return jen.Return(jen.True())
+}
+
+func returnFalse() jen.Code {
+ return jen.Return(jen.False())
+}
diff --git a/go/tools/asthelpergen/visit_gen.go b/go/tools/asthelpergen/visit_gen.go
new file mode 100644
index 00000000000..51d8651f090
--- /dev/null
+++ b/go/tools/asthelpergen/visit_gen.go
@@ -0,0 +1,263 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package asthelpergen
+
+import (
+ "go/types"
+
+ "github.com/dave/jennifer/jen"
+)
+
+const visitName = "Visit"
+
+type visitGen struct {
+ file *jen.File
+}
+
+var _ generator = (*visitGen)(nil)
+
+func newVisitGen(pkgname string) *visitGen {
+ file := jen.NewFile(pkgname)
+ file.HeaderComment(licenseFileHeader)
+ file.HeaderComment("Code generated by ASTHelperGen. DO NOT EDIT.")
+
+ return &visitGen{
+ file: file,
+ }
+}
+
+func (v *visitGen) genFile() (string, *jen.File) {
+ return "ast_visit.go", v.file
+}
+
+func shouldAdd(t types.Type, i *types.Interface) bool {
+ return types.Implements(t, i)
+}
+
+func (v *visitGen) interfaceMethod(t types.Type, iface *types.Interface, spi generatorSPI) error {
+ if !shouldAdd(t, spi.iface()) {
+ return nil
+ }
+ /*
+ func VisitAST(in AST) (bool, error) {
+ if in == nil {
+ return false, nil
+ }
+ switch a := inA.(type) {
+ case *SubImpl:
+ return VisitSubImpl(a, b)
+ default:
+ return false, nil
+ }
+ }
+ */
+ stmts := []jen.Code{
+ jen.If(jen.Id("in == nil").Block(returnNil())),
+ }
+
+ var cases []jen.Code
+ _ = spi.findImplementations(iface, func(t types.Type) error {
+ if _, ok := t.Underlying().(*types.Interface); ok {
+ return nil
+ }
+ typeString := types.TypeString(t, noQualifier)
+ funcName := visitName + printableTypeName(t)
+ spi.addType(t)
+ caseBlock := jen.Case(jen.Id(typeString)).Block(
+ jen.Return(jen.Id(funcName).Call(jen.Id("in"), jen.Id("f"))),
+ )
+ cases = append(cases, caseBlock)
+ return nil
+ })
+
+ cases = append(cases,
+ jen.Default().Block(
+ jen.Comment("this should never happen"),
+ returnNil(),
+ ))
+
+ stmts = append(stmts, jen.Switch(jen.Id("in := in.(type)").Block(
+ cases...,
+ )))
+
+ v.visitFunc(t, stmts)
+ return nil
+}
+
+func returnNil() jen.Code {
+ return jen.Return(jen.Nil())
+}
+
+func (v *visitGen) structMethod(t types.Type, strct *types.Struct, spi generatorSPI) error {
+ if !shouldAdd(t, spi.iface()) {
+ return nil
+ }
+
+ /*
+ func VisitRefOfRefContainer(in *RefContainer, f func(node AST) (kontinue bool, err error)) (bool, error) {
+ if cont, err := f(in); err != nil || !cont {
+ return false, err
+ }
+ if k, err := VisitRefOfLeaf(in.ASTImplementationType, f); err != nil || !k {
+ return false, err
+ }
+ if k, err := VisitAST(in.ASTType, f); err != nil || !k {
+ return false, err
+ }
+ return true, nil
+ }
+ */
+
+ stmts := visitAllStructFields(strct, spi)
+ v.visitFunc(t, stmts)
+
+ return nil
+}
+
+func (v *visitGen) ptrToStructMethod(t types.Type, strct *types.Struct, spi generatorSPI) error {
+ if !shouldAdd(t, spi.iface()) {
+ return nil
+ }
+
+ /*
+ func VisitRefOfRefContainer(in *RefContainer, f func(node AST) (kontinue bool, err error)) (bool, error) {
+ if in == nil {
+ return true, nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return false, err
+ }
+ if k, err := VisitRefOfLeaf(in.ASTImplementationType, f); err != nil || !k {
+ return false, err
+ }
+ if k, err := VisitAST(in.ASTType, f); err != nil || !k {
+ return false, err
+ }
+ return true, nil
+ }
+ */
+
+ stmts := []jen.Code{
+ jen.If(jen.Id("in == nil").Block(returnNil())),
+ }
+ stmts = append(stmts, visitAllStructFields(strct, spi)...)
+ v.visitFunc(t, stmts)
+
+ return nil
+}
+
+func (v *visitGen) ptrToBasicMethod(t types.Type, _ *types.Basic, spi generatorSPI) error {
+ if !shouldAdd(t, spi.iface()) {
+ return nil
+ }
+
+ stmts := []jen.Code{
+ jen.Comment("ptrToBasicMethod"),
+ }
+
+ v.visitFunc(t, stmts)
+
+ return nil
+}
+
+func (v *visitGen) sliceMethod(t types.Type, slice *types.Slice, spi generatorSPI) error {
+ if !shouldAdd(t, spi.iface()) {
+ return nil
+ }
+
+ if !shouldAdd(slice.Elem(), spi.iface()) {
+ return v.visitNoChildren(t, spi)
+ }
+
+ stmts := []jen.Code{
+ jen.If(jen.Id("in == nil").Block(returnNil())),
+ visitIn(),
+ jen.For(jen.Id("_, el := range in")).Block(
+ visitChild(slice.Elem(), jen.Id("el")),
+ ),
+ returnNil(),
+ }
+
+ v.visitFunc(t, stmts)
+
+ return nil
+}
+
+func (v *visitGen) basicMethod(t types.Type, basic *types.Basic, spi generatorSPI) error {
+ if !shouldAdd(t, spi.iface()) {
+ return nil
+ }
+
+ return v.visitNoChildren(t, spi)
+}
+
+func (v *visitGen) visitNoChildren(t types.Type, spi generatorSPI) error {
+ stmts := []jen.Code{
+ jen.Id("_, err := f(in)"),
+ jen.Return(jen.Err()),
+ }
+
+ v.visitFunc(t, stmts)
+
+ return nil
+}
+
+func visitAllStructFields(strct *types.Struct, spi generatorSPI) []jen.Code {
+ output := []jen.Code{
+ visitIn(),
+ }
+ for i := 0; i < strct.NumFields(); i++ {
+ field := strct.Field(i)
+ if types.Implements(field.Type(), spi.iface()) {
+ spi.addType(field.Type())
+ visitField := visitChild(field.Type(), jen.Id("in").Dot(field.Name()))
+ output = append(output, visitField)
+ continue
+ }
+ slice, isSlice := field.Type().(*types.Slice)
+ if isSlice && types.Implements(slice.Elem(), spi.iface()) {
+ spi.addType(slice.Elem())
+ output = append(output, jen.For(jen.Id("_, el := range in."+field.Name())).Block(
+ visitChild(slice.Elem(), jen.Id("el")),
+ ))
+ }
+ }
+ output = append(output, returnNil())
+ return output
+}
+
+func visitChild(t types.Type, id jen.Code) *jen.Statement {
+ funcName := visitName + printableTypeName(t)
+ visitField := jen.If(
+ jen.Id("err := ").Id(funcName).Call(id, jen.Id("f")),
+ jen.Id("err != nil "),
+ ).Block(jen.Return(jen.Err()))
+ return visitField
+}
+
+func visitIn() *jen.Statement {
+ return jen.If(
+ jen.Id("cont, err := ").Id("f").Call(jen.Id("in")),
+ jen.Id("err != nil || !cont"),
+ ).Block(jen.Return(jen.Err()))
+}
+
+func (v *visitGen) visitFunc(t types.Type, stmts []jen.Code) {
+ typeString := types.TypeString(t, noQualifier)
+ funcName := visitName + printableTypeName(t)
+ v.file.Add(jen.Func().Id(funcName).Call(jen.Id("in").Id(typeString), jen.Id("f Visit")).Error().Block(stmts...))
+}
diff --git a/go/tools/sizegen/integration/cached_size.go b/go/tools/sizegen/integration/cached_size.go
new file mode 100644
index 00000000000..7ceba285138
--- /dev/null
+++ b/go/tools/sizegen/integration/cached_size.go
@@ -0,0 +1,225 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+// Code generated by Sizegen. DO NOT EDIT.
+
+package integration
+
+import (
+ "math"
+ "reflect"
+ "unsafe"
+)
+
+type cachedObject interface {
+ CachedSize(alloc bool) int64
+}
+
+func (cached *A) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(16)
+ }
+ return size
+}
+func (cached *Bimpl) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(8)
+ }
+ return size
+}
+func (cached *C) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(16)
+ }
+ // field field1 vitess.io/vitess/go/tools/sizegen/integration.B
+ if cc, ok := cached.field1.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *D) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(8)
+ }
+ // field field1 *vitess.io/vitess/go/tools/sizegen/integration.Bimpl
+ if cached.field1 != nil {
+ size += int64(8)
+ }
+ return size
+}
+
+//go:nocheckptr
+func (cached *Map1) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(8)
+ }
+ // field field1 map[uint8]uint8
+ if cached.field1 != nil {
+ size += int64(48)
+ hmap := reflect.ValueOf(cached.field1)
+ numBuckets := int(math.Pow(2, float64((*(*uint8)(unsafe.Pointer(hmap.Pointer() + uintptr(9)))))))
+ numOldBuckets := (*(*uint16)(unsafe.Pointer(hmap.Pointer() + uintptr(10))))
+ size += int64(numOldBuckets * 32)
+ if len(cached.field1) > 0 || numBuckets > 1 {
+ size += int64(numBuckets * 32)
+ }
+ }
+ return size
+}
+
+//go:nocheckptr
+func (cached *Map2) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(8)
+ }
+ // field field1 map[uint64]vitess.io/vitess/go/tools/sizegen/integration.A
+ if cached.field1 != nil {
+ size += int64(48)
+ hmap := reflect.ValueOf(cached.field1)
+ numBuckets := int(math.Pow(2, float64((*(*uint8)(unsafe.Pointer(hmap.Pointer() + uintptr(9)))))))
+ numOldBuckets := (*(*uint16)(unsafe.Pointer(hmap.Pointer() + uintptr(10))))
+ size += int64(numOldBuckets * 208)
+ if len(cached.field1) > 0 || numBuckets > 1 {
+ size += int64(numBuckets * 208)
+ }
+ }
+ return size
+}
+
+//go:nocheckptr
+func (cached *Map3) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(8)
+ }
+ // field field1 map[uint64]vitess.io/vitess/go/tools/sizegen/integration.B
+ if cached.field1 != nil {
+ size += int64(48)
+ hmap := reflect.ValueOf(cached.field1)
+ numBuckets := int(math.Pow(2, float64((*(*uint8)(unsafe.Pointer(hmap.Pointer() + uintptr(9)))))))
+ numOldBuckets := (*(*uint16)(unsafe.Pointer(hmap.Pointer() + uintptr(10))))
+ size += int64(numOldBuckets * 208)
+ if len(cached.field1) > 0 || numBuckets > 1 {
+ size += int64(numBuckets * 208)
+ }
+ for _, v := range cached.field1 {
+ if cc, ok := v.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ }
+ }
+ return size
+}
+func (cached *Padded) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(24)
+ }
+ return size
+}
+func (cached *Slice1) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(24)
+ }
+ // field field1 []vitess.io/vitess/go/tools/sizegen/integration.A
+ {
+ size += int64(cap(cached.field1)) * int64(16)
+ }
+ return size
+}
+func (cached *Slice2) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(24)
+ }
+ // field field1 []vitess.io/vitess/go/tools/sizegen/integration.B
+ {
+ size += int64(cap(cached.field1)) * int64(16)
+ for _, elem := range cached.field1 {
+ if cc, ok := elem.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ }
+ }
+ return size
+}
+func (cached *Slice3) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(24)
+ }
+ // field field1 []*vitess.io/vitess/go/tools/sizegen/integration.Bimpl
+ {
+ size += int64(cap(cached.field1)) * int64(8)
+ for _, elem := range cached.field1 {
+ if elem != nil {
+ size += int64(8)
+ }
+ }
+ }
+ return size
+}
+func (cached *String1) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(24)
+ }
+ // field field1 string
+ size += int64(len(cached.field1))
+ return size
+}
diff --git a/go/tools/sizegen/integration/integration_test.go b/go/tools/sizegen/integration/integration_test.go
new file mode 100644
index 00000000000..d2c22a2cbcd
--- /dev/null
+++ b/go/tools/sizegen/integration/integration_test.go
@@ -0,0 +1,85 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package integration
+
+import (
+ "fmt"
+ "testing"
+)
+
+func TestTypeSizes(t *testing.T) {
+ const PtrSize = 8
+ const SliceHeaderSize = 3 * PtrSize
+ const FatPointerSize = 2 * PtrSize
+ const BucketHeaderSize = 8
+ const BucketSize = 8
+ const HashMapHeaderSize = 48
+
+ cases := []struct {
+ obj cachedObject
+ size int64
+ }{
+ {&A{}, 16},
+ {&C{}, 16},
+ {&C{field1: &Bimpl{}}, 24},
+ {&D{}, 8},
+ {&D{field1: &Bimpl{}}, 16},
+ {&Padded{}, 24},
+
+ {&Slice1{}, 24},
+ {&Slice1{field1: []A{}}, SliceHeaderSize},
+ {&Slice1{field1: []A{{}}}, SliceHeaderSize + 16},
+ {&Slice1{field1: []A{{}, {}, {}, {}}}, SliceHeaderSize + 16*4},
+
+ {&Slice2{}, SliceHeaderSize},
+ {&Slice2{field1: []B{}}, SliceHeaderSize},
+ {&Slice2{field1: []B{&Bimpl{}}}, SliceHeaderSize + FatPointerSize*1 + 8*1},
+ {&Slice2{field1: []B{&Bimpl{}, &Bimpl{}, &Bimpl{}, &Bimpl{}}}, SliceHeaderSize + FatPointerSize*4 + 8*4},
+
+ {&Slice3{}, SliceHeaderSize},
+ {&Slice3{field1: []*Bimpl{}}, SliceHeaderSize},
+ {&Slice3{field1: []*Bimpl{nil}}, SliceHeaderSize + PtrSize*1 + 0},
+ {&Slice3{field1: []*Bimpl{nil, nil, nil, nil}}, SliceHeaderSize + PtrSize*4 + 0},
+ {&Slice3{field1: []*Bimpl{{}}}, SliceHeaderSize + PtrSize*1 + 8*1},
+ {&Slice3{field1: []*Bimpl{{}, {}, {}, {}}}, SliceHeaderSize + PtrSize*4 + 8*4},
+
+ {&Map1{field1: nil}, PtrSize},
+ {&Map1{field1: map[uint8]uint8{}}, PtrSize + HashMapHeaderSize},
+ {&Map1{field1: map[uint8]uint8{0: 0}}, PtrSize + HashMapHeaderSize + BucketHeaderSize + 1*BucketSize + 1*BucketSize + PtrSize},
+
+ {&Map2{field1: nil}, PtrSize},
+ {&Map2{field1: map[uint64]A{}}, PtrSize + HashMapHeaderSize},
+ {&Map2{field1: map[uint64]A{0: {}}}, PtrSize + HashMapHeaderSize + BucketHeaderSize + 8*BucketSize + 16*BucketSize + PtrSize},
+
+ {&Map3{field1: nil}, PtrSize},
+ {&Map3{field1: map[uint64]B{}}, PtrSize + HashMapHeaderSize},
+ {&Map3{field1: map[uint64]B{0: &Bimpl{}}}, PtrSize + HashMapHeaderSize + BucketHeaderSize + 8*BucketSize + FatPointerSize*BucketSize + PtrSize + 8},
+ {&Map3{field1: map[uint64]B{0: nil}}, PtrSize + HashMapHeaderSize + BucketHeaderSize + 8*BucketSize + FatPointerSize*BucketSize + PtrSize},
+
+ {&String1{}, PtrSize*2 + 8},
+ {&String1{field1: "1234"}, PtrSize*2 + 8 + 4},
+ }
+
+ for _, tt := range cases {
+ t.Run(fmt.Sprintf("sizeof(%T)", tt.obj), func(t *testing.T) {
+ size := tt.obj.CachedSize(true)
+ if size != tt.size {
+ t.Errorf("expected %T to be %d bytes, got %d", tt.obj, tt.size, size)
+ }
+ })
+ }
+}
diff --git a/go/tools/sizegen/integration/types.go b/go/tools/sizegen/integration/types.go
new file mode 100644
index 00000000000..c05b08cfd07
--- /dev/null
+++ b/go/tools/sizegen/integration/types.go
@@ -0,0 +1,76 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+//nolint
+package integration
+
+type A struct {
+ field1 uint64
+ field2 uint64
+}
+
+type B interface {
+ iface()
+}
+
+type Bimpl struct {
+ field1 uint64
+}
+
+func (b *Bimpl) iface() {}
+
+type C struct {
+ field1 B
+}
+
+type D struct {
+ field1 *Bimpl
+}
+
+type Padded struct {
+ field1 uint64
+ field2 uint8
+ field3 uint64
+}
+
+type Slice1 struct {
+ field1 []A
+}
+
+type Slice2 struct {
+ field1 []B
+}
+
+type Slice3 struct {
+ field1 []*Bimpl
+}
+
+type Map1 struct {
+ field1 map[uint8]uint8
+}
+
+type Map2 struct {
+ field1 map[uint64]A
+}
+
+type Map3 struct {
+ field1 map[uint64]B
+}
+
+type String1 struct {
+ field1 string
+ field2 uint64
+}
diff --git a/go/tools/sizegen/sizegen.go b/go/tools/sizegen/sizegen.go
new file mode 100644
index 00000000000..c108f44fa39
--- /dev/null
+++ b/go/tools/sizegen/sizegen.go
@@ -0,0 +1,546 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package main
+
+import (
+ "bytes"
+ "flag"
+ "fmt"
+ "go/types"
+ "io/ioutil"
+ "log"
+ "path"
+ "sort"
+ "strings"
+
+ "github.com/dave/jennifer/jen"
+ "golang.org/x/tools/go/packages"
+)
+
+const licenseFileHeader = `Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.`
+
+type sizegen struct {
+ DebugTypes bool
+ mod *packages.Module
+ sizes types.Sizes
+ codegen map[string]*codeFile
+ known map[*types.Named]*typeState
+}
+
+type codeFlag uint32
+
+const (
+ codeWithInterface = 1 << 0
+ codeWithUnsafe = 1 << 1
+)
+
+type codeImpl struct {
+ name string
+ flags codeFlag
+ code jen.Code
+}
+
+type codeFile struct {
+ pkg string
+ impls []codeImpl
+}
+
+type typeState struct {
+ generated bool
+ local bool
+ pod bool // struct with only primitives
+}
+
+func newSizegen(mod *packages.Module, sizes types.Sizes) *sizegen {
+ return &sizegen{
+ DebugTypes: true,
+ mod: mod,
+ sizes: sizes,
+ known: make(map[*types.Named]*typeState),
+ codegen: make(map[string]*codeFile),
+ }
+}
+
+func isPod(tt types.Type) bool {
+ switch tt := tt.(type) {
+ case *types.Struct:
+ for i := 0; i < tt.NumFields(); i++ {
+ if !isPod(tt.Field(i).Type()) {
+ return false
+ }
+ }
+ return true
+
+ case *types.Basic:
+ switch tt.Kind() {
+ case types.String, types.UnsafePointer:
+ return false
+ }
+ return true
+
+ default:
+ return false
+ }
+}
+
+func (sizegen *sizegen) getKnownType(named *types.Named) *typeState {
+ ts := sizegen.known[named]
+ if ts == nil {
+ local := strings.HasPrefix(named.Obj().Pkg().Path(), sizegen.mod.Path)
+ ts = &typeState{
+ local: local,
+ pod: isPod(named.Underlying()),
+ }
+ sizegen.known[named] = ts
+ }
+ return ts
+}
+
+func (sizegen *sizegen) generateType(pkg *types.Package, file *codeFile, named *types.Named) {
+ ts := sizegen.getKnownType(named)
+ if ts.generated {
+ return
+ }
+ ts.generated = true
+
+ switch tt := named.Underlying().(type) {
+ case *types.Struct:
+ if impl, flag := sizegen.sizeImplForStruct(named.Obj(), tt); impl != nil {
+ file.impls = append(file.impls, codeImpl{
+ code: impl,
+ name: named.String(),
+ flags: flag,
+ })
+ }
+ case *types.Interface:
+ findImplementations(pkg.Scope(), tt, func(tt types.Type) {
+ if _, isStruct := tt.Underlying().(*types.Struct); isStruct {
+ sizegen.generateType(pkg, file, tt.(*types.Named))
+ }
+ })
+ default:
+ // no-op
+ }
+}
+
+func (sizegen *sizegen) generateKnownType(named *types.Named) {
+ pkgInfo := named.Obj().Pkg()
+ file := sizegen.codegen[pkgInfo.Path()]
+ if file == nil {
+ file = &codeFile{pkg: pkgInfo.Name()}
+ sizegen.codegen[pkgInfo.Path()] = file
+ }
+
+ sizegen.generateType(pkgInfo, file, named)
+}
+
+func findImplementations(scope *types.Scope, iff *types.Interface, impl func(types.Type)) {
+ for _, name := range scope.Names() {
+ obj := scope.Lookup(name)
+ baseType := obj.Type()
+ if types.Implements(baseType, iff) || types.Implements(types.NewPointer(baseType), iff) {
+ impl(baseType)
+ }
+ }
+}
+
+func (sizegen *sizegen) finalize() map[string]*jen.File {
+ var complete bool
+
+ for !complete {
+ complete = true
+ for tt, ts := range sizegen.known {
+ isComplex := !ts.pod
+ notYetGenerated := !ts.generated
+ if ts.local && isComplex && notYetGenerated {
+ sizegen.generateKnownType(tt)
+ complete = false
+ }
+ }
+ }
+
+ outputFiles := make(map[string]*jen.File)
+
+ for pkg, file := range sizegen.codegen {
+ if len(file.impls) == 0 {
+ continue
+ }
+ if !strings.HasPrefix(pkg, sizegen.mod.Path) {
+ log.Printf("failed to generate code for foreign package '%s'", pkg)
+ log.Printf("DEBUG:\n%#v", file)
+ continue
+ }
+
+ sort.Slice(file.impls, func(i, j int) bool {
+ return strings.Compare(file.impls[i].name, file.impls[j].name) < 0
+ })
+
+ out := jen.NewFile(file.pkg)
+ out.HeaderComment(licenseFileHeader)
+ out.HeaderComment("Code generated by Sizegen. DO NOT EDIT.")
+
+ for _, impl := range file.impls {
+ if impl.flags&codeWithInterface != 0 {
+ out.Add(jen.Type().Id("cachedObject").InterfaceFunc(func(i *jen.Group) {
+ i.Id("CachedSize").Params(jen.Id("alloc").Id("bool")).Int64()
+ }))
+ break
+ }
+ }
+
+ for _, impl := range file.impls {
+ if impl.flags&codeWithUnsafe != 0 {
+ out.Commentf("//go:nocheckptr")
+ }
+ out.Add(impl.code)
+ }
+
+ fullPath := path.Join(sizegen.mod.Dir, strings.TrimPrefix(pkg, sizegen.mod.Path), "cached_size.go")
+ outputFiles[fullPath] = out
+ }
+
+ return outputFiles
+}
+
+func (sizegen *sizegen) sizeImplForStruct(name *types.TypeName, st *types.Struct) (jen.Code, codeFlag) {
+ if sizegen.sizes.Sizeof(st) == 0 {
+ return nil, 0
+ }
+
+ var stmt []jen.Code
+ var funcFlags codeFlag
+ for i := 0; i < st.NumFields(); i++ {
+ field := st.Field(i)
+ fieldType := field.Type()
+ fieldName := jen.Id("cached").Dot(field.Name())
+
+ fieldStmt, flag := sizegen.sizeStmtForType(fieldName, fieldType, false)
+ if fieldStmt != nil {
+ if sizegen.DebugTypes {
+ stmt = append(stmt, jen.Commentf("%s", field.String()))
+ }
+ stmt = append(stmt, fieldStmt)
+ }
+ funcFlags |= flag
+ }
+
+ f := jen.Func()
+ f.Params(jen.Id("cached").Op("*").Id(name.Name()))
+ f.Id("CachedSize").Params(jen.Id("alloc").Id("bool")).Int64()
+ f.BlockFunc(func(b *jen.Group) {
+ b.Add(jen.If(jen.Id("cached").Op("==").Nil()).Block(jen.Return(jen.Lit(int64(0)))))
+ b.Add(jen.Id("size").Op(":=").Lit(int64(0)))
+ b.Add(jen.If(jen.Id("alloc")).Block(
+ jen.Id("size").Op("+=").Lit(sizegen.sizes.Sizeof(st)),
+ ))
+ for _, s := range stmt {
+ b.Add(s)
+ }
+ b.Add(jen.Return(jen.Id("size")))
+ })
+ return f, funcFlags
+}
+
+func (sizegen *sizegen) sizeStmtForMap(fieldName *jen.Statement, m *types.Map) []jen.Code {
+ const bucketCnt = 8
+ const sizeofHmap = int64(6 * 8)
+
+ /*
+ type bmap struct {
+ // tophash generally contains the top byte of the hash value
+ // for each key in this bucket. If tophash[0] < minTopHash,
+ // tophash[0] is a bucket evacuation state instead.
+ tophash [bucketCnt]uint8
+ // Followed by bucketCnt keys and then bucketCnt elems.
+ // NOTE: packing all the keys together and then all the elems together makes the
+ // code a bit more complicated than alternating key/elem/key/elem/... but it allows
+ // us to eliminate padding which would be needed for, e.g., map[int64]int8.
+ // Followed by an overflow pointer.
+ }
+ */
+ sizeOfBucket := int(
+ bucketCnt + // tophash
+ bucketCnt*sizegen.sizes.Sizeof(m.Key()) +
+ bucketCnt*sizegen.sizes.Sizeof(m.Elem()) +
+ 8, // overflow pointer
+ )
+
+ return []jen.Code{
+ jen.Id("size").Op("+=").Lit(sizeofHmap),
+
+ jen.Id("hmap").Op(":=").Qual("reflect", "ValueOf").Call(fieldName),
+
+ jen.Id("numBuckets").Op(":=").Id("int").Call(
+ jen.Qual("math", "Pow").Call(jen.Lit(2), jen.Id("float64").Call(
+ jen.Parens(jen.Op("*").Parens(jen.Op("*").Id("uint8")).Call(
+ jen.Qual("unsafe", "Pointer").Call(jen.Id("hmap").Dot("Pointer").Call().
+ Op("+").Id("uintptr").Call(jen.Lit(9)))))))),
+
+ jen.Id("numOldBuckets").Op(":=").Parens(jen.Op("*").Parens(jen.Op("*").Id("uint16")).Call(
+ jen.Qual("unsafe", "Pointer").Call(
+ jen.Id("hmap").Dot("Pointer").Call().Op("+").Id("uintptr").Call(jen.Lit(10))))),
+
+ jen.Id("size").Op("+=").Id("int64").Call(jen.Id("numOldBuckets").Op("*").Lit(sizeOfBucket)),
+
+ jen.If(jen.Id("len").Call(fieldName).Op(">").Lit(0).Op("||").Id("numBuckets").Op(">").Lit(1)).Block(
+ jen.Id("size").Op("+=").Id("int64").Call(
+ jen.Id("numBuckets").Op("*").Lit(sizeOfBucket))),
+ }
+}
+
+func (sizegen *sizegen) sizeStmtForType(fieldName *jen.Statement, field types.Type, alloc bool) (jen.Code, codeFlag) {
+ if sizegen.sizes.Sizeof(field) == 0 {
+ return nil, 0
+ }
+
+ switch node := field.(type) {
+ case *types.Slice:
+ elemT := node.Elem()
+ elemSize := sizegen.sizes.Sizeof(elemT)
+
+ switch elemSize {
+ case 0:
+ return nil, 0
+
+ case 1:
+ return jen.Id("size").Op("+=").Int64().Call(jen.Cap(fieldName)), 0
+
+ default:
+ stmt, flag := sizegen.sizeStmtForType(jen.Id("elem"), elemT, false)
+ return jen.BlockFunc(func(b *jen.Group) {
+ b.Add(
+ jen.Id("size").
+ Op("+=").
+ Int64().Call(jen.Cap(fieldName)).
+ Op("*").
+ Lit(sizegen.sizes.Sizeof(elemT)))
+
+ if stmt != nil {
+ b.Add(jen.For(jen.List(jen.Id("_"), jen.Id("elem")).Op(":=").Range().Add(fieldName)).Block(stmt))
+ }
+ }), flag
+ }
+
+ case *types.Map:
+ keySize, keyFlag := sizegen.sizeStmtForType(jen.Id("k"), node.Key(), false)
+ valSize, valFlag := sizegen.sizeStmtForType(jen.Id("v"), node.Elem(), false)
+
+ return jen.If(fieldName.Clone().Op("!=").Nil()).BlockFunc(func(block *jen.Group) {
+ for _, stmt := range sizegen.sizeStmtForMap(fieldName, node) {
+ block.Add(stmt)
+ }
+
+ var forLoopVars []jen.Code
+ switch {
+ case keySize != nil && valSize != nil:
+ forLoopVars = []jen.Code{jen.Id("k"), jen.Id("v")}
+ case keySize == nil && valSize != nil:
+ forLoopVars = []jen.Code{jen.Id("_"), jen.Id("v")}
+ case keySize != nil && valSize == nil:
+ forLoopVars = []jen.Code{jen.Id("k")}
+ case keySize == nil && valSize == nil:
+ return
+ }
+
+ block.Add(jen.For(jen.List(forLoopVars...).Op(":=").Range().Add(fieldName))).BlockFunc(func(b *jen.Group) {
+ if keySize != nil {
+ b.Add(keySize)
+ }
+ if valSize != nil {
+ b.Add(valSize)
+ }
+ })
+ }), codeWithUnsafe | keyFlag | valFlag
+
+ case *types.Pointer:
+ return sizegen.sizeStmtForType(fieldName, node.Elem(), true)
+
+ case *types.Named:
+ ts := sizegen.getKnownType(node)
+ if ts.pod || !ts.local {
+ if alloc {
+ if !ts.local {
+ log.Printf("WARNING: size of external type %s cannot be fully calculated", node)
+ }
+ return jen.If(fieldName.Clone().Op("!=").Nil()).Block(
+ jen.Id("size").Op("+=").Lit(sizegen.sizes.Sizeof(node.Underlying())),
+ ), 0
+ }
+ return nil, 0
+ }
+ return sizegen.sizeStmtForType(fieldName, node.Underlying(), alloc)
+
+ case *types.Interface:
+ if node.Empty() {
+ return nil, 0
+ }
+ return jen.If(
+ jen.List(
+ jen.Id("cc"), jen.Id("ok")).
+ Op(":=").
+ Add(fieldName.Clone().Assert(jen.Id("cachedObject"))),
+ jen.Id("ok"),
+ ).Block(
+ jen.Id("size").
+ Op("+=").
+ Id("cc").
+ Dot("CachedSize").
+ Call(jen.True()),
+ ), codeWithInterface
+
+ case *types.Struct:
+ return jen.Id("size").Op("+=").Add(fieldName.Clone().Dot("CachedSize").Call(jen.Lit(alloc))), 0
+
+ case *types.Basic:
+ if !alloc {
+ if node.Info()&types.IsString != 0 {
+ return jen.Id("size").Op("+=").Int64().Call(jen.Len(fieldName)), 0
+ }
+ return nil, 0
+ }
+ return jen.Id("size").Op("+=").Lit(sizegen.sizes.Sizeof(node)), 0
+ default:
+ log.Printf("unhandled type: %T", node)
+ return nil, 0
+ }
+}
+
+type typePaths []string
+
+func (t *typePaths) String() string {
+ return fmt.Sprintf("%v", *t)
+}
+
+func (t *typePaths) Set(path string) error {
+ *t = append(*t, path)
+ return nil
+}
+
+func main() {
+ var patterns typePaths
+ var generate typePaths
+ var verify bool
+
+ flag.Var(&patterns, "in", "Go packages to load the generator")
+ flag.Var(&generate, "gen", "Typename of the Go struct to generate size info for")
+ flag.BoolVar(&verify, "verify", false, "ensure that the generated files are correct")
+ flag.Parse()
+
+ result, err := GenerateSizeHelpers(patterns, generate)
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ if verify {
+ for _, err := range VerifyFilesOnDisk(result) {
+ log.Fatal(err)
+ }
+ log.Printf("%d files OK", len(result))
+ } else {
+ for fullPath, file := range result {
+ if err := file.Save(fullPath); err != nil {
+ log.Fatalf("filed to save file to '%s': %v", fullPath, err)
+ }
+ log.Printf("saved '%s'", fullPath)
+ }
+ }
+}
+
+// VerifyFilesOnDisk compares the generated results from the codegen against the files that
+// currently exist on disk and returns any mismatches
+func VerifyFilesOnDisk(result map[string]*jen.File) (errors []error) {
+ for fullPath, file := range result {
+ existing, err := ioutil.ReadFile(fullPath)
+ if err != nil {
+ errors = append(errors, fmt.Errorf("missing file on disk: %s (%w)", fullPath, err))
+ continue
+ }
+
+ var buf bytes.Buffer
+ if err := file.Render(&buf); err != nil {
+ errors = append(errors, fmt.Errorf("render error for '%s': %w", fullPath, err))
+ continue
+ }
+
+ if !bytes.Equal(existing, buf.Bytes()) {
+ errors = append(errors, fmt.Errorf("'%s' has changed", fullPath))
+ continue
+ }
+ }
+ return errors
+}
+
+// GenerateSizeHelpers generates the auxiliary code that implements CachedSize helper methods
+// for all the types listed in typePatterns
+func GenerateSizeHelpers(packagePatterns []string, typePatterns []string) (map[string]*jen.File, error) {
+ loaded, err := packages.Load(&packages.Config{
+ Mode: packages.NeedName | packages.NeedTypes | packages.NeedTypesSizes | packages.NeedTypesInfo | packages.NeedDeps | packages.NeedImports | packages.NeedModule,
+ }, packagePatterns...)
+
+ if err != nil {
+ return nil, err
+ }
+
+ sizegen := newSizegen(loaded[0].Module, loaded[0].TypesSizes)
+
+ scopes := make(map[string]*types.Scope)
+ for _, pkg := range loaded {
+ scopes[pkg.PkgPath] = pkg.Types.Scope()
+ }
+
+ for _, gen := range typePatterns {
+ pos := strings.LastIndexByte(gen, '.')
+ if pos < 0 {
+ return nil, fmt.Errorf("unexpected input type: %s", gen)
+ }
+
+ pkgname := gen[:pos]
+ typename := gen[pos+1:]
+
+ scope := scopes[pkgname]
+ if scope == nil {
+ return nil, fmt.Errorf("no scope found for type '%s'", gen)
+ }
+
+ if typename == "*" {
+ for _, name := range scope.Names() {
+ sizegen.generateKnownType(scope.Lookup(name).Type().(*types.Named))
+ }
+ } else {
+ tt := scope.Lookup(typename)
+ if tt == nil {
+ return nil, fmt.Errorf("no type called '%s' found in '%s'", typename, pkgname)
+ }
+
+ sizegen.generateKnownType(tt.Type().(*types.Named))
+ }
+ }
+
+ return sizegen.finalize(), nil
+}
diff --git a/go/tools/sizegen/sizegen_test.go b/go/tools/sizegen/sizegen_test.go
new file mode 100644
index 00000000000..7b549d727c4
--- /dev/null
+++ b/go/tools/sizegen/sizegen_test.go
@@ -0,0 +1,39 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package main
+
+import (
+ "fmt"
+ "testing"
+
+ "github.com/stretchr/testify/require"
+)
+
+func TestFullGeneration(t *testing.T) {
+ result, err := GenerateSizeHelpers([]string{"./integration/..."}, []string{"vitess.io/vitess/go/tools/sizegen/integration.*"})
+ require.NoError(t, err)
+
+ verifyErrors := VerifyFilesOnDisk(result)
+ require.Empty(t, verifyErrors)
+
+ for _, file := range result {
+ contents := fmt.Sprintf("%#v", file)
+ require.Contains(t, contents, "http://www.apache.org/licenses/LICENSE-2.0")
+ require.Contains(t, contents, "type cachedObject interface")
+ require.Contains(t, contents, "//go:nocheckptr")
+ }
+}
diff --git a/go/vt/binlog/binlogplayer/binlog_player.go b/go/vt/binlog/binlogplayer/binlog_player.go
index ad36b31202d..42142cd08d6 100644
--- a/go/vt/binlog/binlogplayer/binlog_player.go
+++ b/go/vt/binlog/binlogplayer/binlog_player.go
@@ -558,6 +558,7 @@ func CreateVReplicationTable() []string {
var AlterVReplicationTable = []string{
"ALTER TABLE _vt.vreplication ADD COLUMN db_name VARBINARY(255) NOT NULL",
"ALTER TABLE _vt.vreplication MODIFY source BLOB NOT NULL",
+ "ALTER TABLE _vt.vreplication ADD KEY workflow_idx (workflow(64))",
}
// VRSettings contains the settings of a vreplication table.
diff --git a/go/vt/binlog/event_streamer.go b/go/vt/binlog/event_streamer.go
index 128f8ba1790..a8cce64a0c9 100644
--- a/go/vt/binlog/event_streamer.go
+++ b/go/vt/binlog/event_streamer.go
@@ -200,7 +200,7 @@ func parsePkNames(tokenizer *sqlparser.Tokenizer) ([]*querypb.Field, error) {
Name: string(val),
})
default:
- return nil, fmt.Errorf("syntax error at position: %d", tokenizer.Position)
+ return nil, fmt.Errorf("syntax error at position: %d", tokenizer.Pos)
}
}
return columns, nil
@@ -297,15 +297,14 @@ func parsePkTuple(tokenizer *sqlparser.Tokenizer, insertid int64, fields []*quer
return nil, insertid, fmt.Errorf("incompatible string field with type %v", fields[index].Type)
}
- decoded := make([]byte, base64.StdEncoding.DecodedLen(len(val)))
- numDecoded, err := base64.StdEncoding.Decode(decoded, val)
+ decoded, err := base64.StdEncoding.DecodeString(val)
if err != nil {
return nil, insertid, err
}
- result.Lengths = append(result.Lengths, int64(numDecoded))
- result.Values = append(result.Values, decoded[:numDecoded]...)
+ result.Lengths = append(result.Lengths, int64(len(decoded)))
+ result.Values = append(result.Values, decoded...)
default:
- return nil, insertid, fmt.Errorf("syntax error at position: %d", tokenizer.Position)
+ return nil, insertid, fmt.Errorf("syntax error at position: %d", tokenizer.Pos)
}
index++
}
diff --git a/go/vt/concurrency/error_group.go b/go/vt/concurrency/error_group.go
new file mode 100644
index 00000000000..49b5762b248
--- /dev/null
+++ b/go/vt/concurrency/error_group.go
@@ -0,0 +1,106 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package concurrency
+
+import "context"
+
+// ErrorGroup provides a function for waiting for N goroutines to complete with
+// at least X successes and no more than Y failures, and cancelling the rest.
+//
+// It should be used as follows:
+//
+// errCh := make(chan error)
+// errgroupCtx, errgroupCancel := context.WithCancel(ctx)
+//
+// for _, arg := range args {
+// arg := arg
+//
+// go func() {
+// err := doWork(errGroupCtx, arg)
+// errCh <- err
+// }()
+// }
+//
+// errgroup := concurrency.ErrorGroup{
+// NumGoroutines: len(args),
+// NumRequiredSuccess: 5, // need at least 5 to respond with nil error before cancelling the rest
+// NumAllowedErrors: 1, // if more than 1 responds with non-nil error, cancel the rest
+// }
+// errRec := errgroup.Wait(errgroupCancel, errCh)
+//
+// if errRec.HasErrors() {
+// // ...
+// }
+type ErrorGroup struct {
+ NumGoroutines int
+ NumRequiredSuccesses int
+ NumAllowedErrors int
+}
+
+// Wait waits for a group of goroutines that are sending errors to the given
+// error channel, and are cancellable by the given cancel function.
+//
+// Wait will cancel any outstanding goroutines under the following conditions:
+//
+// (1) More than NumAllowedErrors non-nil results have been consumed on the
+// error channel.
+//
+// (2) At least NumRequiredSuccesses nil results have been consumed on the error
+// channel.
+//
+// After the cancellation condition is triggered, Wait will continue to consume
+// results off the error channel so as to not permanently block any of those
+// cancelled goroutines.
+//
+// When finished consuming results from all goroutines, cancelled or otherwise,
+// Wait returns an AllErrorRecorder that contains all errors returned by any of
+// those goroutines. It does not close the error channel.
+func (eg ErrorGroup) Wait(cancel context.CancelFunc, errors chan error) *AllErrorRecorder {
+ errCounter := 0
+ successCounter := 0
+ responseCounter := 0
+ rec := &AllErrorRecorder{}
+
+ if eg.NumGoroutines < 1 {
+ return rec
+ }
+
+ for err := range errors {
+ responseCounter++
+
+ switch err {
+ case nil:
+ successCounter++
+ default:
+ errCounter++
+ rec.RecordError(err)
+ }
+
+ // Even though we cancel in the next conditional, we need to keep
+ // consuming off the channel, or those goroutines will get stuck
+ // forever.
+ if responseCounter == eg.NumGoroutines {
+ break
+ }
+
+ if errCounter > eg.NumAllowedErrors || successCounter >= eg.NumRequiredSuccesses {
+ cancel()
+ }
+ }
+
+ return rec
+}
diff --git a/go/vt/concurrency/error_group_test.go b/go/vt/concurrency/error_group_test.go
new file mode 100644
index 00000000000..9222dbc2d25
--- /dev/null
+++ b/go/vt/concurrency/error_group_test.go
@@ -0,0 +1,34 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package concurrency
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestErrorGroup(t *testing.T) {
+ t.Run("Wait() returns immediately when NumGoroutines = 0", func(t *testing.T) {
+ eg := ErrorGroup{
+ NumGoroutines: 0,
+ }
+
+ rec := eg.Wait(nil, nil)
+ assert.NoError(t, rec.Error())
+ })
+}
diff --git a/go/vt/discovery/healthcheck.go b/go/vt/discovery/healthcheck.go
index 9004e48bfef..83a4048fe87 100644
--- a/go/vt/discovery/healthcheck.go
+++ b/go/vt/discovery/healthcheck.go
@@ -450,8 +450,14 @@ func (hc *HealthCheckImpl) updateHealth(th *TabletHealth, prevTarget *query.Targ
}
}
case isPrimary && !isPrimaryUp:
- // No healthy master tablet
- hc.healthy[targetKey] = []*TabletHealth{}
+ if healthy, ok := hc.healthy[targetKey]; ok && len(healthy) > 0 {
+ // isPrimary is true here therefore we should only have 1 tablet in healthy
+ alias := tabletAliasString(topoproto.TabletAliasString(healthy[0].Tablet.Alias))
+ // Clear healthy list for primary if the existing tablet is down
+ if alias == tabletAlias {
+ hc.healthy[targetKey] = []*TabletHealth{}
+ }
+ }
}
if !trivialUpdate {
diff --git a/go/vt/discovery/healthcheck_test.go b/go/vt/discovery/healthcheck_test.go
index 73ba30a665f..54d3c303a12 100644
--- a/go/vt/discovery/healthcheck_test.go
+++ b/go/vt/discovery/healthcheck_test.go
@@ -324,6 +324,84 @@ func TestHealthCheckErrorOnPrimary(t *testing.T) {
assert.Empty(t, a, "wrong result, expected empty list")
}
+func TestHealthCheckErrorOnPrimaryAfterExternalReparent(t *testing.T) {
+ ts := memorytopo.NewServer("cell")
+ hc := createTestHc(ts)
+ defer hc.Close()
+
+ resultChan := hc.Subscribe()
+
+ tablet1 := createTestTablet(0, "cell", "a")
+ input1 := make(chan *querypb.StreamHealthResponse)
+ fc1 := createFakeConn(tablet1, input1)
+ fc1.errCh = make(chan error)
+ hc.AddTablet(tablet1)
+ <-resultChan
+
+ tablet2 := createTestTablet(1, "cell", "b")
+ tablet2.Type = topodatapb.TabletType_REPLICA
+ input2 := make(chan *querypb.StreamHealthResponse)
+ createFakeConn(tablet2, input2)
+ hc.AddTablet(tablet2)
+ <-resultChan
+
+ shr2 := &querypb.StreamHealthResponse{
+ TabletAlias: tablet2.Alias,
+ Target: &querypb.Target{Keyspace: "k", Shard: "s", TabletType: topodatapb.TabletType_REPLICA},
+ Serving: true,
+ TabletExternallyReparentedTimestamp: 0,
+ RealtimeStats: &querypb.RealtimeStats{SecondsBehindMaster: 10, CpuUsage: 0.2},
+ }
+ input2 <- shr2
+ <-resultChan
+ shr1 := &querypb.StreamHealthResponse{
+ TabletAlias: tablet1.Alias,
+ Target: &querypb.Target{Keyspace: "k", Shard: "s", TabletType: topodatapb.TabletType_MASTER},
+ Serving: true,
+ TabletExternallyReparentedTimestamp: 10,
+ RealtimeStats: &querypb.RealtimeStats{SecondsBehindMaster: 0, CpuUsage: 0.2},
+ }
+ input1 <- shr1
+ <-resultChan
+ // tablet 1 is the primary now
+ health := []*TabletHealth{{
+ Tablet: tablet1,
+ Target: &querypb.Target{Keyspace: "k", Shard: "s", TabletType: topodatapb.TabletType_MASTER},
+ Serving: true,
+ Stats: &querypb.RealtimeStats{SecondsBehindMaster: 0, CpuUsage: 0.2},
+ MasterTermStartTime: 10,
+ }}
+ a := hc.GetHealthyTabletStats(&querypb.Target{Keyspace: "k", Shard: "s", TabletType: topodatapb.TabletType_MASTER})
+ mustMatch(t, health, a, "unexpected result")
+
+ shr2 = &querypb.StreamHealthResponse{
+ TabletAlias: tablet2.Alias,
+ Target: &querypb.Target{Keyspace: "k", Shard: "s", TabletType: topodatapb.TabletType_MASTER},
+ Serving: true,
+ TabletExternallyReparentedTimestamp: 20,
+ RealtimeStats: &querypb.RealtimeStats{SecondsBehindMaster: 0, CpuUsage: 0.2},
+ }
+ input2 <- shr2
+ <-resultChan
+ // reparent: tablet 2 is the primary now
+ health = []*TabletHealth{{
+ Tablet: tablet2,
+ Target: &querypb.Target{Keyspace: "k", Shard: "s", TabletType: topodatapb.TabletType_MASTER},
+ Serving: true,
+ Stats: &querypb.RealtimeStats{SecondsBehindMaster: 0, CpuUsage: 0.2},
+ MasterTermStartTime: 20,
+ }}
+ a = hc.GetHealthyTabletStats(&querypb.Target{Keyspace: "k", Shard: "s", TabletType: topodatapb.TabletType_MASTER})
+ mustMatch(t, health, a, "unexpected result")
+
+ // Stream error from tablet 1
+ fc1.errCh <- fmt.Errorf("some stream error")
+ <-resultChan
+ // tablet 2 should still be the master
+ a = hc.GetHealthyTabletStats(&querypb.Target{Keyspace: "k", Shard: "s", TabletType: topodatapb.TabletType_MASTER})
+ mustMatch(t, health, a, "unexpected result")
+}
+
func TestHealthCheckVerifiesTabletAlias(t *testing.T) {
ts := memorytopo.NewServer("cell")
hc := createTestHc(ts)
diff --git a/go/vt/grpcoptionaltls/conn_wrapper.go b/go/vt/grpcoptionaltls/conn_wrapper.go
new file mode 100755
index 00000000000..5659a9170f3
--- /dev/null
+++ b/go/vt/grpcoptionaltls/conn_wrapper.go
@@ -0,0 +1,38 @@
+/*
+Copyright 2019 The Vitess Authors.
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+package grpcoptionaltls
+
+import (
+ "bytes"
+ "io"
+ "net"
+)
+
+// WrappedConn imitates MSG_PEEK behaviour
+// Unlike net.Conn is not thread-safe for reading already peeked bytes
+type WrappedConn struct {
+ net.Conn
+ rd io.Reader
+}
+
+func NewWrappedConn(conn net.Conn, peeked []byte) net.Conn {
+ var rd = io.MultiReader(bytes.NewReader(peeked), conn)
+ return &WrappedConn{
+ Conn: conn,
+ rd: rd,
+ }
+}
+
+func (wc *WrappedConn) Read(b []byte) (n int, err error) {
+ return wc.rd.Read(b)
+}
diff --git a/go/vt/grpcoptionaltls/optionaltls.go b/go/vt/grpcoptionaltls/optionaltls.go
new file mode 100755
index 00000000000..c18f80412a6
--- /dev/null
+++ b/go/vt/grpcoptionaltls/optionaltls.go
@@ -0,0 +1,58 @@
+/*
+Copyright 2019 The Vitess Authors.
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+package grpcoptionaltls
+
+import (
+ "net"
+
+ "google.golang.org/grpc/credentials"
+)
+
+type optionalTLSCreds struct {
+ credentials.TransportCredentials
+}
+
+func (c *optionalTLSCreds) Clone() credentials.TransportCredentials {
+ return New(c.TransportCredentials.Clone())
+}
+
+func (c *optionalTLSCreds) ServerHandshake(conn net.Conn) (net.Conn, credentials.AuthInfo, error) {
+ isTLS, bytes, err := DetectTLS(conn)
+ if err != nil {
+ conn.Close()
+ return nil, nil, err
+ }
+
+ var wc net.Conn = NewWrappedConn(conn, bytes)
+ if isTLS {
+ return c.TransportCredentials.ServerHandshake(wc)
+ }
+
+ var authInfo = info{
+ CommonAuthInfo: credentials.CommonAuthInfo{SecurityLevel: credentials.NoSecurity},
+ }
+
+ return wc, authInfo, nil
+}
+
+func New(tc credentials.TransportCredentials) credentials.TransportCredentials {
+ return &optionalTLSCreds{TransportCredentials: tc}
+}
+
+type info struct {
+ credentials.CommonAuthInfo
+}
+
+func (info) AuthType() string {
+ return "insecure"
+}
diff --git a/go/vt/grpcoptionaltls/server_test.go b/go/vt/grpcoptionaltls/server_test.go
new file mode 100755
index 00000000000..a0f6e6c8ea0
--- /dev/null
+++ b/go/vt/grpcoptionaltls/server_test.go
@@ -0,0 +1,127 @@
+/*
+Copyright 2019 The Vitess Authors.
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+package grpcoptionaltls
+
+import (
+ "context"
+ "crypto/tls"
+ "io/ioutil"
+ "net"
+ "os"
+ "testing"
+ "time"
+
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/credentials"
+ pb "google.golang.org/grpc/examples/helloworld/helloworld"
+
+ "vitess.io/vitess/go/vt/tlstest"
+)
+
+// server is used to implement helloworld.GreeterServer.
+type server struct {
+ pb.UnimplementedGreeterServer
+}
+
+// SayHello implements helloworld.GreeterServer
+func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) {
+ return &pb.HelloReply{Message: "Hello " + in.GetName()}, nil
+}
+
+func createUnstartedServer(creds credentials.TransportCredentials) *grpc.Server {
+ s := grpc.NewServer(grpc.Creds(creds))
+ pb.RegisterGreeterServer(s, &server{})
+ return s
+}
+
+type testCredentials struct {
+ client credentials.TransportCredentials
+ server credentials.TransportCredentials
+}
+
+func createCredentials() (*testCredentials, error) {
+ // Create a temporary directory.
+ certDir, err := ioutil.TempDir("", "optionaltls_grpc_test")
+ if err != nil {
+ return nil, err
+ }
+ defer os.RemoveAll(certDir)
+
+ certs := tlstest.CreateClientServerCertPairs(certDir)
+ cert, err := tls.LoadX509KeyPair(certs.ServerCert, certs.ServerKey)
+ if err != nil {
+ return nil, err
+ }
+
+ clientCredentials, err := credentials.NewClientTLSFromFile(certs.ServerCA, certs.ServerName)
+ if err != nil {
+ return nil, err
+ }
+ tc := &testCredentials{
+ client: clientCredentials,
+ server: credentials.NewServerTLSFromCert(&cert),
+ }
+ return tc, nil
+}
+
+func TestOptionalTLS(t *testing.T) {
+ testCtx, testCancel := context.WithCancel(context.Background())
+ defer testCancel()
+
+ tc, err := createCredentials()
+ if err != nil {
+ t.Fatalf("failed to create credentials %v", err)
+ }
+
+ lis, err := net.Listen("tcp", "")
+ if err != nil {
+ t.Fatalf("failed to listen %v", err)
+ }
+ defer lis.Close()
+ addr := lis.Addr().String()
+
+ srv := createUnstartedServer(New(tc.server))
+ go func() {
+ srv.Serve(lis)
+ }()
+ defer srv.Stop()
+
+ testFunc := func(t *testing.T, dialOpt grpc.DialOption) {
+ ctx, cancel := context.WithTimeout(testCtx, 5*time.Second)
+ defer cancel()
+ conn, err := grpc.DialContext(ctx, addr, dialOpt)
+ if err != nil {
+ t.Fatalf("failed to connect to the server %v", err)
+ }
+ defer conn.Close()
+ c := pb.NewGreeterClient(conn)
+ resp, err := c.SayHello(ctx, &pb.HelloRequest{Name: "Vittes"})
+ if err != nil {
+ t.Fatalf("could not greet: %v", err)
+ }
+ if resp.Message != "Hello Vittes" {
+ t.Fatalf("unexpected reply %s", resp.Message)
+ }
+ }
+
+ t.Run("Plain2TLS", func(t *testing.T) {
+ for i := 0; i < 5; i += 1 {
+ testFunc(t, grpc.WithInsecure())
+ }
+ })
+ t.Run("TLS2TLS", func(t *testing.T) {
+ for i := 0; i < 5; i += 1 {
+ testFunc(t, grpc.WithTransportCredentials(tc.client))
+ }
+ })
+}
diff --git a/go/vt/grpcoptionaltls/tls_detector.go b/go/vt/grpcoptionaltls/tls_detector.go
new file mode 100755
index 00000000000..beff6bfd740
--- /dev/null
+++ b/go/vt/grpcoptionaltls/tls_detector.go
@@ -0,0 +1,50 @@
+/*
+Copyright 2019 The Vitess Authors.
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+package grpcoptionaltls
+
+import "io"
+
+const TLSPeekedBytes = 6
+
+func looksLikeTLS(bytes []byte) bool {
+ if len(bytes) < TLSPeekedBytes {
+ return false
+ }
+ // TLS starts as
+ // 0: 0x16 - handshake protocol magic
+ // 1: 0x03 - SSL version major
+ // 2: 0x00 to 0x03 - SSL version minor (SSLv3 or TLS1.0 through TLS1.3)
+ // 3-4: length (2 bytes)
+ // 5: 0x01 - handshake type (ClientHello)
+ // 6-8: handshake len (3 bytes), equals value from offset 3-4 minus 4
+ // HTTP2 initial frame bytes
+ // https://tools.ietf.org/html/rfc7540#section-3.4
+
+ // Definitely not TLS
+ if bytes[0] != 0x16 || bytes[1] != 0x03 || bytes[5] != 0x01 {
+ return false
+ }
+ return true
+}
+
+// DetectTLS reads necessary number of bytes from io.Reader
+// returns result, bytes read from Reader and error
+// No matter if error happens or what flag value is
+// returned bytes should be checked
+func DetectTLS(r io.Reader) (bool, []byte, error) {
+ var bytes = make([]byte, TLSPeekedBytes)
+ if n, err := io.ReadFull(r, bytes); err != nil {
+ return false, bytes[:n], err
+ }
+ return looksLikeTLS(bytes), bytes, nil
+}
diff --git a/go/vt/key/cached_size.go b/go/vt/key/cached_size.go
new file mode 100644
index 00000000000..ef4e6e79896
--- /dev/null
+++ b/go/vt/key/cached_size.go
@@ -0,0 +1,43 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+// Code generated by Sizegen. DO NOT EDIT.
+
+package key
+
+func (cached *DestinationExactKeyRange) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(8)
+ }
+ // field KeyRange *vitess.io/vitess/go/vt/proto/topodata.KeyRange
+ size += cached.KeyRange.CachedSize(true)
+ return size
+}
+func (cached *DestinationKeyRange) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(8)
+ }
+ // field KeyRange *vitess.io/vitess/go/vt/proto/topodata.KeyRange
+ size += cached.KeyRange.CachedSize(true)
+ return size
+}
diff --git a/go/vt/key/destination.go b/go/vt/key/destination.go
index 235f561c2d7..c4fb37b7a9d 100644
--- a/go/vt/key/destination.go
+++ b/go/vt/key/destination.go
@@ -42,14 +42,6 @@ type Destination interface {
// The returned error must be generated by vterrors.
Resolve([]*topodatapb.ShardReference, func(shard string) error) error
- // IsUnique returns true if this is a single destination.
- // It returns false if this type can map to multiple destinations.
- //
- // TODO(alainjobart) That is just a method I think will be useful.
- // Mainly, in v3, once we Map(), each returned result should
- // be IsUnique=true for a Unique vindex.
- IsUnique() bool
-
// String returns a printable version of the Destination.
String() string
}
@@ -75,11 +67,6 @@ func DestinationsString(destinations []Destination) string {
// It implements the Destination interface.
type DestinationShard string
-// IsUnique is part of the Destination interface.
-func (d DestinationShard) IsUnique() bool {
- return true
-}
-
// Resolve is part of the Destination interface.
func (d DestinationShard) Resolve(allShards []*topodatapb.ShardReference, addShard func(shard string) error) error {
return addShard(string(d))
@@ -98,11 +85,6 @@ func (d DestinationShard) String() string {
// It implements the Destination interface.
type DestinationShards []string
-// IsUnique is part of the Destination interface.
-func (d DestinationShards) IsUnique() bool {
- return false
-}
-
// Resolve is part of the Destination interface.
func (d DestinationShards) Resolve(allShards []*topodatapb.ShardReference, addShard func(shard string) error) error {
for _, shard := range d {
@@ -134,11 +116,6 @@ type DestinationExactKeyRange struct {
KeyRange *topodatapb.KeyRange
}
-// IsUnique is part of the Destination interface.
-func (d DestinationExactKeyRange) IsUnique() bool {
- return true
-}
-
// Resolve is part of the Destination interface.
func (d DestinationExactKeyRange) Resolve(allShards []*topodatapb.ShardReference, addShard func(shard string) error) error {
return processExactKeyRange(allShards, d.KeyRange, addShard)
@@ -188,11 +165,6 @@ func processExactKeyRange(allShards []*topodatapb.ShardReference, kr *topodatapb
// It implements the Destination interface.
type DestinationExactKeyRanges []*topodatapb.KeyRange
-// IsUnique is part of the Destination interface.
-func (d DestinationExactKeyRanges) IsUnique() bool {
- return false
-}
-
// Resolve is part of the Destination interface.
func (d DestinationExactKeyRanges) Resolve(allShards []*topodatapb.ShardReference, addShard func(shard string) error) error {
for _, kr := range d {
@@ -231,11 +203,6 @@ type DestinationKeyRange struct {
KeyRange *topodatapb.KeyRange
}
-// IsUnique is part of the Destination interface.
-func (d DestinationKeyRange) IsUnique() bool {
- return true
-}
-
// Resolve is part of the Destination interface.
func (d DestinationKeyRange) Resolve(allShards []*topodatapb.ShardReference, addShard func(shard string) error) error {
return processKeyRange(allShards, d.KeyRange, addShard)
@@ -267,11 +234,6 @@ func processKeyRange(allShards []*topodatapb.ShardReference, kr *topodatapb.KeyR
// It implements the Destination interface.
type DestinationKeyRanges []*topodatapb.KeyRange
-// IsUnique is part of the Destination interface.
-func (d DestinationKeyRanges) IsUnique() bool {
- return false
-}
-
// Resolve is part of the Destination interface.
func (d DestinationKeyRanges) Resolve(allShards []*topodatapb.ShardReference, addShard func(shard string) error) error {
for _, kr := range d {
@@ -304,11 +266,6 @@ func (d DestinationKeyRanges) String() string {
// It implements the Destination interface.
type DestinationKeyspaceID []byte
-// IsUnique is part of the Destination interface.
-func (d DestinationKeyspaceID) IsUnique() bool {
- return true
-}
-
// Resolve is part of the Destination interface.
func (d DestinationKeyspaceID) Resolve(allShards []*topodatapb.ShardReference, addShard func(shard string) error) error {
shard, err := GetShardForKeyspaceID(allShards, d)
@@ -345,11 +302,6 @@ func GetShardForKeyspaceID(allShards []*topodatapb.ShardReference, keyspaceID []
// It implements the Destination interface.
type DestinationKeyspaceIDs [][]byte
-// IsUnique is part of the Destination interface.
-func (d DestinationKeyspaceIDs) IsUnique() bool {
- return false
-}
-
// Resolve is part of the Destination interface.
func (d DestinationKeyspaceIDs) Resolve(allShards []*topodatapb.ShardReference, addShard func(shard string) error) error {
for _, ksid := range d {
@@ -400,11 +352,6 @@ func (dp DestinationAnyShardPickerRandomShard) PickShard(shardCount int) int {
// It implements the Destination interface.
type DestinationAnyShard struct{}
-// IsUnique is part of the Destination interface.
-func (d DestinationAnyShard) IsUnique() bool {
- return true
-}
-
// Resolve is part of the Destination interface.
func (d DestinationAnyShard) Resolve(allShards []*topodatapb.ShardReference, addShard func(shard string) error) error {
if len(allShards) == 0 {
@@ -427,11 +374,6 @@ func (d DestinationAnyShard) String() string {
// It implements the Destination interface.
type DestinationAllShards struct{}
-// IsUnique is part of the Destination interface.
-func (d DestinationAllShards) IsUnique() bool {
- return false
-}
-
// Resolve is part of the Destination interface.
func (d DestinationAllShards) Resolve(allShards []*topodatapb.ShardReference, addShard func(shard string) error) error {
for _, shard := range allShards {
@@ -456,11 +398,6 @@ func (d DestinationAllShards) String() string {
// It implements the Destination interface.
type DestinationNone struct{}
-// IsUnique is part of the Destination interface.
-func (d DestinationNone) IsUnique() bool {
- return true
-}
-
// Resolve is part of the Destination interface.
func (d DestinationNone) Resolve(allShards []*topodatapb.ShardReference, addShard func(shard string) error) error {
return nil
diff --git a/go/vt/key/key.go b/go/vt/key/key.go
index 90f076403a3..9cedad6f409 100644
--- a/go/vt/key/key.go
+++ b/go/vt/key/key.go
@@ -62,6 +62,16 @@ func ParseKeyspaceIDType(param string) (topodatapb.KeyspaceIdType, error) {
return topodatapb.KeyspaceIdType(value), nil
}
+// KeyspaceIDTypeString returns the string representation of a keyspace id type.
+func KeyspaceIDTypeString(id topodatapb.KeyspaceIdType) string {
+ s, ok := topodatapb.KeyspaceIdType_name[int32(id)]
+ if !ok {
+ return KeyspaceIDTypeString(topodatapb.KeyspaceIdType_UNSET)
+ }
+
+ return s
+}
+
//
// KeyRange helper methods
//
@@ -185,7 +195,7 @@ func KeyRangeEqual(left, right *topodatapb.KeyRange) bool {
bytes.Equal(left.End, right.End)
}
-// KeyRangeStartEqual returns true if right's keyrange start is _after_ left's start
+// KeyRangeStartSmaller returns true if right's keyrange start is _after_ left's start
func KeyRangeStartSmaller(left, right *topodatapb.KeyRange) bool {
if left == nil {
return right != nil
diff --git a/go/vt/mysqlctl/backup.go b/go/vt/mysqlctl/backup.go
index 7e15c50ea47..e8df43cf8af 100644
--- a/go/vt/mysqlctl/backup.go
+++ b/go/vt/mysqlctl/backup.go
@@ -23,10 +23,12 @@ import (
"os"
"path/filepath"
"strings"
+ "time"
"context"
"vitess.io/vitess/go/mysql"
+ "vitess.io/vitess/go/stats"
"vitess.io/vitess/go/vt/log"
"vitess.io/vitess/go/vt/mysqlctl/backupstorage"
"vitess.io/vitess/go/vt/proto/vtrpc"
@@ -82,6 +84,9 @@ var (
// backupCompressBlocks is the number of blocks that are processed
// once before the writer blocks
backupCompressBlocks = flag.Int("backup_storage_number_blocks", 2, "if backup_storage_compress is true, backup_storage_number_blocks sets the number of blocks that can be processed, at once, before the writer blocks, during compression (default is 2). It should be equal to the number of CPUs available for compression")
+
+ backupDuration = stats.NewGauge("backup_duration_seconds", "How long it took to complete the last backup operation (in seconds)")
+ restoreDuration = stats.NewGauge("restore_duration_seconds", "How long it took to complete the last restore operation (in seconds)")
)
// Backup is the main entry point for a backup:
@@ -89,7 +94,7 @@ var (
// - shuts down Mysqld during the backup
// - remember if we were replicating, restore the exact same state
func Backup(ctx context.Context, params BackupParams) error {
-
+ startTs := time.Now()
backupDir := GetBackupDir(params.Keyspace, params.Shard)
name := fmt.Sprintf("%v.%v", params.BackupTime.UTC().Format(BackupTimestampFormat), params.TabletAlias)
// Start the backup with the BackupStorage.
@@ -129,6 +134,7 @@ func Backup(ctx context.Context, params BackupParams) error {
}
// The backup worked, so just return the finish error, if any.
+ backupDuration.Set(int64(time.Since(startTs).Seconds()))
return finishErr
}
@@ -223,6 +229,7 @@ func ShouldRestore(ctx context.Context, params RestoreParams) (bool, error) {
// appropriate backup on the BackupStorage, Restore logs an error
// and returns ErrNoBackup. Any other error is returned.
func Restore(ctx context.Context, params RestoreParams) (*BackupManifest, error) {
+ startTs := time.Now()
// find the right backup handle: most recent one, with a MANIFEST
params.Logger.Infof("Restore: looking for a suitable backup to restore")
bs, err := backupstorage.GetBackupStorage()
@@ -322,5 +329,6 @@ func Restore(ctx context.Context, params RestoreParams) (*BackupManifest, error)
return nil, err
}
+ restoreDuration.Set(int64(time.Since(startTs).Seconds()))
return manifest, nil
}
diff --git a/go/vt/mysqlctl/mycnf_gen.go b/go/vt/mysqlctl/mycnf_gen.go
index 127b17c459d..a72e9eee9eb 100644
--- a/go/vt/mysqlctl/mycnf_gen.go
+++ b/go/vt/mysqlctl/mycnf_gen.go
@@ -92,7 +92,12 @@ func TabletDir(uid uint32) string {
if *tabletDir != "" {
return fmt.Sprintf("%s/%s", env.VtDataRoot(), *tabletDir)
}
- return fmt.Sprintf("%s/vt_%010d", env.VtDataRoot(), uid)
+ return DefaultTabletDirAtRoot(env.VtDataRoot(), uid)
+}
+
+// DefaultTabletDirAtRoot returns the default directory for a tablet given a UID and a VtDataRoot variable
+func DefaultTabletDirAtRoot(dataRoot string, uid uint32) string {
+ return fmt.Sprintf("%s/vt_%010d", dataRoot, uid)
}
// MycnfFile returns the default location of the my.cnf file.
diff --git a/go/vt/mysqlctl/mysqlctlproto/backup.go b/go/vt/mysqlctl/mysqlctlproto/backup.go
new file mode 100644
index 00000000000..6fa2755b441
--- /dev/null
+++ b/go/vt/mysqlctl/mysqlctlproto/backup.go
@@ -0,0 +1,31 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package mysqlctlproto
+
+import (
+ "vitess.io/vitess/go/vt/mysqlctl/backupstorage"
+
+ mysqlctlpb "vitess.io/vitess/go/vt/proto/mysqlctl"
+)
+
+// BackupHandleToProto returns a BackupInfo proto from a BackupHandle.
+func BackupHandleToProto(bh backupstorage.BackupHandle) *mysqlctlpb.BackupInfo {
+ return &mysqlctlpb.BackupInfo{
+ Name: bh.Name(),
+ Directory: bh.Directory(),
+ }
+}
diff --git a/go/vt/mysqlctl/mysqlctlproto/doc.go b/go/vt/mysqlctl/mysqlctlproto/doc.go
new file mode 100644
index 00000000000..cf77ea853ff
--- /dev/null
+++ b/go/vt/mysqlctl/mysqlctlproto/doc.go
@@ -0,0 +1,21 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+/*
+Package mysqlctlproto provides utility functions for working with data
+structures in mysqlctl.proto.
+*/
+package mysqlctlproto
diff --git a/go/vt/mysqlctl/xtrabackupengine.go b/go/vt/mysqlctl/xtrabackupengine.go
index 3582b777584..b134884fb62 100644
--- a/go/vt/mysqlctl/xtrabackupengine.go
+++ b/go/vt/mysqlctl/xtrabackupengine.go
@@ -49,7 +49,7 @@ type XtrabackupEngine struct {
var (
// path where backup engine program is located
- xtrabackupEnginePath = flag.String("xtrabackup_root_path", "", "directory location of the xtrabackup executable, e.g., /usr/bin")
+ xtrabackupEnginePath = flag.String("xtrabackup_root_path", "", "directory location of the xtrabackup and xbstream executables, e.g., /usr/bin")
// flags to pass through to backup phase
xtrabackupBackupFlags = flag.String("xtrabackup_backup_flags", "", "flags to pass to backup command. These should be space separated and will be added to the end of the command")
// flags to pass through to prepare phase of restore
@@ -299,6 +299,7 @@ func (be *XtrabackupEngine) backupFiles(ctx context.Context, params BackupParams
// the replication position. Note that if we don't read stderr as we go, the
// xtrabackup process gets blocked when the write buffer fills up.
stderrBuilder := &strings.Builder{}
+ posBuilder := &strings.Builder{}
stderrDone := make(chan struct{})
go func() {
defer close(stderrDone)
@@ -318,7 +319,7 @@ func (be *XtrabackupEngine) backupFiles(ctx context.Context, params BackupParams
}
capture = true
}
- fmt.Fprintln(stderrBuilder, line)
+ fmt.Fprintln(posBuilder, line)
}
if err := scanner.Err(); err != nil {
params.Logger.Errorf("error reading from xtrabackup stderr: %v", err)
@@ -359,10 +360,11 @@ func (be *XtrabackupEngine) backupFiles(ctx context.Context, params BackupParams
sterrOutput := stderrBuilder.String()
if err := backupCmd.Wait(); err != nil {
- return replicationPosition, vterrors.Wrap(err, "xtrabackup failed with error")
+ return replicationPosition, vterrors.Wrap(err, fmt.Sprintf("xtrabackup failed with error. Output=%s", sterrOutput))
}
- replicationPosition, rerr := findReplicationPosition(sterrOutput, flavor, params.Logger)
+ posOutput := posBuilder.String()
+ replicationPosition, rerr := findReplicationPosition(posOutput, flavor, params.Logger)
if rerr != nil {
return replicationPosition, vterrors.Wrap(rerr, "backup failed trying to find replication position")
}
@@ -580,7 +582,7 @@ func (be *XtrabackupEngine) extractFiles(ctx context.Context, logger logutil.Log
case xbstream:
// now extract the files by running xbstream
- xbstreamProgram := xbstream
+ xbstreamProgram := path.Join(*xtrabackupEnginePath, xbstream)
flagsToExec := []string{"-C", tempDir, "-xv"}
if *xbstreamRestoreFlags != "" {
flagsToExec = append(flagsToExec, strings.Fields(*xbstreamRestoreFlags)...)
diff --git a/go/vt/orchestrator/db/db.go b/go/vt/orchestrator/db/db.go
index 8472840569b..680d982a0c2 100644
--- a/go/vt/orchestrator/db/db.go
+++ b/go/vt/orchestrator/db/db.go
@@ -133,8 +133,10 @@ func OpenOrchestrator() (db *sql.DB, err error) {
if err == nil && !fromCache {
log.Debugf("Connected to orchestrator backend: sqlite on %v", config.Config.SQLite3DataFile)
}
- db.SetMaxOpenConns(1)
- db.SetMaxIdleConns(1)
+ if db != nil {
+ db.SetMaxOpenConns(1)
+ db.SetMaxIdleConns(1)
+ }
} else {
if db, fromCache, err := openOrchestratorMySQLGeneric(); err != nil {
return db, log.Errore(err)
diff --git a/go/vt/orchestrator/external/golib/sqlutils/sqlutils.go b/go/vt/orchestrator/external/golib/sqlutils/sqlutils.go
index a0f7209627e..74bfee3beff 100644
--- a/go/vt/orchestrator/external/golib/sqlutils/sqlutils.go
+++ b/go/vt/orchestrator/external/golib/sqlutils/sqlutils.go
@@ -25,9 +25,6 @@ import (
"sync"
"time"
- _ "github.com/go-sql-driver/mysql"
- _ "github.com/mattn/go-sqlite3"
-
"vitess.io/vitess/go/vt/orchestrator/external/golib/log"
)
diff --git a/go/vt/orchestrator/inst/cluster_test.go b/go/vt/orchestrator/inst/cluster_test.go
index 27b7f212aa4..640e89ab4af 100644
--- a/go/vt/orchestrator/inst/cluster_test.go
+++ b/go/vt/orchestrator/inst/cluster_test.go
@@ -21,6 +21,8 @@ import (
"testing"
+ _ "github.com/mattn/go-sqlite3"
+
"vitess.io/vitess/go/vt/orchestrator/config"
"vitess.io/vitess/go/vt/orchestrator/external/golib/log"
test "vitess.io/vitess/go/vt/orchestrator/external/golib/tests"
diff --git a/go/vt/proto/automation/automation.pb.go b/go/vt/proto/automation/automation.pb.go
index fe039ca84ef..2212bfadb07 100644
--- a/go/vt/proto/automation/automation.pb.go
+++ b/go/vt/proto/automation/automation.pb.go
@@ -1,11 +1,13 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: automation.proto
package automation
import (
fmt "fmt"
+ io "io"
math "math"
+ math_bits "math/bits"
proto "github.com/golang/protobuf/proto"
)
@@ -102,18 +104,26 @@ func (*ClusterOperation) ProtoMessage() {}
func (*ClusterOperation) Descriptor() ([]byte, []int) {
return fileDescriptor_06e15ad07c41cb38, []int{0}
}
-
func (m *ClusterOperation) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ClusterOperation.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ClusterOperation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ClusterOperation.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ClusterOperation.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ClusterOperation) XXX_Merge(src proto.Message) {
xxx_messageInfo_ClusterOperation.Merge(m, src)
}
func (m *ClusterOperation) XXX_Size() int {
- return xxx_messageInfo_ClusterOperation.Size(m)
+ return m.Size()
}
func (m *ClusterOperation) XXX_DiscardUnknown() {
xxx_messageInfo_ClusterOperation.DiscardUnknown(m)
@@ -165,18 +175,26 @@ func (*TaskContainer) ProtoMessage() {}
func (*TaskContainer) Descriptor() ([]byte, []int) {
return fileDescriptor_06e15ad07c41cb38, []int{1}
}
-
func (m *TaskContainer) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_TaskContainer.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *TaskContainer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_TaskContainer.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_TaskContainer.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *TaskContainer) XXX_Merge(src proto.Message) {
xxx_messageInfo_TaskContainer.Merge(m, src)
}
func (m *TaskContainer) XXX_Size() int {
- return xxx_messageInfo_TaskContainer.Size(m)
+ return m.Size()
}
func (m *TaskContainer) XXX_DiscardUnknown() {
xxx_messageInfo_TaskContainer.DiscardUnknown(m)
@@ -221,18 +239,26 @@ func (*Task) ProtoMessage() {}
func (*Task) Descriptor() ([]byte, []int) {
return fileDescriptor_06e15ad07c41cb38, []int{2}
}
-
func (m *Task) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Task.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Task) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Task.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Task.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Task) XXX_Merge(src proto.Message) {
xxx_messageInfo_Task.Merge(m, src)
}
func (m *Task) XXX_Size() int {
- return xxx_messageInfo_Task.Size(m)
+ return m.Size()
}
func (m *Task) XXX_DiscardUnknown() {
xxx_messageInfo_Task.DiscardUnknown(m)
@@ -296,18 +322,26 @@ func (*EnqueueClusterOperationRequest) ProtoMessage() {}
func (*EnqueueClusterOperationRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_06e15ad07c41cb38, []int{3}
}
-
func (m *EnqueueClusterOperationRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_EnqueueClusterOperationRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *EnqueueClusterOperationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_EnqueueClusterOperationRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_EnqueueClusterOperationRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *EnqueueClusterOperationRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_EnqueueClusterOperationRequest.Merge(m, src)
}
func (m *EnqueueClusterOperationRequest) XXX_Size() int {
- return xxx_messageInfo_EnqueueClusterOperationRequest.Size(m)
+ return m.Size()
}
func (m *EnqueueClusterOperationRequest) XXX_DiscardUnknown() {
xxx_messageInfo_EnqueueClusterOperationRequest.DiscardUnknown(m)
@@ -342,18 +376,26 @@ func (*EnqueueClusterOperationResponse) ProtoMessage() {}
func (*EnqueueClusterOperationResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_06e15ad07c41cb38, []int{4}
}
-
func (m *EnqueueClusterOperationResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_EnqueueClusterOperationResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *EnqueueClusterOperationResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_EnqueueClusterOperationResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_EnqueueClusterOperationResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *EnqueueClusterOperationResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_EnqueueClusterOperationResponse.Merge(m, src)
}
func (m *EnqueueClusterOperationResponse) XXX_Size() int {
- return xxx_messageInfo_EnqueueClusterOperationResponse.Size(m)
+ return m.Size()
}
func (m *EnqueueClusterOperationResponse) XXX_DiscardUnknown() {
xxx_messageInfo_EnqueueClusterOperationResponse.DiscardUnknown(m)
@@ -381,18 +423,26 @@ func (*GetClusterOperationStateRequest) ProtoMessage() {}
func (*GetClusterOperationStateRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_06e15ad07c41cb38, []int{5}
}
-
func (m *GetClusterOperationStateRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_GetClusterOperationStateRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *GetClusterOperationStateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_GetClusterOperationStateRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_GetClusterOperationStateRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *GetClusterOperationStateRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetClusterOperationStateRequest.Merge(m, src)
}
func (m *GetClusterOperationStateRequest) XXX_Size() int {
- return xxx_messageInfo_GetClusterOperationStateRequest.Size(m)
+ return m.Size()
}
func (m *GetClusterOperationStateRequest) XXX_DiscardUnknown() {
xxx_messageInfo_GetClusterOperationStateRequest.DiscardUnknown(m)
@@ -420,18 +470,26 @@ func (*GetClusterOperationStateResponse) ProtoMessage() {}
func (*GetClusterOperationStateResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_06e15ad07c41cb38, []int{6}
}
-
func (m *GetClusterOperationStateResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_GetClusterOperationStateResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *GetClusterOperationStateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_GetClusterOperationStateResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_GetClusterOperationStateResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *GetClusterOperationStateResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetClusterOperationStateResponse.Merge(m, src)
}
func (m *GetClusterOperationStateResponse) XXX_Size() int {
- return xxx_messageInfo_GetClusterOperationStateResponse.Size(m)
+ return m.Size()
}
func (m *GetClusterOperationStateResponse) XXX_DiscardUnknown() {
xxx_messageInfo_GetClusterOperationStateResponse.DiscardUnknown(m)
@@ -459,18 +517,26 @@ func (*GetClusterOperationDetailsRequest) ProtoMessage() {}
func (*GetClusterOperationDetailsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_06e15ad07c41cb38, []int{7}
}
-
func (m *GetClusterOperationDetailsRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_GetClusterOperationDetailsRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *GetClusterOperationDetailsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_GetClusterOperationDetailsRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_GetClusterOperationDetailsRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *GetClusterOperationDetailsRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetClusterOperationDetailsRequest.Merge(m, src)
}
func (m *GetClusterOperationDetailsRequest) XXX_Size() int {
- return xxx_messageInfo_GetClusterOperationDetailsRequest.Size(m)
+ return m.Size()
}
func (m *GetClusterOperationDetailsRequest) XXX_DiscardUnknown() {
xxx_messageInfo_GetClusterOperationDetailsRequest.DiscardUnknown(m)
@@ -499,18 +565,26 @@ func (*GetClusterOperationDetailsResponse) ProtoMessage() {}
func (*GetClusterOperationDetailsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_06e15ad07c41cb38, []int{8}
}
-
func (m *GetClusterOperationDetailsResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_GetClusterOperationDetailsResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *GetClusterOperationDetailsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_GetClusterOperationDetailsResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_GetClusterOperationDetailsResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *GetClusterOperationDetailsResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetClusterOperationDetailsResponse.Merge(m, src)
}
func (m *GetClusterOperationDetailsResponse) XXX_Size() int {
- return xxx_messageInfo_GetClusterOperationDetailsResponse.Size(m)
+ return m.Size()
}
func (m *GetClusterOperationDetailsResponse) XXX_DiscardUnknown() {
xxx_messageInfo_GetClusterOperationDetailsResponse.DiscardUnknown(m)
@@ -544,42 +618,1988 @@ func init() {
func init() { proto.RegisterFile("automation.proto", fileDescriptor_06e15ad07c41cb38) }
var fileDescriptor_06e15ad07c41cb38 = []byte{
- // 588 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x94, 0xdd, 0x6e, 0xd3, 0x3e,
- 0x18, 0xc6, 0xff, 0x49, 0xdb, 0xfd, 0xe9, 0x1b, 0xb6, 0x45, 0x16, 0x9b, 0xb2, 0x89, 0xb1, 0x2c,
- 0x1c, 0x50, 0x86, 0xd4, 0x8a, 0xed, 0x60, 0x68, 0x80, 0xc4, 0xd8, 0xa2, 0x69, 0x1a, 0x4a, 0x26,
- 0x37, 0x13, 0xd2, 0x38, 0xa8, 0x4c, 0x67, 0xa1, 0xd0, 0x34, 0xce, 0x6c, 0xa7, 0x52, 0x6f, 0x80,
- 0x8b, 0xe0, 0x26, 0xb8, 0x14, 0x6e, 0x09, 0xe5, 0xab, 0x4d, 0xd3, 0x0f, 0x09, 0x71, 0x66, 0xbf,
- 0x7e, 0xde, 0xe7, 0x7d, 0xfc, 0x6b, 0x1d, 0xd0, 0x49, 0x2c, 0xd9, 0x90, 0x48, 0x9f, 0x85, 0xed,
- 0x88, 0x33, 0xc9, 0x10, 0x4c, 0x2b, 0xd6, 0x2f, 0x05, 0xf4, 0xf3, 0x20, 0x16, 0x92, 0x72, 0x37,
- 0xa2, 0x3c, 0x2d, 0xa2, 0x0d, 0x50, 0xfd, 0x7b, 0x43, 0x31, 0x95, 0x56, 0x13, 0xab, 0xfe, 0x3d,
- 0x7a, 0x07, 0x8f, 0x05, 0xe5, 0x3e, 0x09, 0x7a, 0x92, 0x88, 0x81, 0x30, 0x54, 0xb3, 0xd6, 0xd2,
- 0x8e, 0x76, 0xda, 0x25, 0x67, 0x8f, 0x88, 0xc1, 0x39, 0x0b, 0x25, 0xf1, 0x43, 0xca, 0xb1, 0x96,
- 0xc9, 0x93, 0xa2, 0x40, 0x27, 0xd0, 0x10, 0x92, 0x48, 0x6a, 0xd4, 0x4c, 0xa5, 0xb5, 0x71, 0x74,
- 0x50, 0x6e, 0xab, 0x8e, 0xee, 0x26, 0x42, 0x9c, 0xe9, 0xd1, 0x13, 0x68, 0x50, 0xce, 0x19, 0x37,
- 0xea, 0x69, 0x92, 0x6c, 0x63, 0x7d, 0x87, 0xf5, 0x99, 0x61, 0xe8, 0x04, 0x36, 0x22, 0xc2, 0x49,
- 0x10, 0xd0, 0x22, 0x9f, 0x92, 0xe6, 0xd3, 0xab, 0xf9, 0xf0, 0x7a, 0xa1, 0xcb, 0x82, 0x99, 0xa0,
- 0xf5, 0x59, 0xd8, 0x8f, 0x39, 0xa7, 0x61, 0x7f, 0x6c, 0xa8, 0xa6, 0xd2, 0x6a, 0xe0, 0x72, 0xc9,
- 0xfa, 0xa1, 0x42, 0x3d, 0xd1, 0x22, 0x04, 0xf5, 0x90, 0x0c, 0x69, 0xce, 0x24, 0x5d, 0xa3, 0x0f,
- 0x00, 0x89, 0xdf, 0x90, 0x4a, 0xca, 0x0b, 0x26, 0x66, 0x75, 0x66, 0xfb, 0x66, 0x22, 0xb1, 0x43,
- 0xc9, 0xc7, 0xb8, 0xd4, 0x93, 0x73, 0xae, 0x4d, 0x38, 0xbf, 0x2a, 0x48, 0xd5, 0x53, 0x52, 0x5b,
- 0x55, 0xb3, 0x19, 0x3a, 0xdb, 0xb0, 0xc6, 0x62, 0x19, 0xc5, 0xd2, 0x68, 0xa4, 0x06, 0xf9, 0x6e,
- 0x4a, 0x6d, 0xad, 0x44, 0x6d, 0xf7, 0x3d, 0x6c, 0x56, 0x92, 0x20, 0x1d, 0x6a, 0x03, 0x3a, 0xce,
- 0xaf, 0x94, 0x2c, 0x93, 0xd6, 0x11, 0x09, 0x62, 0x9a, 0xa2, 0x68, 0xe2, 0x6c, 0x73, 0xaa, 0xbe,
- 0x51, 0xac, 0xdf, 0x0a, 0x3c, 0xb3, 0xc3, 0x87, 0x98, 0xc6, 0xb4, 0xfa, 0x93, 0x61, 0xfa, 0x10,
- 0x53, 0x21, 0x17, 0x22, 0xba, 0x5b, 0x80, 0xe8, 0xb4, 0x7c, 0xab, 0xd5, 0x9e, 0xab, 0xe0, 0xfd,
- 0xeb, 0x8d, 0x5e, 0xc3, 0xfe, 0xd2, 0xe1, 0x22, 0x62, 0xa1, 0xa0, 0xd5, 0x67, 0x90, 0xb4, 0x5c,
- 0x52, 0xb9, 0xf8, 0x2f, 0x9b, 0x43, 0xa8, 0xb6, 0x7c, 0x01, 0x73, 0x79, 0x4b, 0x3e, 0x66, 0xf2,
- 0x3e, 0x94, 0xbf, 0x7b, 0x1f, 0xd6, 0x31, 0x1c, 0x2c, 0x30, 0xbf, 0xa0, 0x92, 0xf8, 0x81, 0x58,
- 0x96, 0x88, 0x80, 0xb5, 0xaa, 0x29, 0xcf, 0xf4, 0x16, 0xa0, 0x9f, 0x49, 0x7a, 0x2c, 0x4a, 0xe1,
- 0x69, 0x47, 0x4f, 0x57, 0x05, 0xc3, 0xcd, 0x7e, 0x51, 0x39, 0xfc, 0xa9, 0xc0, 0xd6, 0xc2, 0xe0,
- 0xe8, 0x39, 0xec, 0xdf, 0x3a, 0xd7, 0x8e, 0xfb, 0xd9, 0xe9, 0x9d, 0x7f, 0xba, 0xed, 0x7a, 0x36,
- 0xee, 0xb9, 0x37, 0x36, 0x3e, 0xf3, 0xae, 0x5c, 0xa7, 0xd7, 0xf5, 0xce, 0x3c, 0x5b, 0xff, 0x0f,
- 0x1d, 0xc0, 0xde, 0xfc, 0xa1, 0xe3, 0x7a, 0x89, 0x00, 0x7b, 0xf6, 0x85, 0xae, 0xa0, 0x3d, 0xd8,
- 0x99, 0x97, 0xe0, 0x5b, 0xc7, 0xb9, 0x72, 0x2e, 0x75, 0x15, 0xed, 0xc2, 0xf6, 0xfc, 0xf1, 0x85,
- 0xeb, 0xd8, 0x7a, 0xed, 0xf0, 0x1a, 0x9a, 0x93, 0xa7, 0x84, 0xb6, 0x01, 0x15, 0x79, 0xbc, 0xb3,
- 0xee, 0xf5, 0x24, 0xc2, 0x26, 0x68, 0xb3, 0x03, 0x35, 0xf8, 0x7f, 0x6a, 0xff, 0x08, 0xea, 0x99,
- 0xd9, 0xc7, 0x97, 0x77, 0x2f, 0x46, 0xbe, 0xa4, 0x42, 0xb4, 0x7d, 0xd6, 0xc9, 0x56, 0x9d, 0x6f,
- 0xac, 0x33, 0x92, 0x9d, 0xf4, 0x4b, 0xdb, 0x99, 0x02, 0xfb, 0xba, 0x96, 0x56, 0x8e, 0xff, 0x04,
- 0x00, 0x00, 0xff, 0xff, 0xa0, 0x42, 0x72, 0x53, 0x8f, 0x05, 0x00, 0x00,
+ // 608 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x94, 0xdf, 0x4e, 0x13, 0x41,
+ 0x14, 0xc6, 0x99, 0x6d, 0x8b, 0xf6, 0x54, 0x60, 0x33, 0x11, 0x52, 0x88, 0x94, 0x65, 0xbd, 0xb0,
+ 0xc1, 0xa4, 0x8d, 0x70, 0x81, 0xa2, 0x26, 0x22, 0x6c, 0x08, 0xc1, 0xec, 0x92, 0xe9, 0x12, 0x13,
+ 0xbc, 0x68, 0xc6, 0x32, 0x31, 0x2b, 0xcb, 0xce, 0x32, 0x33, 0x4b, 0xc2, 0x0b, 0xf8, 0x0c, 0xc6,
+ 0x97, 0xf0, 0x35, 0xbc, 0xd3, 0x47, 0x30, 0xf8, 0x22, 0x66, 0xff, 0xb5, 0xcb, 0xd2, 0x36, 0x31,
+ 0xde, 0xcd, 0x9c, 0xf9, 0xce, 0x77, 0xbe, 0xf9, 0xb5, 0xb3, 0xa0, 0xd3, 0x48, 0xf1, 0x0b, 0xaa,
+ 0x3c, 0x1e, 0x74, 0x42, 0xc1, 0x15, 0xc7, 0x30, 0xaa, 0x98, 0xdf, 0x11, 0xe8, 0x7b, 0x7e, 0x24,
+ 0x15, 0x13, 0x4e, 0xc8, 0x44, 0x52, 0xc4, 0xf3, 0xa0, 0x79, 0x67, 0x4d, 0x64, 0xa0, 0x76, 0x9d,
+ 0x68, 0xde, 0x19, 0x7e, 0x05, 0x0f, 0x24, 0x13, 0x1e, 0xf5, 0xfb, 0x8a, 0xca, 0x73, 0xd9, 0xd4,
+ 0x8c, 0x4a, 0xbb, 0xb1, 0xb9, 0xdc, 0x29, 0x38, 0xbb, 0x54, 0x9e, 0xef, 0xf1, 0x40, 0x51, 0x2f,
+ 0x60, 0x82, 0x34, 0x52, 0x79, 0x5c, 0x94, 0x78, 0x1b, 0x6a, 0x52, 0x51, 0xc5, 0x9a, 0x15, 0x03,
+ 0xb5, 0xe7, 0x37, 0xd7, 0x8b, 0x6d, 0xe5, 0xd1, 0xbd, 0x58, 0x48, 0x52, 0x3d, 0x7e, 0x08, 0x35,
+ 0x26, 0x04, 0x17, 0xcd, 0x6a, 0x92, 0x24, 0xdd, 0x98, 0x9f, 0x61, 0xee, 0xd6, 0x30, 0xbc, 0x0d,
+ 0xf3, 0x21, 0x15, 0xd4, 0xf7, 0x59, 0x9e, 0x0f, 0x25, 0xf9, 0xf4, 0x72, 0x3e, 0x32, 0x97, 0xeb,
+ 0xd2, 0x60, 0x06, 0x34, 0x06, 0x3c, 0x18, 0x44, 0x42, 0xb0, 0x60, 0x70, 0xdd, 0xd4, 0x0c, 0xd4,
+ 0xae, 0x91, 0x62, 0xc9, 0xfc, 0xa2, 0x41, 0x35, 0xd6, 0x62, 0x0c, 0xd5, 0x80, 0x5e, 0xb0, 0x8c,
+ 0x49, 0xb2, 0xc6, 0x6f, 0x00, 0x62, 0xbf, 0x0b, 0xa6, 0x98, 0xc8, 0x99, 0x18, 0xe5, 0x99, 0x9d,
+ 0xe3, 0xa1, 0xc4, 0x0a, 0x94, 0xb8, 0x26, 0x85, 0x9e, 0x8c, 0x73, 0x65, 0xc8, 0xf9, 0x69, 0x4e,
+ 0xaa, 0x9a, 0x90, 0x5a, 0x2c, 0x9b, 0xdd, 0xa2, 0xb3, 0x04, 0xb3, 0x3c, 0x52, 0x61, 0xa4, 0x9a,
+ 0xb5, 0xc4, 0x20, 0xdb, 0x8d, 0xa8, 0xcd, 0x16, 0xa8, 0xad, 0xbc, 0x86, 0x85, 0x52, 0x12, 0xac,
+ 0x43, 0xe5, 0x9c, 0x5d, 0x67, 0x57, 0x8a, 0x97, 0x71, 0xeb, 0x15, 0xf5, 0x23, 0x96, 0xa0, 0xa8,
+ 0x93, 0x74, 0xb3, 0xa3, 0x3d, 0x47, 0xe6, 0x4f, 0x04, 0x2d, 0x2b, 0xb8, 0x8c, 0x58, 0xc4, 0xca,
+ 0x3f, 0x19, 0x61, 0x97, 0x11, 0x93, 0x6a, 0x2c, 0xa2, 0xd3, 0x31, 0x88, 0x76, 0x8a, 0xb7, 0x9a,
+ 0xee, 0x39, 0x0d, 0xde, 0xff, 0xde, 0xe8, 0x19, 0xac, 0x4d, 0x1c, 0x2e, 0x43, 0x1e, 0x48, 0x56,
+ 0x7e, 0x06, 0x71, 0xcb, 0x01, 0x53, 0xe3, 0xff, 0xb2, 0x19, 0x84, 0x72, 0xcb, 0x07, 0x30, 0x26,
+ 0xb7, 0x64, 0x63, 0x86, 0xef, 0x03, 0xfd, 0xdb, 0xfb, 0x30, 0xb7, 0x60, 0x7d, 0x8c, 0xf9, 0x3e,
+ 0x53, 0xd4, 0xf3, 0xe5, 0xa4, 0x44, 0x14, 0xcc, 0x69, 0x4d, 0x59, 0xa6, 0x97, 0x00, 0x83, 0x54,
+ 0xd2, 0xe7, 0x61, 0x02, 0xaf, 0xb1, 0xf9, 0x68, 0x5a, 0x30, 0x52, 0x1f, 0xe4, 0x95, 0x8d, 0x6f,
+ 0x08, 0x16, 0xc7, 0x06, 0xc7, 0x8f, 0x61, 0xed, 0xc4, 0x3e, 0xb2, 0x9d, 0xf7, 0x76, 0x7f, 0xef,
+ 0xdd, 0x49, 0xcf, 0xb5, 0x48, 0xdf, 0x39, 0xb6, 0xc8, 0xae, 0x7b, 0xe8, 0xd8, 0xfd, 0x9e, 0xbb,
+ 0xeb, 0x5a, 0xfa, 0x0c, 0x5e, 0x87, 0xd5, 0xbb, 0x87, 0xb6, 0xe3, 0xc6, 0x02, 0xe2, 0x5a, 0xfb,
+ 0x3a, 0xc2, 0xab, 0xb0, 0x7c, 0x57, 0x42, 0x4e, 0x6c, 0xfb, 0xd0, 0x3e, 0xd0, 0x35, 0xbc, 0x02,
+ 0x4b, 0x77, 0x8f, 0xf7, 0x1d, 0xdb, 0xd2, 0x2b, 0x1b, 0x47, 0x50, 0x1f, 0x3e, 0x25, 0xbc, 0x04,
+ 0x38, 0xcf, 0xe3, 0xee, 0xf6, 0x8e, 0x86, 0x11, 0x16, 0xa0, 0x71, 0x7b, 0x60, 0x03, 0xee, 0x8d,
+ 0xec, 0xef, 0x43, 0x35, 0x35, 0x7b, 0xfb, 0xe2, 0xc7, 0x4d, 0x0b, 0xfd, 0xba, 0x69, 0xa1, 0xdf,
+ 0x37, 0x2d, 0xf4, 0xf5, 0x4f, 0x6b, 0xe6, 0xf4, 0xc9, 0x95, 0xa7, 0x98, 0x94, 0x1d, 0x8f, 0x77,
+ 0xd3, 0x55, 0xf7, 0x13, 0xef, 0x5e, 0xa9, 0x6e, 0xf2, 0xe5, 0xed, 0x8e, 0x00, 0x7e, 0x9c, 0x4d,
+ 0x2a, 0x5b, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x8c, 0x32, 0x88, 0xdc, 0x9f, 0x05, 0x00, 0x00,
+}
+
+func (m *ClusterOperation) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ClusterOperation) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ClusterOperation) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Error) > 0 {
+ i -= len(m.Error)
+ copy(dAtA[i:], m.Error)
+ i = encodeVarintAutomation(dAtA, i, uint64(len(m.Error)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.State != 0 {
+ i = encodeVarintAutomation(dAtA, i, uint64(m.State))
+ i--
+ dAtA[i] = 0x18
+ }
+ if len(m.SerialTasks) > 0 {
+ for iNdEx := len(m.SerialTasks) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.SerialTasks[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintAutomation(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Id) > 0 {
+ i -= len(m.Id)
+ copy(dAtA[i:], m.Id)
+ i = encodeVarintAutomation(dAtA, i, uint64(len(m.Id)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *TaskContainer) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *TaskContainer) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *TaskContainer) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Concurrency != 0 {
+ i = encodeVarintAutomation(dAtA, i, uint64(m.Concurrency))
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.ParallelTasks) > 0 {
+ for iNdEx := len(m.ParallelTasks) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.ParallelTasks[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintAutomation(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Task) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Task) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Task) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Error) > 0 {
+ i -= len(m.Error)
+ copy(dAtA[i:], m.Error)
+ i = encodeVarintAutomation(dAtA, i, uint64(len(m.Error)))
+ i--
+ dAtA[i] = 0x32
+ }
+ if len(m.Output) > 0 {
+ i -= len(m.Output)
+ copy(dAtA[i:], m.Output)
+ i = encodeVarintAutomation(dAtA, i, uint64(len(m.Output)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if m.State != 0 {
+ i = encodeVarintAutomation(dAtA, i, uint64(m.State))
+ i--
+ dAtA[i] = 0x20
+ }
+ if len(m.Id) > 0 {
+ i -= len(m.Id)
+ copy(dAtA[i:], m.Id)
+ i = encodeVarintAutomation(dAtA, i, uint64(len(m.Id)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Parameters) > 0 {
+ for k := range m.Parameters {
+ v := m.Parameters[k]
+ baseI := i
+ i -= len(v)
+ copy(dAtA[i:], v)
+ i = encodeVarintAutomation(dAtA, i, uint64(len(v)))
+ i--
+ dAtA[i] = 0x12
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintAutomation(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintAutomation(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = encodeVarintAutomation(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *EnqueueClusterOperationRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *EnqueueClusterOperationRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *EnqueueClusterOperationRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Parameters) > 0 {
+ for k := range m.Parameters {
+ v := m.Parameters[k]
+ baseI := i
+ i -= len(v)
+ copy(dAtA[i:], v)
+ i = encodeVarintAutomation(dAtA, i, uint64(len(v)))
+ i--
+ dAtA[i] = 0x12
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintAutomation(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintAutomation(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = encodeVarintAutomation(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *EnqueueClusterOperationResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *EnqueueClusterOperationResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *EnqueueClusterOperationResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Id) > 0 {
+ i -= len(m.Id)
+ copy(dAtA[i:], m.Id)
+ i = encodeVarintAutomation(dAtA, i, uint64(len(m.Id)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetClusterOperationStateRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetClusterOperationStateRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetClusterOperationStateRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Id) > 0 {
+ i -= len(m.Id)
+ copy(dAtA[i:], m.Id)
+ i = encodeVarintAutomation(dAtA, i, uint64(len(m.Id)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetClusterOperationStateResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetClusterOperationStateResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetClusterOperationStateResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.State != 0 {
+ i = encodeVarintAutomation(dAtA, i, uint64(m.State))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetClusterOperationDetailsRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetClusterOperationDetailsRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetClusterOperationDetailsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Id) > 0 {
+ i -= len(m.Id)
+ copy(dAtA[i:], m.Id)
+ i = encodeVarintAutomation(dAtA, i, uint64(len(m.Id)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetClusterOperationDetailsResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetClusterOperationDetailsResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetClusterOperationDetailsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.ClusterOp != nil {
+ {
+ size, err := m.ClusterOp.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintAutomation(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ return len(dAtA) - i, nil
+}
+
+func encodeVarintAutomation(dAtA []byte, offset int, v uint64) int {
+ offset -= sovAutomation(v)
+ base := offset
+ for v >= 1<<7 {
+ dAtA[offset] = uint8(v&0x7f | 0x80)
+ v >>= 7
+ offset++
+ }
+ dAtA[offset] = uint8(v)
+ return base
+}
+func (m *ClusterOperation) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Id)
+ if l > 0 {
+ n += 1 + l + sovAutomation(uint64(l))
+ }
+ if len(m.SerialTasks) > 0 {
+ for _, e := range m.SerialTasks {
+ l = e.Size()
+ n += 1 + l + sovAutomation(uint64(l))
+ }
+ }
+ if m.State != 0 {
+ n += 1 + sovAutomation(uint64(m.State))
+ }
+ l = len(m.Error)
+ if l > 0 {
+ n += 1 + l + sovAutomation(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *TaskContainer) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.ParallelTasks) > 0 {
+ for _, e := range m.ParallelTasks {
+ l = e.Size()
+ n += 1 + l + sovAutomation(uint64(l))
+ }
+ }
+ if m.Concurrency != 0 {
+ n += 1 + sovAutomation(uint64(m.Concurrency))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Task) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovAutomation(uint64(l))
+ }
+ if len(m.Parameters) > 0 {
+ for k, v := range m.Parameters {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovAutomation(uint64(len(k))) + 1 + len(v) + sovAutomation(uint64(len(v)))
+ n += mapEntrySize + 1 + sovAutomation(uint64(mapEntrySize))
+ }
+ }
+ l = len(m.Id)
+ if l > 0 {
+ n += 1 + l + sovAutomation(uint64(l))
+ }
+ if m.State != 0 {
+ n += 1 + sovAutomation(uint64(m.State))
+ }
+ l = len(m.Output)
+ if l > 0 {
+ n += 1 + l + sovAutomation(uint64(l))
+ }
+ l = len(m.Error)
+ if l > 0 {
+ n += 1 + l + sovAutomation(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *EnqueueClusterOperationRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovAutomation(uint64(l))
+ }
+ if len(m.Parameters) > 0 {
+ for k, v := range m.Parameters {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovAutomation(uint64(len(k))) + 1 + len(v) + sovAutomation(uint64(len(v)))
+ n += mapEntrySize + 1 + sovAutomation(uint64(mapEntrySize))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *EnqueueClusterOperationResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Id)
+ if l > 0 {
+ n += 1 + l + sovAutomation(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetClusterOperationStateRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Id)
+ if l > 0 {
+ n += 1 + l + sovAutomation(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetClusterOperationStateResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.State != 0 {
+ n += 1 + sovAutomation(uint64(m.State))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetClusterOperationDetailsRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Id)
+ if l > 0 {
+ n += 1 + l + sovAutomation(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
}
+
+func (m *GetClusterOperationDetailsResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.ClusterOp != nil {
+ l = m.ClusterOp.Size()
+ n += 1 + l + sovAutomation(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func sovAutomation(x uint64) (n int) {
+ return (math_bits.Len64(x|1) + 6) / 7
+}
+func sozAutomation(x uint64) (n int) {
+ return sovAutomation(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+}
+func (m *ClusterOperation) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ClusterOperation: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ClusterOperation: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Id = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SerialTasks", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.SerialTasks = append(m.SerialTasks, &TaskContainer{})
+ if err := m.SerialTasks[len(m.SerialTasks)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field State", wireType)
+ }
+ m.State = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.State |= ClusterOperationState(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Error = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipAutomation(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *TaskContainer) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: TaskContainer: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: TaskContainer: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ParallelTasks", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ParallelTasks = append(m.ParallelTasks, &Task{})
+ if err := m.ParallelTasks[len(m.ParallelTasks)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Concurrency", wireType)
+ }
+ m.Concurrency = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Concurrency |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipAutomation(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Task) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Task: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Task: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Parameters", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Parameters == nil {
+ m.Parameters = make(map[string]string)
+ }
+ var mapkey string
+ var mapvalue string
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipAutomation(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.Parameters[mapkey] = mapvalue
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Id = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field State", wireType)
+ }
+ m.State = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.State |= TaskState(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Output", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Output = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Error = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipAutomation(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *EnqueueClusterOperationRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: EnqueueClusterOperationRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: EnqueueClusterOperationRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Parameters", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Parameters == nil {
+ m.Parameters = make(map[string]string)
+ }
+ var mapkey string
+ var mapvalue string
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipAutomation(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.Parameters[mapkey] = mapvalue
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipAutomation(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *EnqueueClusterOperationResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: EnqueueClusterOperationResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: EnqueueClusterOperationResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Id = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipAutomation(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetClusterOperationStateRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetClusterOperationStateRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetClusterOperationStateRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Id = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipAutomation(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetClusterOperationStateResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetClusterOperationStateResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetClusterOperationStateResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field State", wireType)
+ }
+ m.State = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.State |= ClusterOperationState(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipAutomation(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetClusterOperationDetailsRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetClusterOperationDetailsRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetClusterOperationDetailsRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Id = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipAutomation(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetClusterOperationDetailsResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetClusterOperationDetailsResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetClusterOperationDetailsResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ClusterOp", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ClusterOp == nil {
+ m.ClusterOp = &ClusterOperation{}
+ }
+ if err := m.ClusterOp.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipAutomation(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthAutomation
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func skipAutomation(dAtA []byte) (n int, err error) {
+ l := len(dAtA)
+ iNdEx := 0
+ depth := 0
+ for iNdEx < l {
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ wireType := int(wire & 0x7)
+ switch wireType {
+ case 0:
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ iNdEx++
+ if dAtA[iNdEx-1] < 0x80 {
+ break
+ }
+ }
+ case 1:
+ iNdEx += 8
+ case 2:
+ var length int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowAutomation
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ length |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if length < 0 {
+ return 0, ErrInvalidLengthAutomation
+ }
+ iNdEx += length
+ case 3:
+ depth++
+ case 4:
+ if depth == 0 {
+ return 0, ErrUnexpectedEndOfGroupAutomation
+ }
+ depth--
+ case 5:
+ iNdEx += 4
+ default:
+ return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
+ }
+ if iNdEx < 0 {
+ return 0, ErrInvalidLengthAutomation
+ }
+ if depth == 0 {
+ return iNdEx, nil
+ }
+ }
+ return 0, io.ErrUnexpectedEOF
+}
+
+var (
+ ErrInvalidLengthAutomation = fmt.Errorf("proto: negative length found during unmarshaling")
+ ErrIntOverflowAutomation = fmt.Errorf("proto: integer overflow")
+ ErrUnexpectedEndOfGroupAutomation = fmt.Errorf("proto: unexpected end of group")
+)
diff --git a/go/vt/proto/automationservice/automationservice.pb.go b/go/vt/proto/automationservice/automationservice.pb.go
index 2dc222239ce..83c99fd2190 100644
--- a/go/vt/proto/automationservice/automationservice.pb.go
+++ b/go/vt/proto/automationservice/automationservice.pb.go
@@ -1,4 +1,4 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: automationservice.proto
package automationservice
@@ -12,7 +12,6 @@ import (
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
-
automation "vitess.io/vitess/go/vt/proto/automation"
)
@@ -30,7 +29,7 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
func init() { proto.RegisterFile("automationservice.proto", fileDescriptor_c03abdd2a71b5164) }
var fileDescriptor_c03abdd2a71b5164 = []byte{
- // 178 bytes of a gzipped FileDescriptorProto
+ // 195 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4f, 0x2c, 0x2d, 0xc9,
0xcf, 0x4d, 0x2c, 0xc9, 0xcc, 0xcf, 0x2b, 0x4e, 0x2d, 0x2a, 0xcb, 0x4c, 0x4e, 0xd5, 0x2b, 0x28,
0xca, 0x2f, 0xc9, 0x17, 0x12, 0xc4, 0x90, 0x90, 0x12, 0x40, 0x08, 0x41, 0x14, 0x19, 0x35, 0x32,
@@ -39,10 +38,11 @@ var fileDescriptor_c03abdd2a71b5164 = []byte{
0x9a, 0x71, 0x28, 0x0a, 0x4a, 0x2d, 0x2c, 0x4d, 0x2d, 0x2e, 0x91, 0xd2, 0x26, 0x4a, 0x6d, 0x71,
0x01, 0xc8, 0x65, 0x4a, 0x0c, 0x42, 0xb5, 0x5c, 0x52, 0xee, 0xa9, 0x25, 0xe8, 0x0a, 0x5c, 0x52,
0x4b, 0x12, 0x33, 0x73, 0x8a, 0x85, 0x74, 0x91, 0x0d, 0xc3, 0xad, 0x0e, 0x66, 0xb7, 0x1e, 0xb1,
- 0xca, 0x61, 0xd6, 0x3b, 0x19, 0x44, 0xe9, 0x95, 0x65, 0x96, 0xa4, 0x16, 0x17, 0xeb, 0x65, 0xe6,
- 0xeb, 0x43, 0x58, 0xfa, 0xe9, 0xf9, 0xfa, 0x65, 0x25, 0xfa, 0xe0, 0x30, 0xd2, 0xc7, 0x08, 0xc7,
- 0x24, 0x36, 0xb0, 0x84, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x8f, 0x4a, 0x9d, 0xc0, 0x7c, 0x01,
- 0x00, 0x00,
+ 0xca, 0x61, 0xd6, 0x3b, 0x39, 0x9c, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47,
+ 0x72, 0x8c, 0x33, 0x1e, 0xcb, 0x31, 0x44, 0xe9, 0x95, 0x65, 0x96, 0xa4, 0x16, 0x17, 0xeb, 0x65,
+ 0xe6, 0xeb, 0x43, 0x58, 0xfa, 0xe9, 0xf9, 0xfa, 0x65, 0x25, 0xfa, 0xe0, 0x30, 0xd3, 0xc7, 0x08,
+ 0xd7, 0x24, 0x36, 0xb0, 0x84, 0x31, 0x20, 0x00, 0x00, 0xff, 0xff, 0x22, 0x2e, 0x47, 0x89, 0x8c,
+ 0x01, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
diff --git a/go/vt/proto/binlogdata/binlogdata.pb.go b/go/vt/proto/binlogdata/binlogdata.pb.go
index eab38ace6dc..5d69cff8afd 100644
--- a/go/vt/proto/binlogdata/binlogdata.pb.go
+++ b/go/vt/proto/binlogdata/binlogdata.pb.go
@@ -1,14 +1,15 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: binlogdata.proto
package binlogdata
import (
fmt "fmt"
+ io "io"
math "math"
+ math_bits "math/bits"
proto "github.com/golang/protobuf/proto"
-
query "vitess.io/vitess/go/vt/proto/query"
topodata "vitess.io/vitess/go/vt/proto/topodata"
vtrpc "vitess.io/vitess/go/vt/proto/vtrpc"
@@ -266,18 +267,26 @@ func (*Charset) ProtoMessage() {}
func (*Charset) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{0}
}
-
func (m *Charset) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Charset.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Charset) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Charset.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Charset.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Charset) XXX_Merge(src proto.Message) {
xxx_messageInfo_Charset.Merge(m, src)
}
func (m *Charset) XXX_Size() int {
- return xxx_messageInfo_Charset.Size(m)
+ return m.Size()
}
func (m *Charset) XXX_DiscardUnknown() {
xxx_messageInfo_Charset.DiscardUnknown(m)
@@ -324,18 +333,26 @@ func (*BinlogTransaction) ProtoMessage() {}
func (*BinlogTransaction) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{1}
}
-
func (m *BinlogTransaction) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_BinlogTransaction.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *BinlogTransaction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_BinlogTransaction.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_BinlogTransaction.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *BinlogTransaction) XXX_Merge(src proto.Message) {
xxx_messageInfo_BinlogTransaction.Merge(m, src)
}
func (m *BinlogTransaction) XXX_Size() int {
- return xxx_messageInfo_BinlogTransaction.Size(m)
+ return m.Size()
}
func (m *BinlogTransaction) XXX_DiscardUnknown() {
xxx_messageInfo_BinlogTransaction.DiscardUnknown(m)
@@ -375,18 +392,26 @@ func (*BinlogTransaction_Statement) ProtoMessage() {}
func (*BinlogTransaction_Statement) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{1, 0}
}
-
func (m *BinlogTransaction_Statement) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_BinlogTransaction_Statement.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *BinlogTransaction_Statement) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_BinlogTransaction_Statement.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_BinlogTransaction_Statement.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *BinlogTransaction_Statement) XXX_Merge(src proto.Message) {
xxx_messageInfo_BinlogTransaction_Statement.Merge(m, src)
}
func (m *BinlogTransaction_Statement) XXX_Size() int {
- return xxx_messageInfo_BinlogTransaction_Statement.Size(m)
+ return m.Size()
}
func (m *BinlogTransaction_Statement) XXX_DiscardUnknown() {
xxx_messageInfo_BinlogTransaction_Statement.DiscardUnknown(m)
@@ -434,18 +459,26 @@ func (*StreamKeyRangeRequest) ProtoMessage() {}
func (*StreamKeyRangeRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{2}
}
-
func (m *StreamKeyRangeRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StreamKeyRangeRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *StreamKeyRangeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StreamKeyRangeRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_StreamKeyRangeRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *StreamKeyRangeRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_StreamKeyRangeRequest.Merge(m, src)
}
func (m *StreamKeyRangeRequest) XXX_Size() int {
- return xxx_messageInfo_StreamKeyRangeRequest.Size(m)
+ return m.Size()
}
func (m *StreamKeyRangeRequest) XXX_DiscardUnknown() {
xxx_messageInfo_StreamKeyRangeRequest.DiscardUnknown(m)
@@ -488,18 +521,26 @@ func (*StreamKeyRangeResponse) ProtoMessage() {}
func (*StreamKeyRangeResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{3}
}
-
func (m *StreamKeyRangeResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StreamKeyRangeResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *StreamKeyRangeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StreamKeyRangeResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_StreamKeyRangeResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *StreamKeyRangeResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_StreamKeyRangeResponse.Merge(m, src)
}
func (m *StreamKeyRangeResponse) XXX_Size() int {
- return xxx_messageInfo_StreamKeyRangeResponse.Size(m)
+ return m.Size()
}
func (m *StreamKeyRangeResponse) XXX_DiscardUnknown() {
xxx_messageInfo_StreamKeyRangeResponse.DiscardUnknown(m)
@@ -533,18 +574,26 @@ func (*StreamTablesRequest) ProtoMessage() {}
func (*StreamTablesRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{4}
}
-
func (m *StreamTablesRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StreamTablesRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *StreamTablesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StreamTablesRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_StreamTablesRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *StreamTablesRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_StreamTablesRequest.Merge(m, src)
}
func (m *StreamTablesRequest) XXX_Size() int {
- return xxx_messageInfo_StreamTablesRequest.Size(m)
+ return m.Size()
}
func (m *StreamTablesRequest) XXX_DiscardUnknown() {
xxx_messageInfo_StreamTablesRequest.DiscardUnknown(m)
@@ -587,18 +636,26 @@ func (*StreamTablesResponse) ProtoMessage() {}
func (*StreamTablesResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{5}
}
-
func (m *StreamTablesResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StreamTablesResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *StreamTablesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StreamTablesResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_StreamTablesResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *StreamTablesResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_StreamTablesResponse.Merge(m, src)
}
func (m *StreamTablesResponse) XXX_Size() int {
- return xxx_messageInfo_StreamTablesResponse.Size(m)
+ return m.Size()
}
func (m *StreamTablesResponse) XXX_DiscardUnknown() {
xxx_messageInfo_StreamTablesResponse.DiscardUnknown(m)
@@ -647,18 +704,26 @@ func (*Rule) ProtoMessage() {}
func (*Rule) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{6}
}
-
func (m *Rule) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Rule.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Rule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Rule.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Rule.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Rule) XXX_Merge(src proto.Message) {
xxx_messageInfo_Rule.Merge(m, src)
}
func (m *Rule) XXX_Size() int {
- return xxx_messageInfo_Rule.Size(m)
+ return m.Size()
}
func (m *Rule) XXX_DiscardUnknown() {
xxx_messageInfo_Rule.DiscardUnknown(m)
@@ -704,18 +769,26 @@ func (*Filter) ProtoMessage() {}
func (*Filter) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{7}
}
-
func (m *Filter) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Filter.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Filter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Filter.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Filter.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Filter) XXX_Merge(src proto.Message) {
xxx_messageInfo_Filter.Merge(m, src)
}
func (m *Filter) XXX_Size() int {
- return xxx_messageInfo_Filter.Size(m)
+ return m.Size()
}
func (m *Filter) XXX_DiscardUnknown() {
xxx_messageInfo_Filter.DiscardUnknown(m)
@@ -761,7 +834,10 @@ type BinlogSource struct {
ExternalMysql string `protobuf:"bytes,8,opt,name=external_mysql,json=externalMysql,proto3" json:"external_mysql,omitempty"`
// StopAfterCopy specifies if vreplication should be stopped
// after copying is done.
- StopAfterCopy bool `protobuf:"varint,9,opt,name=stop_after_copy,json=stopAfterCopy,proto3" json:"stop_after_copy,omitempty"`
+ StopAfterCopy bool `protobuf:"varint,9,opt,name=stop_after_copy,json=stopAfterCopy,proto3" json:"stop_after_copy,omitempty"`
+ // ExternalCluster is the name of the mounted cluster which has the source keyspace/db for this workflow
+ // it is of the type
+ ExternalCluster string `protobuf:"bytes,10,opt,name=external_cluster,json=externalCluster,proto3" json:"external_cluster,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@@ -773,18 +849,26 @@ func (*BinlogSource) ProtoMessage() {}
func (*BinlogSource) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{8}
}
-
func (m *BinlogSource) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_BinlogSource.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *BinlogSource) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_BinlogSource.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_BinlogSource.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *BinlogSource) XXX_Merge(src proto.Message) {
xxx_messageInfo_BinlogSource.Merge(m, src)
}
func (m *BinlogSource) XXX_Size() int {
- return xxx_messageInfo_BinlogSource.Size(m)
+ return m.Size()
}
func (m *BinlogSource) XXX_DiscardUnknown() {
xxx_messageInfo_BinlogSource.DiscardUnknown(m)
@@ -855,6 +939,13 @@ func (m *BinlogSource) GetStopAfterCopy() bool {
return false
}
+func (m *BinlogSource) GetExternalCluster() string {
+ if m != nil {
+ return m.ExternalCluster
+ }
+ return ""
+}
+
// RowChange represents one row change.
// If Before is set and not After, it's a delete.
// If After is set and not Before, it's an insert.
@@ -873,18 +964,26 @@ func (*RowChange) ProtoMessage() {}
func (*RowChange) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{9}
}
-
func (m *RowChange) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_RowChange.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *RowChange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_RowChange.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_RowChange.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *RowChange) XXX_Merge(src proto.Message) {
xxx_messageInfo_RowChange.Merge(m, src)
}
func (m *RowChange) XXX_Size() int {
- return xxx_messageInfo_RowChange.Size(m)
+ return m.Size()
}
func (m *RowChange) XXX_DiscardUnknown() {
xxx_messageInfo_RowChange.DiscardUnknown(m)
@@ -921,18 +1020,26 @@ func (*RowEvent) ProtoMessage() {}
func (*RowEvent) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{10}
}
-
func (m *RowEvent) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_RowEvent.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *RowEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_RowEvent.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_RowEvent.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *RowEvent) XXX_Merge(src proto.Message) {
xxx_messageInfo_RowEvent.Merge(m, src)
}
func (m *RowEvent) XXX_Size() int {
- return xxx_messageInfo_RowEvent.Size(m)
+ return m.Size()
}
func (m *RowEvent) XXX_DiscardUnknown() {
xxx_messageInfo_RowEvent.DiscardUnknown(m)
@@ -969,18 +1076,26 @@ func (*FieldEvent) ProtoMessage() {}
func (*FieldEvent) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{11}
}
-
func (m *FieldEvent) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_FieldEvent.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *FieldEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_FieldEvent.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_FieldEvent.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *FieldEvent) XXX_Merge(src proto.Message) {
xxx_messageInfo_FieldEvent.Merge(m, src)
}
func (m *FieldEvent) XXX_Size() int {
- return xxx_messageInfo_FieldEvent.Size(m)
+ return m.Size()
}
func (m *FieldEvent) XXX_DiscardUnknown() {
xxx_messageInfo_FieldEvent.DiscardUnknown(m)
@@ -1023,18 +1138,26 @@ func (*ShardGtid) ProtoMessage() {}
func (*ShardGtid) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{12}
}
-
func (m *ShardGtid) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ShardGtid.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ShardGtid) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ShardGtid.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ShardGtid.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ShardGtid) XXX_Merge(src proto.Message) {
xxx_messageInfo_ShardGtid.Merge(m, src)
}
func (m *ShardGtid) XXX_Size() int {
- return xxx_messageInfo_ShardGtid.Size(m)
+ return m.Size()
}
func (m *ShardGtid) XXX_DiscardUnknown() {
xxx_messageInfo_ShardGtid.DiscardUnknown(m)
@@ -1084,18 +1207,26 @@ func (*VGtid) ProtoMessage() {}
func (*VGtid) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{13}
}
-
func (m *VGtid) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_VGtid.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *VGtid) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_VGtid.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_VGtid.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *VGtid) XXX_Merge(src proto.Message) {
xxx_messageInfo_VGtid.Merge(m, src)
}
func (m *VGtid) XXX_Size() int {
- return xxx_messageInfo_VGtid.Size(m)
+ return m.Size()
}
func (m *VGtid) XXX_DiscardUnknown() {
xxx_messageInfo_VGtid.DiscardUnknown(m)
@@ -1125,18 +1256,26 @@ func (*KeyspaceShard) ProtoMessage() {}
func (*KeyspaceShard) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{14}
}
-
func (m *KeyspaceShard) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_KeyspaceShard.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *KeyspaceShard) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_KeyspaceShard.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_KeyspaceShard.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *KeyspaceShard) XXX_Merge(src proto.Message) {
xxx_messageInfo_KeyspaceShard.Merge(m, src)
}
func (m *KeyspaceShard) XXX_Size() int {
- return xxx_messageInfo_KeyspaceShard.Size(m)
+ return m.Size()
}
func (m *KeyspaceShard) XXX_DiscardUnknown() {
xxx_messageInfo_KeyspaceShard.DiscardUnknown(m)
@@ -1195,18 +1334,26 @@ func (*Journal) ProtoMessage() {}
func (*Journal) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{15}
}
-
func (m *Journal) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Journal.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Journal) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Journal.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Journal.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Journal) XXX_Merge(src proto.Message) {
xxx_messageInfo_Journal.Merge(m, src)
}
func (m *Journal) XXX_Size() int {
- return xxx_messageInfo_Journal.Size(m)
+ return m.Size()
}
func (m *Journal) XXX_DiscardUnknown() {
xxx_messageInfo_Journal.DiscardUnknown(m)
@@ -1307,18 +1454,26 @@ func (*VEvent) ProtoMessage() {}
func (*VEvent) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{16}
}
-
func (m *VEvent) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_VEvent.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *VEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_VEvent.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_VEvent.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *VEvent) XXX_Merge(src proto.Message) {
xxx_messageInfo_VEvent.Merge(m, src)
}
func (m *VEvent) XXX_Size() int {
- return xxx_messageInfo_VEvent.Size(m)
+ return m.Size()
}
func (m *VEvent) XXX_DiscardUnknown() {
xxx_messageInfo_VEvent.DiscardUnknown(m)
@@ -1418,18 +1573,26 @@ func (*MinimalTable) ProtoMessage() {}
func (*MinimalTable) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{17}
}
-
func (m *MinimalTable) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_MinimalTable.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *MinimalTable) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_MinimalTable.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_MinimalTable.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *MinimalTable) XXX_Merge(src proto.Message) {
xxx_messageInfo_MinimalTable.Merge(m, src)
}
func (m *MinimalTable) XXX_Size() int {
- return xxx_messageInfo_MinimalTable.Size(m)
+ return m.Size()
}
func (m *MinimalTable) XXX_DiscardUnknown() {
xxx_messageInfo_MinimalTable.DiscardUnknown(m)
@@ -1471,18 +1634,26 @@ func (*MinimalSchema) ProtoMessage() {}
func (*MinimalSchema) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{18}
}
-
func (m *MinimalSchema) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_MinimalSchema.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *MinimalSchema) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_MinimalSchema.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_MinimalSchema.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *MinimalSchema) XXX_Merge(src proto.Message) {
xxx_messageInfo_MinimalSchema.Merge(m, src)
}
func (m *MinimalSchema) XXX_Size() int {
- return xxx_messageInfo_MinimalSchema.Size(m)
+ return m.Size()
}
func (m *MinimalSchema) XXX_DiscardUnknown() {
xxx_messageInfo_MinimalSchema.DiscardUnknown(m)
@@ -1516,18 +1687,26 @@ func (*VStreamRequest) ProtoMessage() {}
func (*VStreamRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{19}
}
-
func (m *VStreamRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_VStreamRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *VStreamRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_VStreamRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_VStreamRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *VStreamRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_VStreamRequest.Merge(m, src)
}
func (m *VStreamRequest) XXX_Size() int {
- return xxx_messageInfo_VStreamRequest.Size(m)
+ return m.Size()
}
func (m *VStreamRequest) XXX_DiscardUnknown() {
xxx_messageInfo_VStreamRequest.DiscardUnknown(m)
@@ -1591,18 +1770,26 @@ func (*VStreamResponse) ProtoMessage() {}
func (*VStreamResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{20}
}
-
func (m *VStreamResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_VStreamResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *VStreamResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_VStreamResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_VStreamResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *VStreamResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_VStreamResponse.Merge(m, src)
}
func (m *VStreamResponse) XXX_Size() int {
- return xxx_messageInfo_VStreamResponse.Size(m)
+ return m.Size()
}
func (m *VStreamResponse) XXX_DiscardUnknown() {
xxx_messageInfo_VStreamResponse.DiscardUnknown(m)
@@ -1635,18 +1822,26 @@ func (*VStreamRowsRequest) ProtoMessage() {}
func (*VStreamRowsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{21}
}
-
func (m *VStreamRowsRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_VStreamRowsRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *VStreamRowsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_VStreamRowsRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_VStreamRowsRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *VStreamRowsRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_VStreamRowsRequest.Merge(m, src)
}
func (m *VStreamRowsRequest) XXX_Size() int {
- return xxx_messageInfo_VStreamRowsRequest.Size(m)
+ return m.Size()
}
func (m *VStreamRowsRequest) XXX_DiscardUnknown() {
xxx_messageInfo_VStreamRowsRequest.DiscardUnknown(m)
@@ -1707,18 +1902,26 @@ func (*VStreamRowsResponse) ProtoMessage() {}
func (*VStreamRowsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{22}
}
-
func (m *VStreamRowsResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_VStreamRowsResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *VStreamRowsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_VStreamRowsResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_VStreamRowsResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *VStreamRowsResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_VStreamRowsResponse.Merge(m, src)
}
func (m *VStreamRowsResponse) XXX_Size() int {
- return xxx_messageInfo_VStreamRowsResponse.Size(m)
+ return m.Size()
}
func (m *VStreamRowsResponse) XXX_DiscardUnknown() {
xxx_messageInfo_VStreamRowsResponse.DiscardUnknown(m)
@@ -1775,18 +1978,26 @@ func (*LastPKEvent) ProtoMessage() {}
func (*LastPKEvent) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{23}
}
-
func (m *LastPKEvent) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_LastPKEvent.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *LastPKEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_LastPKEvent.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_LastPKEvent.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *LastPKEvent) XXX_Merge(src proto.Message) {
xxx_messageInfo_LastPKEvent.Merge(m, src)
}
func (m *LastPKEvent) XXX_Size() int {
- return xxx_messageInfo_LastPKEvent.Size(m)
+ return m.Size()
}
func (m *LastPKEvent) XXX_DiscardUnknown() {
xxx_messageInfo_LastPKEvent.DiscardUnknown(m)
@@ -1822,18 +2033,26 @@ func (*TableLastPK) ProtoMessage() {}
func (*TableLastPK) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{24}
}
-
func (m *TableLastPK) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_TableLastPK.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *TableLastPK) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_TableLastPK.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_TableLastPK.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *TableLastPK) XXX_Merge(src proto.Message) {
xxx_messageInfo_TableLastPK.Merge(m, src)
}
func (m *TableLastPK) XXX_Size() int {
- return xxx_messageInfo_TableLastPK.Size(m)
+ return m.Size()
}
func (m *TableLastPK) XXX_DiscardUnknown() {
xxx_messageInfo_TableLastPK.DiscardUnknown(m)
@@ -1874,18 +2093,26 @@ func (*VStreamResultsRequest) ProtoMessage() {}
func (*VStreamResultsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{25}
}
-
func (m *VStreamResultsRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_VStreamResultsRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *VStreamResultsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_VStreamResultsRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_VStreamResultsRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *VStreamResultsRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_VStreamResultsRequest.Merge(m, src)
}
func (m *VStreamResultsRequest) XXX_Size() int {
- return xxx_messageInfo_VStreamResultsRequest.Size(m)
+ return m.Size()
}
func (m *VStreamResultsRequest) XXX_DiscardUnknown() {
xxx_messageInfo_VStreamResultsRequest.DiscardUnknown(m)
@@ -1938,18 +2165,26 @@ func (*VStreamResultsResponse) ProtoMessage() {}
func (*VStreamResultsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_5fd02bcb2e350dad, []int{26}
}
-
func (m *VStreamResultsResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_VStreamResultsResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *VStreamResultsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_VStreamResultsResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_VStreamResultsResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *VStreamResultsResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_VStreamResultsResponse.Merge(m, src)
}
func (m *VStreamResultsResponse) XXX_Size() int {
- return xxx_messageInfo_VStreamResultsResponse.Size(m)
+ return m.Size()
}
func (m *VStreamResultsResponse) XXX_DiscardUnknown() {
xxx_messageInfo_VStreamResultsResponse.DiscardUnknown(m)
@@ -2017,125 +2252,7159 @@ func init() {
func init() { proto.RegisterFile("binlogdata.proto", fileDescriptor_5fd02bcb2e350dad) }
var fileDescriptor_5fd02bcb2e350dad = []byte{
- // 1914 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0x4b, 0x73, 0xe3, 0xc6,
- 0x11, 0x5e, 0xbe, 0xc9, 0x06, 0x45, 0x41, 0xa3, 0x47, 0x98, 0x2d, 0xdb, 0x25, 0xa3, 0xb2, 0x5e,
- 0x59, 0x55, 0xa1, 0x1c, 0x26, 0xde, 0x5c, 0x62, 0x3b, 0x7c, 0x60, 0xb5, 0x5c, 0xf1, 0xa1, 0x1d,
- 0x62, 0xb5, 0x2e, 0x5f, 0x50, 0x58, 0x70, 0x24, 0x21, 0x02, 0x08, 0x2c, 0x30, 0x94, 0xcc, 0x1f,
- 0x90, 0xaa, 0xdc, 0xf3, 0x2b, 0x72, 0xce, 0x31, 0xc9, 0x35, 0xf9, 0x13, 0xb9, 0xe6, 0x94, 0x5f,
- 0x90, 0x5b, 0x6a, 0x1e, 0x78, 0x69, 0xed, 0x95, 0xd6, 0x55, 0x39, 0xc4, 0x17, 0xd6, 0x4c, 0x4f,
- 0x77, 0x4f, 0xbf, 0xbe, 0x46, 0x73, 0x40, 0x7d, 0xed, 0x2c, 0x5d, 0xff, 0x62, 0x61, 0x51, 0xab,
- 0x13, 0x84, 0x3e, 0xf5, 0x11, 0xa4, 0x94, 0x87, 0xca, 0x35, 0x0d, 0x03, 0x5b, 0x1c, 0x3c, 0x54,
- 0xde, 0xac, 0x48, 0xb8, 0x96, 0x9b, 0x16, 0xf5, 0x03, 0x3f, 0x95, 0xd2, 0x26, 0x50, 0x1b, 0x5c,
- 0x5a, 0x61, 0x44, 0x28, 0xda, 0x83, 0xaa, 0xed, 0x3a, 0x64, 0x49, 0xdb, 0x85, 0xfd, 0xc2, 0x41,
- 0x05, 0xcb, 0x1d, 0x42, 0x50, 0xb6, 0xfd, 0xe5, 0xb2, 0x5d, 0xe4, 0x54, 0xbe, 0x66, 0xbc, 0x11,
- 0x09, 0xaf, 0x49, 0xd8, 0x2e, 0x09, 0x5e, 0xb1, 0xd3, 0xfe, 0x55, 0x82, 0xad, 0x3e, 0xb7, 0xc3,
- 0x08, 0xad, 0x65, 0x64, 0xd9, 0xd4, 0xf1, 0x97, 0xe8, 0x18, 0x20, 0xa2, 0x16, 0x25, 0x1e, 0x59,
- 0xd2, 0xa8, 0x5d, 0xd8, 0x2f, 0x1d, 0x28, 0xdd, 0xc7, 0x9d, 0x8c, 0x07, 0x6f, 0x89, 0x74, 0xe6,
- 0x31, 0x3f, 0xce, 0x88, 0xa2, 0x2e, 0x28, 0xe4, 0x9a, 0x2c, 0xa9, 0x49, 0xfd, 0x2b, 0xb2, 0x6c,
- 0x97, 0xf7, 0x0b, 0x07, 0x4a, 0x77, 0xab, 0x23, 0x1c, 0xd4, 0xd9, 0x89, 0xc1, 0x0e, 0x30, 0x90,
- 0x64, 0xfd, 0xf0, 0xef, 0x45, 0x68, 0x24, 0xda, 0xd0, 0x18, 0xea, 0xb6, 0x45, 0xc9, 0x85, 0x1f,
- 0xae, 0xb9, 0x9b, 0xad, 0xee, 0x67, 0xf7, 0x34, 0xa4, 0x33, 0x90, 0x72, 0x38, 0xd1, 0x80, 0x7e,
- 0x0e, 0x35, 0x5b, 0x44, 0x8f, 0x47, 0x47, 0xe9, 0x6e, 0x67, 0x95, 0xc9, 0xc0, 0xe2, 0x98, 0x07,
- 0xa9, 0x50, 0x8a, 0xde, 0xb8, 0x3c, 0x64, 0x4d, 0xcc, 0x96, 0xda, 0x9f, 0x0a, 0x50, 0x8f, 0xf5,
- 0xa2, 0x6d, 0xd8, 0xec, 0x8f, 0xcd, 0x97, 0x53, 0xac, 0x0f, 0x66, 0xc7, 0xd3, 0xd1, 0x37, 0xfa,
- 0x50, 0x7d, 0x80, 0x9a, 0x50, 0xef, 0x8f, 0xcd, 0xbe, 0x7e, 0x3c, 0x9a, 0xaa, 0x05, 0xb4, 0x01,
- 0x8d, 0xfe, 0xd8, 0x1c, 0xcc, 0x26, 0x93, 0x91, 0xa1, 0x16, 0xd1, 0x26, 0x28, 0xfd, 0xb1, 0x89,
- 0x67, 0xe3, 0x71, 0xbf, 0x37, 0x38, 0x51, 0x4b, 0x68, 0x17, 0xb6, 0xfa, 0x63, 0x73, 0x38, 0x19,
- 0x9b, 0x43, 0xfd, 0x14, 0xeb, 0x83, 0x9e, 0xa1, 0x0f, 0xd5, 0x32, 0x02, 0xa8, 0x32, 0xf2, 0x70,
- 0xac, 0x56, 0xe4, 0x7a, 0xae, 0x1b, 0x6a, 0x55, 0xaa, 0x1b, 0x4d, 0xe7, 0x3a, 0x36, 0xd4, 0x9a,
- 0xdc, 0xbe, 0x3c, 0x1d, 0xf6, 0x0c, 0x5d, 0xad, 0xcb, 0xed, 0x50, 0x1f, 0xeb, 0x86, 0xae, 0x36,
- 0x9e, 0x97, 0xeb, 0x45, 0xb5, 0xf4, 0xbc, 0x5c, 0x2f, 0xa9, 0x65, 0xed, 0x8f, 0x05, 0xd8, 0x9d,
- 0xd3, 0x90, 0x58, 0xde, 0x09, 0x59, 0x63, 0x6b, 0x79, 0x41, 0x30, 0x79, 0xb3, 0x22, 0x11, 0x45,
- 0x0f, 0xa1, 0x1e, 0xf8, 0x91, 0xc3, 0x62, 0xc7, 0x03, 0xdc, 0xc0, 0xc9, 0x1e, 0x1d, 0x41, 0xe3,
- 0x8a, 0xac, 0xcd, 0x90, 0xf1, 0xcb, 0x80, 0xa1, 0x4e, 0x52, 0x90, 0x89, 0xa6, 0xfa, 0x95, 0x5c,
- 0x65, 0xe3, 0x5b, 0xba, 0x3b, 0xbe, 0xda, 0x39, 0xec, 0xdd, 0x36, 0x2a, 0x0a, 0xfc, 0x65, 0x44,
- 0xd0, 0x18, 0x90, 0x10, 0x34, 0x69, 0x9a, 0x5b, 0x6e, 0x9f, 0xd2, 0xfd, 0xf0, 0x9d, 0x05, 0x80,
- 0xb7, 0x5e, 0xdf, 0x26, 0x69, 0xdf, 0xc2, 0xb6, 0xb8, 0xc7, 0xb0, 0x5e, 0xbb, 0x24, 0xba, 0x8f,
- 0xeb, 0x7b, 0x50, 0xa5, 0x9c, 0xb9, 0x5d, 0xdc, 0x2f, 0x1d, 0x34, 0xb0, 0xdc, 0xbd, 0xaf, 0x87,
- 0x0b, 0xd8, 0xc9, 0xdf, 0xfc, 0x3f, 0xf1, 0xef, 0x57, 0x50, 0xc6, 0x2b, 0x97, 0xa0, 0x1d, 0xa8,
- 0x78, 0x16, 0xb5, 0x2f, 0xa5, 0x37, 0x62, 0xc3, 0x5c, 0x39, 0x77, 0x5c, 0x4a, 0x42, 0x9e, 0xc2,
- 0x06, 0x96, 0x3b, 0xed, 0xcf, 0x05, 0xa8, 0x3e, 0xe5, 0x4b, 0xf4, 0x09, 0x54, 0xc2, 0x15, 0x73,
- 0x56, 0x60, 0x5d, 0xcd, 0x5a, 0xc0, 0x34, 0x63, 0x71, 0x8c, 0x46, 0xd0, 0x3a, 0x77, 0x88, 0xbb,
- 0xe0, 0xd0, 0x9d, 0xf8, 0x0b, 0x51, 0x15, 0xad, 0xee, 0xc7, 0x59, 0x01, 0xa1, 0xb3, 0xf3, 0x34,
- 0xc7, 0x88, 0x6f, 0x09, 0x6a, 0x4f, 0xa0, 0x95, 0xe7, 0x60, 0x70, 0xd2, 0x31, 0x36, 0x67, 0x53,
- 0x73, 0x32, 0x9a, 0x4f, 0x7a, 0xc6, 0xe0, 0x99, 0xfa, 0x80, 0x23, 0x46, 0x9f, 0x1b, 0xa6, 0xfe,
- 0xf4, 0xe9, 0x0c, 0x1b, 0x6a, 0x41, 0xfb, 0x77, 0x11, 0x9a, 0x22, 0x28, 0x73, 0x7f, 0x15, 0xda,
- 0x84, 0x65, 0xf1, 0x8a, 0xac, 0xa3, 0xc0, 0xb2, 0x49, 0x9c, 0xc5, 0x78, 0xcf, 0x02, 0x12, 0x5d,
- 0x5a, 0xe1, 0x42, 0x7a, 0x2e, 0x36, 0xe8, 0x73, 0x50, 0x78, 0x36, 0xa9, 0x49, 0xd7, 0x01, 0xe1,
- 0x79, 0x6c, 0x75, 0x77, 0xd2, 0xc2, 0xe6, 0xb9, 0xa2, 0xc6, 0x3a, 0x20, 0x18, 0x68, 0xb2, 0xce,
- 0xa3, 0xa1, 0x7c, 0x0f, 0x34, 0xa4, 0x35, 0x54, 0xc9, 0xd5, 0xd0, 0x61, 0x92, 0x90, 0xaa, 0xd4,
- 0xf2, 0x56, 0xf4, 0xe2, 0x24, 0xa1, 0x0e, 0x54, 0xfd, 0xa5, 0xb9, 0x58, 0xb8, 0xed, 0x1a, 0x37,
- 0xf3, 0x27, 0x59, 0xde, 0xd9, 0x72, 0x38, 0x1c, 0xf7, 0x44, 0x59, 0x54, 0xfc, 0xe5, 0x70, 0xe1,
- 0xa2, 0x47, 0xd0, 0x22, 0xdf, 0x52, 0x12, 0x2e, 0x2d, 0xd7, 0xf4, 0xd6, 0xac, 0x7b, 0xd5, 0xb9,
- 0xeb, 0x1b, 0x31, 0x75, 0xc2, 0x88, 0xe8, 0x13, 0xd8, 0x8c, 0xa8, 0x1f, 0x98, 0xd6, 0x39, 0x25,
- 0xa1, 0x69, 0xfb, 0xc1, 0xba, 0xdd, 0xd8, 0x2f, 0x1c, 0xd4, 0xf1, 0x06, 0x23, 0xf7, 0x18, 0x75,
- 0xe0, 0x07, 0x6b, 0xed, 0x05, 0x34, 0xb0, 0x7f, 0x33, 0xb8, 0xe4, 0xfe, 0x68, 0x50, 0x7d, 0x4d,
- 0xce, 0xfd, 0x90, 0xc8, 0x42, 0x05, 0xd9, 0xc8, 0xb1, 0x7f, 0x83, 0xe5, 0x09, 0xda, 0x87, 0x0a,
- 0xd7, 0x29, 0xdb, 0x45, 0x96, 0x45, 0x1c, 0x68, 0x16, 0xd4, 0xb1, 0x7f, 0xc3, 0xd3, 0x8e, 0x3e,
- 0x04, 0x11, 0x60, 0x73, 0x69, 0x79, 0x71, 0xf6, 0x1a, 0x9c, 0x32, 0xb5, 0x3c, 0x82, 0x9e, 0x80,
- 0x12, 0xfa, 0x37, 0xa6, 0xcd, 0xaf, 0x17, 0x48, 0x54, 0xba, 0xbb, 0xb9, 0xe2, 0x8c, 0x8d, 0xc3,
- 0x10, 0xc6, 0xcb, 0x48, 0x7b, 0x01, 0x90, 0xd6, 0xd6, 0x5d, 0x97, 0xfc, 0x8c, 0x65, 0x83, 0xb8,
- 0x8b, 0x58, 0x7f, 0x53, 0x9a, 0xcc, 0x35, 0x60, 0x79, 0xa6, 0xfd, 0xa1, 0x00, 0x8d, 0x39, 0xab,
- 0x9e, 0x63, 0xea, 0x2c, 0x7e, 0x40, 0xcd, 0x21, 0x28, 0x5f, 0x50, 0x67, 0xc1, 0x8b, 0xad, 0x81,
- 0xf9, 0x1a, 0x7d, 0x1e, 0x1b, 0x16, 0x98, 0x57, 0x51, 0xbb, 0xcc, 0x6f, 0xcf, 0xe5, 0x97, 0x17,
- 0xe2, 0xd8, 0x8a, 0xe8, 0xe9, 0x09, 0xae, 0x73, 0xd6, 0xd3, 0x93, 0x48, 0xfb, 0x0a, 0x2a, 0x67,
- 0xdc, 0x8a, 0x27, 0xa0, 0x70, 0xe5, 0x26, 0xd3, 0x16, 0x63, 0x37, 0x17, 0x9e, 0xc4, 0x62, 0x0c,
- 0x51, 0xbc, 0x8c, 0xb4, 0x1e, 0x6c, 0x9c, 0x48, 0x6b, 0x39, 0xc3, 0xfb, 0xbb, 0xa3, 0xfd, 0xb5,
- 0x08, 0xb5, 0xe7, 0xfe, 0x8a, 0x15, 0x14, 0x6a, 0x41, 0xd1, 0x59, 0x70, 0xb9, 0x12, 0x2e, 0x3a,
- 0x0b, 0xf4, 0x5b, 0x68, 0x79, 0xce, 0x45, 0x68, 0xb1, 0xb2, 0x14, 0x08, 0x13, 0x4d, 0xe2, 0xa7,
- 0x59, 0xcb, 0x26, 0x31, 0x07, 0x87, 0xd9, 0x86, 0x97, 0xdd, 0x66, 0x80, 0x53, 0xca, 0x01, 0xe7,
- 0x11, 0xb4, 0x5c, 0xdf, 0xb6, 0x5c, 0x33, 0x69, 0xdb, 0x65, 0x51, 0xdc, 0x9c, 0x7a, 0x1a, 0xf7,
- 0xee, 0x5b, 0x71, 0xa9, 0xdc, 0x33, 0x2e, 0xe8, 0x0b, 0x68, 0x06, 0x56, 0x48, 0x1d, 0xdb, 0x09,
- 0x2c, 0x36, 0xf8, 0x54, 0xb9, 0x60, 0xce, 0xec, 0x5c, 0xdc, 0x70, 0x8e, 0x1d, 0x7d, 0x0a, 0x6a,
- 0xc4, 0x5b, 0x92, 0x79, 0xe3, 0x87, 0x57, 0xe7, 0xae, 0x7f, 0x13, 0xb5, 0x6b, 0xdc, 0xfe, 0x4d,
- 0x41, 0x7f, 0x15, 0x93, 0xb5, 0xbf, 0x94, 0xa0, 0x7a, 0x26, 0xaa, 0xf3, 0x10, 0xca, 0x3c, 0x46,
- 0x62, 0xb8, 0xd9, 0xcb, 0x5e, 0x26, 0x38, 0x78, 0x80, 0x38, 0x0f, 0xfa, 0x00, 0x1a, 0xd4, 0xf1,
- 0x48, 0x44, 0x2d, 0x2f, 0xe0, 0x41, 0x2d, 0xe1, 0x94, 0xf0, 0x9d, 0x25, 0xf6, 0x01, 0x34, 0x92,
- 0x71, 0x4c, 0x06, 0x2b, 0x25, 0xa0, 0x5f, 0x40, 0x83, 0xe1, 0x8b, 0x0f, 0x5f, 0xed, 0x0a, 0x07,
- 0xec, 0xce, 0x2d, 0x74, 0x71, 0x13, 0x70, 0x3d, 0x8c, 0x11, 0xfb, 0x6b, 0x50, 0x38, 0x22, 0xa4,
- 0x90, 0x68, 0x60, 0x7b, 0xf9, 0x06, 0x16, 0x23, 0x0f, 0x43, 0xda, 0xf3, 0xd1, 0x63, 0xa8, 0x5c,
- 0x73, 0xf3, 0x6a, 0x72, 0x08, 0xcc, 0x3a, 0xca, 0x53, 0x21, 0xce, 0xd9, 0x17, 0xf6, 0x77, 0xa2,
- 0xb2, 0x78, 0xeb, 0xba, 0xf5, 0x85, 0x95, 0x45, 0x87, 0x63, 0x1e, 0x36, 0xa3, 0x2d, 0x3c, 0x97,
- 0x77, 0xaf, 0x06, 0x66, 0x4b, 0xf4, 0x31, 0x34, 0xed, 0x55, 0x18, 0xf2, 0xb1, 0xd3, 0xf1, 0x48,
- 0x7b, 0x87, 0x07, 0x4a, 0x91, 0x34, 0xc3, 0xf1, 0x08, 0xfa, 0x0d, 0xb4, 0x5c, 0x2b, 0xa2, 0x0c,
- 0x78, 0xd2, 0x91, 0x5d, 0x7e, 0x55, 0x0e, 0x7d, 0x02, 0x78, 0xc2, 0x13, 0xc5, 0x4d, 0x37, 0xda,
- 0x25, 0x34, 0x27, 0xce, 0xd2, 0xf1, 0x2c, 0x97, 0x03, 0x94, 0x05, 0x3e, 0xd3, 0x5a, 0xf8, 0xfa,
- 0x7e, 0x5d, 0x05, 0x7d, 0x04, 0x0a, 0x33, 0xc1, 0xf6, 0xdd, 0x95, 0xb7, 0x14, 0xd5, 0x5e, 0xc2,
- 0x8d, 0xe0, 0x64, 0x20, 0x08, 0x0c, 0xa9, 0xf2, 0xa6, 0xb9, 0x7d, 0x49, 0x3c, 0x0b, 0x7d, 0x96,
- 0x20, 0x43, 0xa0, 0xbd, 0x9d, 0xc7, 0x54, 0x6a, 0x54, 0x8c, 0x19, 0xed, 0x1f, 0x45, 0x68, 0x9d,
- 0x89, 0x19, 0x24, 0x9e, 0x7b, 0xbe, 0x82, 0x6d, 0x72, 0x7e, 0x4e, 0x6c, 0xea, 0x5c, 0x13, 0xd3,
- 0xb6, 0x5c, 0x97, 0x84, 0xa6, 0x44, 0xb0, 0xd2, 0xdd, 0xec, 0x88, 0xff, 0x22, 0x03, 0x4e, 0x1f,
- 0x0d, 0xf1, 0x56, 0xc2, 0x2b, 0x49, 0x0b, 0xa4, 0xc3, 0xb6, 0xe3, 0x79, 0x64, 0xe1, 0x58, 0x34,
- 0xab, 0x40, 0xb4, 0xfc, 0x5d, 0xe9, 0xe9, 0x99, 0x71, 0x6c, 0x51, 0x92, 0xaa, 0x49, 0x24, 0x12,
- 0x35, 0x8f, 0x98, 0x33, 0xe1, 0x45, 0x32, 0x4a, 0x6d, 0x48, 0x49, 0x83, 0x13, 0xb1, 0x3c, 0xcc,
- 0x8d, 0x69, 0xe5, 0x5b, 0x63, 0x5a, 0xfa, 0x29, 0xad, 0xdc, 0xf9, 0x29, 0xfd, 0x12, 0x36, 0x45,
- 0xbb, 0x8d, 0x53, 0x1f, 0x23, 0xfc, 0x7b, 0x7b, 0x6e, 0x93, 0xa6, 0x9b, 0x48, 0xfb, 0x02, 0x36,
- 0x93, 0x40, 0xca, 0x31, 0xee, 0x10, 0xaa, 0xbc, 0x7c, 0xe2, 0x74, 0xa0, 0xb7, 0xe1, 0x8b, 0x25,
- 0x87, 0xf6, 0xfb, 0x22, 0xa0, 0x58, 0xde, 0xbf, 0x89, 0xfe, 0x4f, 0x93, 0xb1, 0x03, 0x15, 0x4e,
- 0x97, 0x99, 0x10, 0x1b, 0x16, 0x07, 0x16, 0xd4, 0xe0, 0x2a, 0x49, 0x83, 0x10, 0x7e, 0xc1, 0x7e,
- 0x31, 0x89, 0x56, 0x2e, 0xc5, 0x92, 0x43, 0xfb, 0x5b, 0x01, 0xb6, 0x73, 0x71, 0x90, 0xb1, 0x4c,
- 0x11, 0x53, 0x78, 0x07, 0x62, 0x0e, 0xa0, 0x1e, 0x5c, 0xbd, 0x03, 0x59, 0xc9, 0xe9, 0x77, 0xb6,
- 0xc3, 0x8f, 0xa0, 0x1c, 0xb2, 0xb6, 0x2c, 0xbe, 0xb5, 0xd9, 0xe1, 0x84, 0xd3, 0xd9, 0x84, 0x93,
- 0xf3, 0x23, 0x37, 0xe1, 0x48, 0xfb, 0x1d, 0x50, 0x32, 0x9d, 0x81, 0xb5, 0x92, 0x7c, 0x55, 0xc9,
- 0xd4, 0x7d, 0x6f, 0x51, 0x29, 0x99, 0xa2, 0x62, 0xfd, 0xd9, 0xf6, 0xbd, 0xc0, 0x25, 0x94, 0x88,
- 0x94, 0xd5, 0x71, 0x4a, 0xd0, 0xbe, 0x06, 0x25, 0x23, 0x79, 0xd7, 0x20, 0x93, 0x26, 0xa1, 0x74,
- 0x67, 0x12, 0xfe, 0x59, 0x80, 0xdd, 0xb4, 0x98, 0x57, 0x2e, 0xfd, 0x51, 0xd5, 0xa3, 0x16, 0xc2,
- 0xde, 0x6d, 0xef, 0xde, 0xab, 0xca, 0x7e, 0x40, 0xed, 0x1c, 0x7e, 0x09, 0x4a, 0x66, 0x1e, 0x67,
- 0x7f, 0xdb, 0x47, 0xc7, 0xd3, 0x19, 0xd6, 0xd5, 0x07, 0xa8, 0x0e, 0xe5, 0xb9, 0x31, 0x3b, 0x55,
- 0x0b, 0x6c, 0xa5, 0x7f, 0xad, 0x0f, 0xc4, 0x53, 0x00, 0x5b, 0x99, 0x92, 0xa9, 0x74, 0xf8, 0x9f,
- 0x02, 0x40, 0xfa, 0xc5, 0x47, 0x0a, 0xd4, 0x5e, 0x4e, 0x4f, 0xa6, 0xb3, 0x57, 0x53, 0xa1, 0xe0,
- 0xd8, 0x18, 0x0d, 0xd5, 0x02, 0x6a, 0x40, 0x45, 0xbc, 0x2d, 0x14, 0xd9, 0x0d, 0xf2, 0x61, 0xa1,
- 0x84, 0x9a, 0x50, 0x4f, 0x5e, 0x15, 0xca, 0xa8, 0x06, 0xa5, 0xe4, 0xed, 0x40, 0x3e, 0x16, 0x54,
- 0x99, 0x42, 0xac, 0x9f, 0x8e, 0x7b, 0x03, 0x5d, 0xad, 0xb1, 0x83, 0xe4, 0xd9, 0x00, 0xa0, 0x1a,
- 0xbf, 0x19, 0x30, 0xc9, 0xb9, 0x6e, 0xa8, 0xc0, 0xee, 0x99, 0x19, 0xcf, 0x74, 0xac, 0x2a, 0x8c,
- 0x86, 0x67, 0xaf, 0xd4, 0x26, 0xa3, 0x3d, 0x1d, 0xe9, 0xe3, 0xa1, 0xba, 0x81, 0x36, 0xa0, 0xf1,
- 0x4c, 0xef, 0x61, 0xa3, 0xaf, 0xf7, 0x0c, 0xb5, 0xc5, 0x4e, 0xce, 0xb8, 0x81, 0x9b, 0xec, 0x9a,
- 0xe7, 0xb3, 0x97, 0x78, 0xda, 0x1b, 0xab, 0x2a, 0xdb, 0x9c, 0xe9, 0x78, 0x3e, 0x9a, 0x4d, 0xd5,
- 0x2d, 0x76, 0xcf, 0xb8, 0x37, 0x37, 0x4e, 0x4f, 0x54, 0xc4, 0xe4, 0xe7, 0xbd, 0x33, 0xfd, 0x74,
- 0x36, 0x9a, 0x1a, 0xea, 0xf6, 0xe1, 0x63, 0xf6, 0x9d, 0xcb, 0x4e, 0x80, 0x00, 0x55, 0xa3, 0xd7,
- 0x1f, 0xeb, 0x73, 0xf5, 0x01, 0x5b, 0xcf, 0x9f, 0xf5, 0xf0, 0x70, 0xae, 0x16, 0xfa, 0x9f, 0x7e,
- 0xf3, 0xf8, 0xda, 0xa1, 0x24, 0x8a, 0x3a, 0x8e, 0x7f, 0x24, 0x56, 0x47, 0x17, 0xfe, 0xd1, 0x35,
- 0x3d, 0xe2, 0xcf, 0x63, 0x47, 0x29, 0xe6, 0x5e, 0x57, 0x39, 0xe5, 0x97, 0xff, 0x0d, 0x00, 0x00,
- 0xff, 0xff, 0x23, 0xf6, 0xf5, 0x62, 0x7a, 0x13, 0x00, 0x00,
+ // 1955 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x58, 0x4b, 0x6f, 0x23, 0x59,
+ 0x15, 0xee, 0xf2, 0xdb, 0xa7, 0x1c, 0xa7, 0x72, 0xf3, 0xc0, 0xb4, 0x66, 0xa2, 0x4c, 0x89, 0x99,
+ 0x0e, 0x91, 0x70, 0x06, 0xc3, 0x34, 0x42, 0x62, 0x66, 0xf0, 0xa3, 0x3a, 0xed, 0x8e, 0x1f, 0xe9,
+ 0xeb, 0xea, 0xf4, 0x68, 0x36, 0xa5, 0x4a, 0xf9, 0x26, 0x29, 0x52, 0x76, 0xb9, 0xab, 0xae, 0x93,
+ 0xf1, 0x0f, 0x40, 0x62, 0x8f, 0x84, 0xf8, 0x0b, 0xac, 0x59, 0x02, 0x5b, 0x60, 0xc9, 0x0f, 0x60,
+ 0x81, 0x1a, 0xf1, 0x23, 0xd8, 0xa1, 0xfb, 0xa8, 0x57, 0x7a, 0xa6, 0x93, 0x1e, 0x89, 0x05, 0x6c,
+ 0xac, 0x7b, 0xcf, 0x3d, 0xe7, 0xdc, 0xf3, 0xfa, 0x4e, 0x1d, 0x5f, 0xd0, 0xce, 0xdc, 0xb9, 0xe7,
+ 0x5f, 0x4c, 0x6d, 0x6a, 0x37, 0x17, 0x81, 0x4f, 0x7d, 0x04, 0x09, 0xe5, 0xa1, 0x7a, 0x4d, 0x83,
+ 0x85, 0x23, 0x0e, 0x1e, 0xaa, 0xaf, 0x96, 0x24, 0x58, 0xc9, 0x4d, 0x9d, 0xfa, 0x0b, 0x3f, 0x91,
+ 0xd2, 0x87, 0x50, 0xee, 0x5e, 0xda, 0x41, 0x48, 0x28, 0xda, 0x81, 0x92, 0xe3, 0xb9, 0x64, 0x4e,
+ 0x1b, 0xca, 0x9e, 0xb2, 0x5f, 0xc4, 0x72, 0x87, 0x10, 0x14, 0x1c, 0x7f, 0x3e, 0x6f, 0xe4, 0x38,
+ 0x95, 0xaf, 0x19, 0x6f, 0x48, 0x82, 0x6b, 0x12, 0x34, 0xf2, 0x82, 0x57, 0xec, 0xf4, 0x7f, 0xe5,
+ 0x61, 0xa3, 0xc3, 0xed, 0x30, 0x03, 0x7b, 0x1e, 0xda, 0x0e, 0x75, 0xfd, 0x39, 0x3a, 0x02, 0x08,
+ 0xa9, 0x4d, 0xc9, 0x8c, 0xcc, 0x69, 0xd8, 0x50, 0xf6, 0xf2, 0xfb, 0x6a, 0xeb, 0x51, 0x33, 0xe5,
+ 0xc1, 0x1b, 0x22, 0xcd, 0x49, 0xc4, 0x8f, 0x53, 0xa2, 0xa8, 0x05, 0x2a, 0xb9, 0x26, 0x73, 0x6a,
+ 0x51, 0xff, 0x8a, 0xcc, 0x1b, 0x85, 0x3d, 0x65, 0x5f, 0x6d, 0x6d, 0x34, 0x85, 0x83, 0x06, 0x3b,
+ 0x31, 0xd9, 0x01, 0x06, 0x12, 0xaf, 0x1f, 0xfe, 0x39, 0x07, 0xd5, 0x58, 0x1b, 0x1a, 0x40, 0xc5,
+ 0xb1, 0x29, 0xb9, 0xf0, 0x83, 0x15, 0x77, 0xb3, 0xde, 0xfa, 0xf8, 0x9e, 0x86, 0x34, 0xbb, 0x52,
+ 0x0e, 0xc7, 0x1a, 0xd0, 0x0f, 0xa0, 0xec, 0x88, 0xe8, 0xf1, 0xe8, 0xa8, 0xad, 0xcd, 0xb4, 0x32,
+ 0x19, 0x58, 0x1c, 0xf1, 0x20, 0x0d, 0xf2, 0xe1, 0x2b, 0x8f, 0x87, 0xac, 0x86, 0xd9, 0x52, 0xff,
+ 0x9d, 0x02, 0x95, 0x48, 0x2f, 0xda, 0x84, 0xf5, 0xce, 0xc0, 0x7a, 0x31, 0xc2, 0x46, 0x77, 0x7c,
+ 0x34, 0xea, 0x7f, 0x69, 0xf4, 0xb4, 0x07, 0xa8, 0x06, 0x95, 0xce, 0xc0, 0xea, 0x18, 0x47, 0xfd,
+ 0x91, 0xa6, 0xa0, 0x35, 0xa8, 0x76, 0x06, 0x56, 0x77, 0x3c, 0x1c, 0xf6, 0x4d, 0x2d, 0x87, 0xd6,
+ 0x41, 0xed, 0x0c, 0x2c, 0x3c, 0x1e, 0x0c, 0x3a, 0xed, 0xee, 0xb1, 0x96, 0x47, 0xdb, 0xb0, 0xd1,
+ 0x19, 0x58, 0xbd, 0xe1, 0xc0, 0xea, 0x19, 0x27, 0xd8, 0xe8, 0xb6, 0x4d, 0xa3, 0xa7, 0x15, 0x10,
+ 0x40, 0x89, 0x91, 0x7b, 0x03, 0xad, 0x28, 0xd7, 0x13, 0xc3, 0xd4, 0x4a, 0x52, 0x5d, 0x7f, 0x34,
+ 0x31, 0xb0, 0xa9, 0x95, 0xe5, 0xf6, 0xc5, 0x49, 0xaf, 0x6d, 0x1a, 0x5a, 0x45, 0x6e, 0x7b, 0xc6,
+ 0xc0, 0x30, 0x0d, 0xad, 0xfa, 0xac, 0x50, 0xc9, 0x69, 0xf9, 0x67, 0x85, 0x4a, 0x5e, 0x2b, 0xe8,
+ 0xbf, 0x56, 0x60, 0x7b, 0x42, 0x03, 0x62, 0xcf, 0x8e, 0xc9, 0x0a, 0xdb, 0xf3, 0x0b, 0x82, 0xc9,
+ 0xab, 0x25, 0x09, 0x29, 0x7a, 0x08, 0x95, 0x85, 0x1f, 0xba, 0x2c, 0x76, 0x3c, 0xc0, 0x55, 0x1c,
+ 0xef, 0xd1, 0x21, 0x54, 0xaf, 0xc8, 0xca, 0x0a, 0x18, 0xbf, 0x0c, 0x18, 0x6a, 0xc6, 0x05, 0x19,
+ 0x6b, 0xaa, 0x5c, 0xc9, 0x55, 0x3a, 0xbe, 0xf9, 0xbb, 0xe3, 0xab, 0x9f, 0xc3, 0xce, 0x6d, 0xa3,
+ 0xc2, 0x85, 0x3f, 0x0f, 0x09, 0x1a, 0x00, 0x12, 0x82, 0x16, 0x4d, 0x72, 0xcb, 0xed, 0x53, 0x5b,
+ 0xef, 0xbf, 0xb5, 0x00, 0xf0, 0xc6, 0xd9, 0x6d, 0x92, 0xfe, 0x15, 0x6c, 0x8a, 0x7b, 0x4c, 0xfb,
+ 0xcc, 0x23, 0xe1, 0x7d, 0x5c, 0xdf, 0x81, 0x12, 0xe5, 0xcc, 0x8d, 0xdc, 0x5e, 0x7e, 0xbf, 0x8a,
+ 0xe5, 0xee, 0x5d, 0x3d, 0x9c, 0xc2, 0x56, 0xf6, 0xe6, 0xff, 0x8a, 0x7f, 0x3f, 0x86, 0x02, 0x5e,
+ 0x7a, 0x04, 0x6d, 0x41, 0x71, 0x66, 0x53, 0xe7, 0x52, 0x7a, 0x23, 0x36, 0xcc, 0x95, 0x73, 0xd7,
+ 0xa3, 0x24, 0xe0, 0x29, 0xac, 0x62, 0xb9, 0xd3, 0x7f, 0xaf, 0x40, 0xe9, 0x09, 0x5f, 0xa2, 0x8f,
+ 0xa0, 0x18, 0x2c, 0x99, 0xb3, 0x02, 0xeb, 0x5a, 0xda, 0x02, 0xa6, 0x19, 0x8b, 0x63, 0xd4, 0x87,
+ 0xfa, 0xb9, 0x4b, 0xbc, 0x29, 0x87, 0xee, 0xd0, 0x9f, 0x8a, 0xaa, 0xa8, 0xb7, 0x3e, 0x48, 0x0b,
+ 0x08, 0x9d, 0xcd, 0x27, 0x19, 0x46, 0x7c, 0x4b, 0x50, 0x7f, 0x0c, 0xf5, 0x2c, 0x07, 0x83, 0x93,
+ 0x81, 0xb1, 0x35, 0x1e, 0x59, 0xc3, 0xfe, 0x64, 0xd8, 0x36, 0xbb, 0x4f, 0xb5, 0x07, 0x1c, 0x31,
+ 0xc6, 0xc4, 0xb4, 0x8c, 0x27, 0x4f, 0xc6, 0xd8, 0xd4, 0x14, 0xfd, 0x37, 0x79, 0xa8, 0x89, 0xa0,
+ 0x4c, 0xfc, 0x65, 0xe0, 0x10, 0x96, 0xc5, 0x2b, 0xb2, 0x0a, 0x17, 0xb6, 0x43, 0xa2, 0x2c, 0x46,
+ 0x7b, 0x16, 0x90, 0xf0, 0xd2, 0x0e, 0xa6, 0xd2, 0x73, 0xb1, 0x41, 0x9f, 0x80, 0xca, 0xb3, 0x49,
+ 0x2d, 0xba, 0x5a, 0x10, 0x9e, 0xc7, 0x7a, 0x6b, 0x2b, 0x29, 0x6c, 0x9e, 0x2b, 0x6a, 0xae, 0x16,
+ 0x04, 0x03, 0x8d, 0xd7, 0x59, 0x34, 0x14, 0xee, 0x81, 0x86, 0xa4, 0x86, 0x8a, 0x99, 0x1a, 0x3a,
+ 0x88, 0x13, 0x52, 0x92, 0x5a, 0xde, 0x88, 0x5e, 0x94, 0x24, 0xd4, 0x84, 0x92, 0x3f, 0xb7, 0xa6,
+ 0x53, 0xaf, 0x51, 0xe6, 0x66, 0x7e, 0x27, 0xcd, 0x3b, 0x9e, 0xf7, 0x7a, 0x83, 0xb6, 0x28, 0x8b,
+ 0xa2, 0x3f, 0xef, 0x4d, 0x3d, 0xf4, 0x21, 0xd4, 0xc9, 0x57, 0x94, 0x04, 0x73, 0xdb, 0xb3, 0x66,
+ 0x2b, 0xd6, 0xbd, 0x2a, 0xdc, 0xf5, 0xb5, 0x88, 0x3a, 0x64, 0x44, 0xf4, 0x11, 0xac, 0x87, 0xd4,
+ 0x5f, 0x58, 0xf6, 0x39, 0x25, 0x81, 0xe5, 0xf8, 0x8b, 0x55, 0xa3, 0xba, 0xa7, 0xec, 0x57, 0xf0,
+ 0x1a, 0x23, 0xb7, 0x19, 0xb5, 0xeb, 0x2f, 0x56, 0xe8, 0xfb, 0xa0, 0xc5, 0xea, 0x1c, 0x6f, 0x19,
+ 0x32, 0xa3, 0x81, 0x2b, 0x5c, 0x8f, 0xe8, 0x5d, 0x41, 0xd6, 0x9f, 0x43, 0x15, 0xfb, 0x37, 0xdd,
+ 0x4b, 0xee, 0xba, 0x0e, 0xa5, 0x33, 0x72, 0xee, 0x07, 0x44, 0xd6, 0x34, 0xc8, 0x9e, 0x8f, 0xfd,
+ 0x1b, 0x2c, 0x4f, 0xd0, 0x1e, 0x14, 0xf9, 0xf5, 0xb2, 0xb3, 0xa4, 0x59, 0xc4, 0x81, 0x6e, 0x43,
+ 0x05, 0xfb, 0x37, 0xbc, 0x42, 0xd0, 0xfb, 0x20, 0x72, 0x61, 0xcd, 0xed, 0x59, 0x94, 0xe8, 0x2a,
+ 0xa7, 0x8c, 0xec, 0x19, 0x41, 0x8f, 0x41, 0x0d, 0xfc, 0x1b, 0xcb, 0xe1, 0xd7, 0x0b, 0xd0, 0xaa,
+ 0xad, 0xed, 0x4c, 0x1d, 0x47, 0xc6, 0x61, 0x08, 0xa2, 0x65, 0xa8, 0x3f, 0x07, 0x48, 0xca, 0xf0,
+ 0xae, 0x4b, 0xbe, 0xc7, 0x12, 0x47, 0xbc, 0x69, 0xa4, 0xbf, 0x26, 0x4d, 0xe6, 0x1a, 0xb0, 0x3c,
+ 0xd3, 0x7f, 0xa5, 0x40, 0x75, 0xc2, 0x0a, 0xed, 0x88, 0xba, 0xd3, 0x6f, 0x51, 0x9e, 0x08, 0x0a,
+ 0x17, 0xd4, 0x9d, 0xf2, 0xba, 0xac, 0x62, 0xbe, 0x46, 0x9f, 0x44, 0x86, 0x2d, 0xac, 0xab, 0xb0,
+ 0x51, 0xe0, 0xb7, 0x67, 0x4a, 0x81, 0xd7, 0xec, 0xc0, 0x0e, 0xe9, 0xc9, 0x31, 0xae, 0x70, 0xd6,
+ 0x93, 0xe3, 0x50, 0xff, 0x1c, 0x8a, 0xa7, 0xdc, 0x8a, 0xc7, 0xa0, 0x72, 0xe5, 0x16, 0xd3, 0x16,
+ 0xc1, 0x3c, 0x13, 0x9e, 0xd8, 0x62, 0x0c, 0x61, 0xb4, 0x0c, 0xf5, 0x36, 0xac, 0x1d, 0x4b, 0x6b,
+ 0x39, 0xc3, 0xbb, 0xbb, 0xa3, 0xff, 0x31, 0x07, 0xe5, 0x67, 0xfe, 0x92, 0x95, 0x0a, 0xaa, 0x43,
+ 0xce, 0x9d, 0x72, 0xb9, 0x3c, 0xce, 0xb9, 0x53, 0xf4, 0x73, 0xa8, 0xcf, 0xdc, 0x8b, 0xc0, 0x66,
+ 0x15, 0x2c, 0xc0, 0x28, 0xfa, 0xc9, 0x77, 0xd3, 0x96, 0x0d, 0x23, 0x0e, 0x8e, 0xc8, 0xb5, 0x59,
+ 0x7a, 0x9b, 0xc2, 0x58, 0x3e, 0x83, 0xb1, 0x0f, 0xa1, 0xee, 0xf9, 0x8e, 0xed, 0x59, 0x71, 0x87,
+ 0x2f, 0x08, 0x1c, 0x70, 0xea, 0x49, 0xd4, 0xe6, 0x6f, 0xc5, 0xa5, 0x78, 0xcf, 0xb8, 0xa0, 0x4f,
+ 0xa1, 0xb6, 0xb0, 0x03, 0xea, 0x3a, 0xee, 0xc2, 0x66, 0x33, 0x52, 0x89, 0x0b, 0x66, 0xcc, 0xce,
+ 0xc4, 0x0d, 0x67, 0xd8, 0x19, 0xac, 0x42, 0xde, 0xbd, 0xac, 0x1b, 0x3f, 0xb8, 0x3a, 0xf7, 0xfc,
+ 0x9b, 0xb0, 0x51, 0xe6, 0xf6, 0xaf, 0x0b, 0xfa, 0xcb, 0x88, 0xac, 0xff, 0x21, 0x0f, 0xa5, 0x53,
+ 0x51, 0x9d, 0x07, 0x50, 0xe0, 0x31, 0x12, 0x73, 0xd0, 0x4e, 0xfa, 0x32, 0xc1, 0xc1, 0x03, 0xc4,
+ 0x79, 0xd0, 0x7b, 0x50, 0xa5, 0xee, 0x8c, 0x84, 0xd4, 0x9e, 0x2d, 0x78, 0x50, 0xf3, 0x38, 0x21,
+ 0x7c, 0x6d, 0x89, 0xbd, 0x07, 0xd5, 0x78, 0x72, 0x93, 0xc1, 0x4a, 0x08, 0xe8, 0x87, 0x50, 0x65,
+ 0xf8, 0xe2, 0x73, 0x5a, 0xa3, 0xc8, 0x01, 0xbb, 0x75, 0x0b, 0x5d, 0xdc, 0x04, 0x5c, 0x09, 0x22,
+ 0xc4, 0xfe, 0x04, 0x54, 0x8e, 0x08, 0x29, 0x24, 0x7a, 0xdd, 0x4e, 0xb6, 0xd7, 0x45, 0xc8, 0xc3,
+ 0x90, 0x7c, 0x1e, 0xd0, 0x23, 0x28, 0x5e, 0x73, 0xf3, 0xca, 0x72, 0x5e, 0x4c, 0x3b, 0xca, 0x53,
+ 0x21, 0xce, 0xd9, 0xc7, 0xf8, 0x17, 0xa2, 0xb2, 0x78, 0x97, 0xbb, 0xf5, 0x31, 0x96, 0x45, 0x87,
+ 0x23, 0x1e, 0x36, 0xce, 0x4d, 0x67, 0x1e, 0x6f, 0x74, 0x55, 0xcc, 0x96, 0xe8, 0x03, 0xa8, 0x39,
+ 0xcb, 0x20, 0xe0, 0x13, 0xaa, 0x3b, 0x23, 0x8d, 0x2d, 0x1e, 0x28, 0x55, 0xd2, 0x4c, 0x77, 0x46,
+ 0xd0, 0xcf, 0xa0, 0xee, 0xd9, 0x21, 0x65, 0xc0, 0x93, 0x8e, 0x6c, 0xf3, 0xab, 0x32, 0xe8, 0x13,
+ 0xc0, 0x13, 0x9e, 0xa8, 0x5e, 0xb2, 0xd1, 0x2f, 0xa1, 0x36, 0x74, 0xe7, 0xee, 0xcc, 0xf6, 0x38,
+ 0x40, 0x59, 0xe0, 0x53, 0xad, 0x85, 0xaf, 0xef, 0xd7, 0x55, 0xd0, 0x2e, 0xa8, 0xcc, 0x04, 0xc7,
+ 0xf7, 0x96, 0xb3, 0xb9, 0xa8, 0xf6, 0x3c, 0xae, 0x2e, 0x8e, 0xbb, 0x82, 0xc0, 0x90, 0x2a, 0x6f,
+ 0x9a, 0x38, 0x97, 0x64, 0x66, 0xa3, 0x8f, 0x63, 0x64, 0x08, 0xb4, 0x37, 0xb2, 0x98, 0x4a, 0x8c,
+ 0x8a, 0x30, 0xa3, 0xff, 0x25, 0x07, 0xf5, 0x53, 0x31, 0xae, 0x44, 0x23, 0xd2, 0xe7, 0xb0, 0x49,
+ 0xce, 0xcf, 0x89, 0x43, 0xdd, 0x6b, 0x62, 0x39, 0xb6, 0xe7, 0x91, 0xc0, 0x92, 0x08, 0x56, 0x5b,
+ 0xeb, 0x4d, 0xf1, 0xb7, 0xa5, 0xcb, 0xe9, 0xfd, 0x1e, 0xde, 0x88, 0x79, 0x25, 0x69, 0x8a, 0x0c,
+ 0xd8, 0x74, 0x67, 0x33, 0x32, 0x75, 0x6d, 0x9a, 0x56, 0x20, 0x5a, 0xfe, 0xb6, 0xf4, 0xf4, 0xd4,
+ 0x3c, 0xb2, 0x29, 0x49, 0xd4, 0xc4, 0x12, 0xb1, 0x9a, 0x0f, 0x99, 0x33, 0xc1, 0x45, 0x3c, 0x75,
+ 0xad, 0x49, 0x49, 0x93, 0x13, 0xb1, 0x3c, 0xcc, 0x4c, 0x74, 0x85, 0x5b, 0x13, 0x5d, 0xf2, 0xd5,
+ 0x2d, 0xde, 0xf9, 0xd5, 0xfd, 0x0c, 0xd6, 0x45, 0xbb, 0x8d, 0x52, 0x1f, 0x21, 0xfc, 0x1b, 0x7b,
+ 0x6e, 0x8d, 0x26, 0x9b, 0x50, 0xff, 0x14, 0xd6, 0xe3, 0x40, 0xca, 0x89, 0xef, 0x00, 0x4a, 0xbc,
+ 0x7c, 0xa2, 0x74, 0xa0, 0x37, 0xe1, 0x8b, 0x25, 0x87, 0xfe, 0xcb, 0x1c, 0xa0, 0x48, 0xde, 0xbf,
+ 0x09, 0xff, 0x47, 0x93, 0xb1, 0x05, 0x45, 0x4e, 0x97, 0x99, 0x10, 0x1b, 0x16, 0x07, 0x16, 0xd4,
+ 0xc5, 0x55, 0x9c, 0x06, 0x21, 0xfc, 0x9c, 0xfd, 0x62, 0x12, 0x2e, 0x3d, 0x8a, 0x25, 0x87, 0xfe,
+ 0x27, 0x05, 0x36, 0x33, 0x71, 0x90, 0xb1, 0x4c, 0x10, 0xa3, 0xbc, 0x05, 0x31, 0xfb, 0x50, 0x59,
+ 0x5c, 0xbd, 0x05, 0x59, 0xf1, 0xe9, 0xd7, 0xb6, 0xc3, 0x5d, 0x28, 0x04, 0xac, 0x2d, 0x8b, 0x6f,
+ 0x6d, 0x7a, 0x38, 0xe1, 0x74, 0x36, 0xe1, 0x64, 0xfc, 0xc8, 0x4c, 0x38, 0xd2, 0x7e, 0x17, 0xd4,
+ 0x54, 0x67, 0x60, 0xad, 0x24, 0x5b, 0x55, 0x32, 0x75, 0xdf, 0x58, 0x54, 0x6a, 0xaa, 0xa8, 0x58,
+ 0x7f, 0x76, 0xfc, 0xd9, 0xc2, 0x23, 0x94, 0x88, 0x94, 0x55, 0x70, 0x42, 0xd0, 0xbf, 0x00, 0x35,
+ 0x25, 0x79, 0xd7, 0x20, 0x93, 0x24, 0x21, 0x7f, 0x67, 0x12, 0xfe, 0xae, 0xc0, 0x76, 0x52, 0xcc,
+ 0x4b, 0x8f, 0xfe, 0x5f, 0xd5, 0xa3, 0x1e, 0xc0, 0xce, 0x6d, 0xef, 0xde, 0xa9, 0xca, 0xbe, 0x45,
+ 0xed, 0x1c, 0x7c, 0x06, 0x6a, 0x6a, 0x74, 0x67, 0xff, 0xf0, 0xfb, 0x47, 0xa3, 0x31, 0x36, 0xb4,
+ 0x07, 0xa8, 0x02, 0x85, 0x89, 0x39, 0x3e, 0xd1, 0x14, 0xb6, 0x32, 0xbe, 0x30, 0xba, 0xe2, 0xd5,
+ 0x80, 0xad, 0x2c, 0xc9, 0x94, 0x3f, 0xf8, 0xb7, 0x02, 0x90, 0x7c, 0xf1, 0x91, 0x0a, 0xe5, 0x17,
+ 0xa3, 0xe3, 0xd1, 0xf8, 0xe5, 0x48, 0x28, 0x38, 0x32, 0xfb, 0x3d, 0x4d, 0x41, 0x55, 0x28, 0x8a,
+ 0x67, 0x88, 0x1c, 0xbb, 0x41, 0xbe, 0x41, 0xe4, 0x51, 0x0d, 0x2a, 0xf1, 0x03, 0x44, 0x01, 0x95,
+ 0x21, 0x1f, 0x3f, 0x33, 0xc8, 0x77, 0x85, 0x12, 0x53, 0x88, 0x8d, 0x93, 0x41, 0xbb, 0x6b, 0x68,
+ 0x65, 0x76, 0x10, 0xbf, 0x30, 0x00, 0x94, 0xa2, 0xe7, 0x05, 0x26, 0x39, 0x31, 0x4c, 0x0d, 0xd8,
+ 0x3d, 0x63, 0xf3, 0xa9, 0x81, 0x35, 0x95, 0xd1, 0xf0, 0xf8, 0xa5, 0x56, 0x63, 0xb4, 0x27, 0x7d,
+ 0x63, 0xd0, 0xd3, 0xd6, 0xd0, 0x1a, 0x54, 0x9f, 0x1a, 0x6d, 0x6c, 0x76, 0x8c, 0xb6, 0xa9, 0xd5,
+ 0xd9, 0xc9, 0x29, 0x37, 0x70, 0x9d, 0x5d, 0xf3, 0x6c, 0xfc, 0x02, 0x8f, 0xda, 0x03, 0x4d, 0x63,
+ 0x9b, 0x53, 0x03, 0x4f, 0xfa, 0xe3, 0x91, 0xb6, 0xc1, 0xee, 0x19, 0xb4, 0x27, 0xe6, 0xc9, 0xb1,
+ 0x86, 0x98, 0xfc, 0xa4, 0x7d, 0x6a, 0x9c, 0x8c, 0xfb, 0x23, 0x53, 0xdb, 0x3c, 0x78, 0xc4, 0xbe,
+ 0x73, 0xe9, 0x09, 0x10, 0xa0, 0x64, 0xb6, 0x3b, 0x03, 0x63, 0xa2, 0x3d, 0x60, 0xeb, 0xc9, 0xd3,
+ 0x36, 0xee, 0x4d, 0x34, 0xa5, 0xf3, 0xd3, 0xbf, 0xbe, 0xde, 0x55, 0xfe, 0xf6, 0x7a, 0x57, 0xf9,
+ 0xc7, 0xeb, 0x5d, 0xe5, 0xb7, 0xff, 0xdc, 0x7d, 0xf0, 0xe5, 0xa3, 0x6b, 0x97, 0x92, 0x30, 0x6c,
+ 0xba, 0xfe, 0xa1, 0x58, 0x1d, 0x5e, 0xf8, 0x87, 0xd7, 0xf4, 0x90, 0xbf, 0xac, 0x1d, 0x26, 0x18,
+ 0x3c, 0x2b, 0x71, 0xca, 0x8f, 0xfe, 0x13, 0x00, 0x00, 0xff, 0xff, 0x22, 0xbd, 0x3f, 0x86, 0xb5,
+ 0x13, 0x00, 0x00,
+}
+
+func (m *Charset) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Charset) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Charset) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Server != 0 {
+ i = encodeVarintBinlogdata(dAtA, i, uint64(m.Server))
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.Conn != 0 {
+ i = encodeVarintBinlogdata(dAtA, i, uint64(m.Conn))
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.Client != 0 {
+ i = encodeVarintBinlogdata(dAtA, i, uint64(m.Client))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *BinlogTransaction) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *BinlogTransaction) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *BinlogTransaction) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.EventToken != nil {
+ {
+ size, err := m.EventToken.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ if len(m.Statements) > 0 {
+ for iNdEx := len(m.Statements) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Statements[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *BinlogTransaction_Statement) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *BinlogTransaction_Statement) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *BinlogTransaction_Statement) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Sql) > 0 {
+ i -= len(m.Sql)
+ copy(dAtA[i:], m.Sql)
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.Sql)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.Charset != nil {
+ {
+ size, err := m.Charset.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Category != 0 {
+ i = encodeVarintBinlogdata(dAtA, i, uint64(m.Category))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *StreamKeyRangeRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StreamKeyRangeRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *StreamKeyRangeRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Charset != nil {
+ {
+ size, err := m.Charset.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.KeyRange != nil {
+ {
+ size, err := m.KeyRange.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Position) > 0 {
+ i -= len(m.Position)
+ copy(dAtA[i:], m.Position)
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.Position)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *StreamKeyRangeResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StreamKeyRangeResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *StreamKeyRangeResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.BinlogTransaction != nil {
+ {
+ size, err := m.BinlogTransaction.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *StreamTablesRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StreamTablesRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *StreamTablesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Charset != nil {
+ {
+ size, err := m.Charset.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Tables) > 0 {
+ for iNdEx := len(m.Tables) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Tables[iNdEx])
+ copy(dAtA[i:], m.Tables[iNdEx])
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.Tables[iNdEx])))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Position) > 0 {
+ i -= len(m.Position)
+ copy(dAtA[i:], m.Position)
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.Position)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *StreamTablesResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StreamTablesResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
}
+
+func (m *StreamTablesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.BinlogTransaction != nil {
+ {
+ size, err := m.BinlogTransaction.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Rule) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Rule) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Rule) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Filter) > 0 {
+ i -= len(m.Filter)
+ copy(dAtA[i:], m.Filter)
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.Filter)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Match) > 0 {
+ i -= len(m.Match)
+ copy(dAtA[i:], m.Match)
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.Match)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Filter) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Filter) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Filter) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.FieldEventMode != 0 {
+ i = encodeVarintBinlogdata(dAtA, i, uint64(m.FieldEventMode))
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.Rules) > 0 {
+ for iNdEx := len(m.Rules) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Rules[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *BinlogSource) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *BinlogSource) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *BinlogSource) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.ExternalCluster) > 0 {
+ i -= len(m.ExternalCluster)
+ copy(dAtA[i:], m.ExternalCluster)
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.ExternalCluster)))
+ i--
+ dAtA[i] = 0x52
+ }
+ if m.StopAfterCopy {
+ i--
+ if m.StopAfterCopy {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x48
+ }
+ if len(m.ExternalMysql) > 0 {
+ i -= len(m.ExternalMysql)
+ copy(dAtA[i:], m.ExternalMysql)
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.ExternalMysql)))
+ i--
+ dAtA[i] = 0x42
+ }
+ if m.OnDdl != 0 {
+ i = encodeVarintBinlogdata(dAtA, i, uint64(m.OnDdl))
+ i--
+ dAtA[i] = 0x38
+ }
+ if m.Filter != nil {
+ {
+ size, err := m.Filter.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x32
+ }
+ if len(m.Tables) > 0 {
+ for iNdEx := len(m.Tables) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Tables[iNdEx])
+ copy(dAtA[i:], m.Tables[iNdEx])
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.Tables[iNdEx])))
+ i--
+ dAtA[i] = 0x2a
+ }
+ }
+ if m.KeyRange != nil {
+ {
+ size, err := m.KeyRange.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.TabletType != 0 {
+ i = encodeVarintBinlogdata(dAtA, i, uint64(m.TabletType))
+ i--
+ dAtA[i] = 0x18
+ }
+ if len(m.Shard) > 0 {
+ i -= len(m.Shard)
+ copy(dAtA[i:], m.Shard)
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.Shard)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RowChange) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RowChange) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RowChange) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.After != nil {
+ {
+ size, err := m.After.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Before != nil {
+ {
+ size, err := m.Before.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RowEvent) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RowEvent) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RowEvent) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.RowChanges) > 0 {
+ for iNdEx := len(m.RowChanges) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.RowChanges[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.TableName) > 0 {
+ i -= len(m.TableName)
+ copy(dAtA[i:], m.TableName)
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.TableName)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *FieldEvent) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *FieldEvent) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *FieldEvent) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Fields) > 0 {
+ for iNdEx := len(m.Fields) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Fields[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.TableName) > 0 {
+ i -= len(m.TableName)
+ copy(dAtA[i:], m.TableName)
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.TableName)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ShardGtid) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ShardGtid) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ShardGtid) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.TablePKs) > 0 {
+ for iNdEx := len(m.TablePKs) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.TablePKs[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if len(m.Gtid) > 0 {
+ i -= len(m.Gtid)
+ copy(dAtA[i:], m.Gtid)
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.Gtid)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Shard) > 0 {
+ i -= len(m.Shard)
+ copy(dAtA[i:], m.Shard)
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.Shard)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *VGtid) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *VGtid) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *VGtid) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.ShardGtids) > 0 {
+ for iNdEx := len(m.ShardGtids) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.ShardGtids[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *KeyspaceShard) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *KeyspaceShard) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *KeyspaceShard) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Shard) > 0 {
+ i -= len(m.Shard)
+ copy(dAtA[i:], m.Shard)
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.Shard)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Journal) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Journal) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Journal) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.SourceWorkflows) > 0 {
+ for iNdEx := len(m.SourceWorkflows) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.SourceWorkflows[iNdEx])
+ copy(dAtA[i:], m.SourceWorkflows[iNdEx])
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.SourceWorkflows[iNdEx])))
+ i--
+ dAtA[i] = 0x3a
+ }
+ }
+ if len(m.Participants) > 0 {
+ for iNdEx := len(m.Participants) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Participants[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x32
+ }
+ }
+ if len(m.ShardGtids) > 0 {
+ for iNdEx := len(m.ShardGtids) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.ShardGtids[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x2a
+ }
+ }
+ if len(m.LocalPosition) > 0 {
+ i -= len(m.LocalPosition)
+ copy(dAtA[i:], m.LocalPosition)
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.LocalPosition)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if len(m.Tables) > 0 {
+ for iNdEx := len(m.Tables) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Tables[iNdEx])
+ copy(dAtA[i:], m.Tables[iNdEx])
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.Tables[iNdEx])))
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if m.MigrationType != 0 {
+ i = encodeVarintBinlogdata(dAtA, i, uint64(m.MigrationType))
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.Id != 0 {
+ i = encodeVarintBinlogdata(dAtA, i, uint64(m.Id))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *VEvent) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *VEvent) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *VEvent) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.LastPKEvent != nil {
+ {
+ size, err := m.LastPKEvent.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1
+ i--
+ dAtA[i] = 0xaa
+ }
+ if m.CurrentTime != 0 {
+ i = encodeVarintBinlogdata(dAtA, i, uint64(m.CurrentTime))
+ i--
+ dAtA[i] = 0x1
+ i--
+ dAtA[i] = 0xa0
+ }
+ if len(m.Dml) > 0 {
+ i -= len(m.Dml)
+ copy(dAtA[i:], m.Dml)
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.Dml)))
+ i--
+ dAtA[i] = 0x4a
+ }
+ if m.Journal != nil {
+ {
+ size, err := m.Journal.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x42
+ }
+ if m.Vgtid != nil {
+ {
+ size, err := m.Vgtid.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x3a
+ }
+ if m.FieldEvent != nil {
+ {
+ size, err := m.FieldEvent.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x32
+ }
+ if m.RowEvent != nil {
+ {
+ size, err := m.RowEvent.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x2a
+ }
+ if len(m.Statement) > 0 {
+ i -= len(m.Statement)
+ copy(dAtA[i:], m.Statement)
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.Statement)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if len(m.Gtid) > 0 {
+ i -= len(m.Gtid)
+ copy(dAtA[i:], m.Gtid)
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.Gtid)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.Timestamp != 0 {
+ i = encodeVarintBinlogdata(dAtA, i, uint64(m.Timestamp))
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.Type != 0 {
+ i = encodeVarintBinlogdata(dAtA, i, uint64(m.Type))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MinimalTable) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MinimalTable) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *MinimalTable) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.PKColumns) > 0 {
+ dAtA18 := make([]byte, len(m.PKColumns)*10)
+ var j17 int
+ for _, num1 := range m.PKColumns {
+ num := uint64(num1)
+ for num >= 1<<7 {
+ dAtA18[j17] = uint8(uint64(num)&0x7f | 0x80)
+ num >>= 7
+ j17++
+ }
+ dAtA18[j17] = uint8(num)
+ j17++
+ }
+ i -= j17
+ copy(dAtA[i:], dAtA18[:j17])
+ i = encodeVarintBinlogdata(dAtA, i, uint64(j17))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Fields) > 0 {
+ for iNdEx := len(m.Fields) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Fields[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MinimalSchema) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MinimalSchema) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *MinimalSchema) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Tables) > 0 {
+ for iNdEx := len(m.Tables) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Tables[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *VStreamRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *VStreamRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *VStreamRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.TableLastPKs) > 0 {
+ for iNdEx := len(m.TableLastPKs) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.TableLastPKs[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x32
+ }
+ }
+ if m.Filter != nil {
+ {
+ size, err := m.Filter.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x2a
+ }
+ if len(m.Position) > 0 {
+ i -= len(m.Position)
+ copy(dAtA[i:], m.Position)
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.Position)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.Target != nil {
+ {
+ size, err := m.Target.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.ImmediateCallerId != nil {
+ {
+ size, err := m.ImmediateCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.EffectiveCallerId != nil {
+ {
+ size, err := m.EffectiveCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *VStreamResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *VStreamResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *VStreamResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Events) > 0 {
+ for iNdEx := len(m.Events) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Events[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *VStreamRowsRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *VStreamRowsRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *VStreamRowsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Lastpk != nil {
+ {
+ size, err := m.Lastpk.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x2a
+ }
+ if len(m.Query) > 0 {
+ i -= len(m.Query)
+ copy(dAtA[i:], m.Query)
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.Query)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.Target != nil {
+ {
+ size, err := m.Target.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.ImmediateCallerId != nil {
+ {
+ size, err := m.ImmediateCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.EffectiveCallerId != nil {
+ {
+ size, err := m.EffectiveCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *VStreamRowsResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *VStreamRowsResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *VStreamRowsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Lastpk != nil {
+ {
+ size, err := m.Lastpk.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x2a
+ }
+ if len(m.Rows) > 0 {
+ for iNdEx := len(m.Rows) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Rows[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if len(m.Gtid) > 0 {
+ i -= len(m.Gtid)
+ copy(dAtA[i:], m.Gtid)
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.Gtid)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Pkfields) > 0 {
+ for iNdEx := len(m.Pkfields) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Pkfields[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Fields) > 0 {
+ for iNdEx := len(m.Fields) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Fields[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *LastPKEvent) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *LastPKEvent) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *LastPKEvent) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Completed {
+ i--
+ if m.Completed {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.TableLastPK != nil {
+ {
+ size, err := m.TableLastPK.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *TableLastPK) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *TableLastPK) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *TableLastPK) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Lastpk != nil {
+ {
+ size, err := m.Lastpk.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.TableName) > 0 {
+ i -= len(m.TableName)
+ copy(dAtA[i:], m.TableName)
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.TableName)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *VStreamResultsRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *VStreamResultsRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *VStreamResultsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Query) > 0 {
+ i -= len(m.Query)
+ copy(dAtA[i:], m.Query)
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.Query)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.Target != nil {
+ {
+ size, err := m.Target.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.ImmediateCallerId != nil {
+ {
+ size, err := m.ImmediateCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.EffectiveCallerId != nil {
+ {
+ size, err := m.EffectiveCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *VStreamResultsResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *VStreamResultsResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *VStreamResultsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Rows) > 0 {
+ for iNdEx := len(m.Rows) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Rows[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if len(m.Gtid) > 0 {
+ i -= len(m.Gtid)
+ copy(dAtA[i:], m.Gtid)
+ i = encodeVarintBinlogdata(dAtA, i, uint64(len(m.Gtid)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Fields) > 0 {
+ for iNdEx := len(m.Fields) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Fields[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintBinlogdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func encodeVarintBinlogdata(dAtA []byte, offset int, v uint64) int {
+ offset -= sovBinlogdata(v)
+ base := offset
+ for v >= 1<<7 {
+ dAtA[offset] = uint8(v&0x7f | 0x80)
+ v >>= 7
+ offset++
+ }
+ dAtA[offset] = uint8(v)
+ return base
+}
+func (m *Charset) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Client != 0 {
+ n += 1 + sovBinlogdata(uint64(m.Client))
+ }
+ if m.Conn != 0 {
+ n += 1 + sovBinlogdata(uint64(m.Conn))
+ }
+ if m.Server != 0 {
+ n += 1 + sovBinlogdata(uint64(m.Server))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *BinlogTransaction) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Statements) > 0 {
+ for _, e := range m.Statements {
+ l = e.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ }
+ if m.EventToken != nil {
+ l = m.EventToken.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *BinlogTransaction_Statement) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Category != 0 {
+ n += 1 + sovBinlogdata(uint64(m.Category))
+ }
+ if m.Charset != nil {
+ l = m.Charset.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ l = len(m.Sql)
+ if l > 0 {
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StreamKeyRangeRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Position)
+ if l > 0 {
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.KeyRange != nil {
+ l = m.KeyRange.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.Charset != nil {
+ l = m.Charset.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StreamKeyRangeResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.BinlogTransaction != nil {
+ l = m.BinlogTransaction.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StreamTablesRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Position)
+ if l > 0 {
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if len(m.Tables) > 0 {
+ for _, s := range m.Tables {
+ l = len(s)
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ }
+ if m.Charset != nil {
+ l = m.Charset.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StreamTablesResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.BinlogTransaction != nil {
+ l = m.BinlogTransaction.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Rule) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Match)
+ if l > 0 {
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ l = len(m.Filter)
+ if l > 0 {
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Filter) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Rules) > 0 {
+ for _, e := range m.Rules {
+ l = e.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ }
+ if m.FieldEventMode != 0 {
+ n += 1 + sovBinlogdata(uint64(m.FieldEventMode))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *BinlogSource) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ l = len(m.Shard)
+ if l > 0 {
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.TabletType != 0 {
+ n += 1 + sovBinlogdata(uint64(m.TabletType))
+ }
+ if m.KeyRange != nil {
+ l = m.KeyRange.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if len(m.Tables) > 0 {
+ for _, s := range m.Tables {
+ l = len(s)
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ }
+ if m.Filter != nil {
+ l = m.Filter.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.OnDdl != 0 {
+ n += 1 + sovBinlogdata(uint64(m.OnDdl))
+ }
+ l = len(m.ExternalMysql)
+ if l > 0 {
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.StopAfterCopy {
+ n += 2
+ }
+ l = len(m.ExternalCluster)
+ if l > 0 {
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RowChange) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Before != nil {
+ l = m.Before.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.After != nil {
+ l = m.After.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RowEvent) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.TableName)
+ if l > 0 {
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if len(m.RowChanges) > 0 {
+ for _, e := range m.RowChanges {
+ l = e.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *FieldEvent) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.TableName)
+ if l > 0 {
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if len(m.Fields) > 0 {
+ for _, e := range m.Fields {
+ l = e.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ShardGtid) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ l = len(m.Shard)
+ if l > 0 {
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ l = len(m.Gtid)
+ if l > 0 {
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if len(m.TablePKs) > 0 {
+ for _, e := range m.TablePKs {
+ l = e.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *VGtid) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.ShardGtids) > 0 {
+ for _, e := range m.ShardGtids {
+ l = e.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *KeyspaceShard) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ l = len(m.Shard)
+ if l > 0 {
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Journal) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Id != 0 {
+ n += 1 + sovBinlogdata(uint64(m.Id))
+ }
+ if m.MigrationType != 0 {
+ n += 1 + sovBinlogdata(uint64(m.MigrationType))
+ }
+ if len(m.Tables) > 0 {
+ for _, s := range m.Tables {
+ l = len(s)
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ }
+ l = len(m.LocalPosition)
+ if l > 0 {
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if len(m.ShardGtids) > 0 {
+ for _, e := range m.ShardGtids {
+ l = e.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ }
+ if len(m.Participants) > 0 {
+ for _, e := range m.Participants {
+ l = e.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ }
+ if len(m.SourceWorkflows) > 0 {
+ for _, s := range m.SourceWorkflows {
+ l = len(s)
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *VEvent) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Type != 0 {
+ n += 1 + sovBinlogdata(uint64(m.Type))
+ }
+ if m.Timestamp != 0 {
+ n += 1 + sovBinlogdata(uint64(m.Timestamp))
+ }
+ l = len(m.Gtid)
+ if l > 0 {
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ l = len(m.Statement)
+ if l > 0 {
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.RowEvent != nil {
+ l = m.RowEvent.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.FieldEvent != nil {
+ l = m.FieldEvent.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.Vgtid != nil {
+ l = m.Vgtid.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.Journal != nil {
+ l = m.Journal.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ l = len(m.Dml)
+ if l > 0 {
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.CurrentTime != 0 {
+ n += 2 + sovBinlogdata(uint64(m.CurrentTime))
+ }
+ if m.LastPKEvent != nil {
+ l = m.LastPKEvent.Size()
+ n += 2 + l + sovBinlogdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *MinimalTable) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if len(m.Fields) > 0 {
+ for _, e := range m.Fields {
+ l = e.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ }
+ if len(m.PKColumns) > 0 {
+ l = 0
+ for _, e := range m.PKColumns {
+ l += sovBinlogdata(uint64(e))
+ }
+ n += 1 + sovBinlogdata(uint64(l)) + l
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *MinimalSchema) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Tables) > 0 {
+ for _, e := range m.Tables {
+ l = e.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *VStreamRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.EffectiveCallerId != nil {
+ l = m.EffectiveCallerId.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.ImmediateCallerId != nil {
+ l = m.ImmediateCallerId.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.Target != nil {
+ l = m.Target.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ l = len(m.Position)
+ if l > 0 {
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.Filter != nil {
+ l = m.Filter.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if len(m.TableLastPKs) > 0 {
+ for _, e := range m.TableLastPKs {
+ l = e.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *VStreamResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Events) > 0 {
+ for _, e := range m.Events {
+ l = e.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *VStreamRowsRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.EffectiveCallerId != nil {
+ l = m.EffectiveCallerId.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.ImmediateCallerId != nil {
+ l = m.ImmediateCallerId.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.Target != nil {
+ l = m.Target.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ l = len(m.Query)
+ if l > 0 {
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.Lastpk != nil {
+ l = m.Lastpk.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *VStreamRowsResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Fields) > 0 {
+ for _, e := range m.Fields {
+ l = e.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ }
+ if len(m.Pkfields) > 0 {
+ for _, e := range m.Pkfields {
+ l = e.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ }
+ l = len(m.Gtid)
+ if l > 0 {
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if len(m.Rows) > 0 {
+ for _, e := range m.Rows {
+ l = e.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ }
+ if m.Lastpk != nil {
+ l = m.Lastpk.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *LastPKEvent) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.TableLastPK != nil {
+ l = m.TableLastPK.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.Completed {
+ n += 2
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *TableLastPK) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.TableName)
+ if l > 0 {
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.Lastpk != nil {
+ l = m.Lastpk.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *VStreamResultsRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.EffectiveCallerId != nil {
+ l = m.EffectiveCallerId.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.ImmediateCallerId != nil {
+ l = m.ImmediateCallerId.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.Target != nil {
+ l = m.Target.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ l = len(m.Query)
+ if l > 0 {
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *VStreamResultsResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Fields) > 0 {
+ for _, e := range m.Fields {
+ l = e.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ }
+ l = len(m.Gtid)
+ if l > 0 {
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ if len(m.Rows) > 0 {
+ for _, e := range m.Rows {
+ l = e.Size()
+ n += 1 + l + sovBinlogdata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func sovBinlogdata(x uint64) (n int) {
+ return (math_bits.Len64(x|1) + 6) / 7
+}
+func sozBinlogdata(x uint64) (n int) {
+ return sovBinlogdata(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+}
+func (m *Charset) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Charset: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Charset: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Client", wireType)
+ }
+ m.Client = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Client |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Conn", wireType)
+ }
+ m.Conn = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Conn |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Server", wireType)
+ }
+ m.Server = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Server |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *BinlogTransaction) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: BinlogTransaction: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: BinlogTransaction: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Statements", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Statements = append(m.Statements, &BinlogTransaction_Statement{})
+ if err := m.Statements[len(m.Statements)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EventToken", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.EventToken == nil {
+ m.EventToken = &query.EventToken{}
+ }
+ if err := m.EventToken.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *BinlogTransaction_Statement) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Statement: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Statement: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Category", wireType)
+ }
+ m.Category = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Category |= BinlogTransaction_Statement_Category(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Charset", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Charset == nil {
+ m.Charset = &Charset{}
+ }
+ if err := m.Charset.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Sql", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Sql = append(m.Sql[:0], dAtA[iNdEx:postIndex]...)
+ if m.Sql == nil {
+ m.Sql = []byte{}
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StreamKeyRangeRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StreamKeyRangeRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StreamKeyRangeRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Position", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Position = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field KeyRange", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.KeyRange == nil {
+ m.KeyRange = &topodata.KeyRange{}
+ }
+ if err := m.KeyRange.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Charset", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Charset == nil {
+ m.Charset = &Charset{}
+ }
+ if err := m.Charset.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StreamKeyRangeResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StreamKeyRangeResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StreamKeyRangeResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field BinlogTransaction", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.BinlogTransaction == nil {
+ m.BinlogTransaction = &BinlogTransaction{}
+ }
+ if err := m.BinlogTransaction.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StreamTablesRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StreamTablesRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StreamTablesRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Position", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Position = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Tables", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Tables = append(m.Tables, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Charset", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Charset == nil {
+ m.Charset = &Charset{}
+ }
+ if err := m.Charset.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StreamTablesResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StreamTablesResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StreamTablesResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field BinlogTransaction", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.BinlogTransaction == nil {
+ m.BinlogTransaction = &BinlogTransaction{}
+ }
+ if err := m.BinlogTransaction.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Rule) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Rule: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Rule: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Match", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Match = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Filter", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Filter = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Filter) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Filter: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Filter: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Rules", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Rules = append(m.Rules, &Rule{})
+ if err := m.Rules[len(m.Rules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field FieldEventMode", wireType)
+ }
+ m.FieldEventMode = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.FieldEventMode |= Filter_FieldEventMode(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *BinlogSource) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: BinlogSource: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: BinlogSource: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Shard", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Shard = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletType", wireType)
+ }
+ m.TabletType = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TabletType |= topodata.TabletType(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field KeyRange", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.KeyRange == nil {
+ m.KeyRange = &topodata.KeyRange{}
+ }
+ if err := m.KeyRange.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Tables", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Tables = append(m.Tables, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Filter", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Filter == nil {
+ m.Filter = &Filter{}
+ }
+ if err := m.Filter.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 7:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field OnDdl", wireType)
+ }
+ m.OnDdl = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.OnDdl |= OnDDLAction(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 8:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ExternalMysql", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ExternalMysql = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 9:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field StopAfterCopy", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.StopAfterCopy = bool(v != 0)
+ case 10:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ExternalCluster", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ExternalCluster = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RowChange) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RowChange: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RowChange: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Before", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Before == nil {
+ m.Before = &query.Row{}
+ }
+ if err := m.Before.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field After", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.After == nil {
+ m.After = &query.Row{}
+ }
+ if err := m.After.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RowEvent) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RowEvent: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RowEvent: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TableName", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.TableName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RowChanges", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.RowChanges = append(m.RowChanges, &RowChange{})
+ if err := m.RowChanges[len(m.RowChanges)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *FieldEvent) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: FieldEvent: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: FieldEvent: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TableName", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.TableName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Fields", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Fields = append(m.Fields, &query.Field{})
+ if err := m.Fields[len(m.Fields)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ShardGtid) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ShardGtid: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ShardGtid: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Shard", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Shard = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Gtid", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Gtid = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TablePKs", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.TablePKs = append(m.TablePKs, &TableLastPK{})
+ if err := m.TablePKs[len(m.TablePKs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *VGtid) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: VGtid: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: VGtid: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ShardGtids", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ShardGtids = append(m.ShardGtids, &ShardGtid{})
+ if err := m.ShardGtids[len(m.ShardGtids)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *KeyspaceShard) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: KeyspaceShard: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: KeyspaceShard: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Shard", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Shard = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Journal) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Journal: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Journal: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
+ }
+ m.Id = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Id |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MigrationType", wireType)
+ }
+ m.MigrationType = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.MigrationType |= MigrationType(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Tables", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Tables = append(m.Tables, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LocalPosition", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.LocalPosition = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ShardGtids", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ShardGtids = append(m.ShardGtids, &ShardGtid{})
+ if err := m.ShardGtids[len(m.ShardGtids)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Participants", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Participants = append(m.Participants, &KeyspaceShard{})
+ if err := m.Participants[len(m.Participants)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SourceWorkflows", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.SourceWorkflows = append(m.SourceWorkflows, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *VEvent) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: VEvent: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: VEvent: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
+ }
+ m.Type = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Type |= VEventType(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Timestamp", wireType)
+ }
+ m.Timestamp = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Timestamp |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Gtid", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Gtid = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Statement", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Statement = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RowEvent", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.RowEvent == nil {
+ m.RowEvent = &RowEvent{}
+ }
+ if err := m.RowEvent.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field FieldEvent", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.FieldEvent == nil {
+ m.FieldEvent = &FieldEvent{}
+ }
+ if err := m.FieldEvent.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Vgtid", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Vgtid == nil {
+ m.Vgtid = &VGtid{}
+ }
+ if err := m.Vgtid.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 8:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Journal", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Journal == nil {
+ m.Journal = &Journal{}
+ }
+ if err := m.Journal.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 9:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Dml", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Dml = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 20:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CurrentTime", wireType)
+ }
+ m.CurrentTime = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.CurrentTime |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 21:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LastPKEvent", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.LastPKEvent == nil {
+ m.LastPKEvent = &LastPKEvent{}
+ }
+ if err := m.LastPKEvent.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MinimalTable) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MinimalTable: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MinimalTable: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Fields", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Fields = append(m.Fields, &query.Field{})
+ if err := m.Fields[len(m.Fields)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType == 0 {
+ var v int64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.PKColumns = append(m.PKColumns, v)
+ } else if wireType == 2 {
+ var packedLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ packedLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if packedLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + packedLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ var elementCount int
+ var count int
+ for _, integer := range dAtA[iNdEx:postIndex] {
+ if integer < 128 {
+ count++
+ }
+ }
+ elementCount = count
+ if elementCount != 0 && len(m.PKColumns) == 0 {
+ m.PKColumns = make([]int64, 0, elementCount)
+ }
+ for iNdEx < postIndex {
+ var v int64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.PKColumns = append(m.PKColumns, v)
+ }
+ } else {
+ return fmt.Errorf("proto: wrong wireType = %d for field PKColumns", wireType)
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MinimalSchema) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MinimalSchema: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MinimalSchema: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Tables", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Tables = append(m.Tables, &MinimalTable{})
+ if err := m.Tables[len(m.Tables)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *VStreamRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: VStreamRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: VStreamRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EffectiveCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.EffectiveCallerId == nil {
+ m.EffectiveCallerId = &vtrpc.CallerID{}
+ }
+ if err := m.EffectiveCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImmediateCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ImmediateCallerId == nil {
+ m.ImmediateCallerId = &query.VTGateCallerID{}
+ }
+ if err := m.ImmediateCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &query.Target{}
+ }
+ if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Position", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Position = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Filter", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Filter == nil {
+ m.Filter = &Filter{}
+ }
+ if err := m.Filter.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TableLastPKs", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.TableLastPKs = append(m.TableLastPKs, &TableLastPK{})
+ if err := m.TableLastPKs[len(m.TableLastPKs)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *VStreamResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: VStreamResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: VStreamResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Events", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Events = append(m.Events, &VEvent{})
+ if err := m.Events[len(m.Events)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *VStreamRowsRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: VStreamRowsRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: VStreamRowsRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EffectiveCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.EffectiveCallerId == nil {
+ m.EffectiveCallerId = &vtrpc.CallerID{}
+ }
+ if err := m.EffectiveCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImmediateCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ImmediateCallerId == nil {
+ m.ImmediateCallerId = &query.VTGateCallerID{}
+ }
+ if err := m.ImmediateCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &query.Target{}
+ }
+ if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Query", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Query = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Lastpk", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Lastpk == nil {
+ m.Lastpk = &query.QueryResult{}
+ }
+ if err := m.Lastpk.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *VStreamRowsResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: VStreamRowsResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: VStreamRowsResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Fields", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Fields = append(m.Fields, &query.Field{})
+ if err := m.Fields[len(m.Fields)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Pkfields", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Pkfields = append(m.Pkfields, &query.Field{})
+ if err := m.Pkfields[len(m.Pkfields)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Gtid", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Gtid = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Rows", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Rows = append(m.Rows, &query.Row{})
+ if err := m.Rows[len(m.Rows)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Lastpk", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Lastpk == nil {
+ m.Lastpk = &query.Row{}
+ }
+ if err := m.Lastpk.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *LastPKEvent) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: LastPKEvent: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: LastPKEvent: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TableLastPK", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.TableLastPK == nil {
+ m.TableLastPK = &TableLastPK{}
+ }
+ if err := m.TableLastPK.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Completed", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Completed = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *TableLastPK) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: TableLastPK: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: TableLastPK: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TableName", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.TableName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Lastpk", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Lastpk == nil {
+ m.Lastpk = &query.QueryResult{}
+ }
+ if err := m.Lastpk.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *VStreamResultsRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: VStreamResultsRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: VStreamResultsRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EffectiveCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.EffectiveCallerId == nil {
+ m.EffectiveCallerId = &vtrpc.CallerID{}
+ }
+ if err := m.EffectiveCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImmediateCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ImmediateCallerId == nil {
+ m.ImmediateCallerId = &query.VTGateCallerID{}
+ }
+ if err := m.ImmediateCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &query.Target{}
+ }
+ if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Query", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Query = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *VStreamResultsResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: VStreamResultsResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: VStreamResultsResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Fields", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Fields = append(m.Fields, &query.Field{})
+ if err := m.Fields[len(m.Fields)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Gtid", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Gtid = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Rows", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Rows = append(m.Rows, &query.Row{})
+ if err := m.Rows[len(m.Rows)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipBinlogdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthBinlogdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func skipBinlogdata(dAtA []byte) (n int, err error) {
+ l := len(dAtA)
+ iNdEx := 0
+ depth := 0
+ for iNdEx < l {
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ wireType := int(wire & 0x7)
+ switch wireType {
+ case 0:
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ iNdEx++
+ if dAtA[iNdEx-1] < 0x80 {
+ break
+ }
+ }
+ case 1:
+ iNdEx += 8
+ case 2:
+ var length int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowBinlogdata
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ length |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if length < 0 {
+ return 0, ErrInvalidLengthBinlogdata
+ }
+ iNdEx += length
+ case 3:
+ depth++
+ case 4:
+ if depth == 0 {
+ return 0, ErrUnexpectedEndOfGroupBinlogdata
+ }
+ depth--
+ case 5:
+ iNdEx += 4
+ default:
+ return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
+ }
+ if iNdEx < 0 {
+ return 0, ErrInvalidLengthBinlogdata
+ }
+ if depth == 0 {
+ return iNdEx, nil
+ }
+ }
+ return 0, io.ErrUnexpectedEOF
+}
+
+var (
+ ErrInvalidLengthBinlogdata = fmt.Errorf("proto: negative length found during unmarshaling")
+ ErrIntOverflowBinlogdata = fmt.Errorf("proto: integer overflow")
+ ErrUnexpectedEndOfGroupBinlogdata = fmt.Errorf("proto: unexpected end of group")
+)
diff --git a/go/vt/proto/binlogservice/binlogservice.pb.go b/go/vt/proto/binlogservice/binlogservice.pb.go
index 0d2d06418fa..c0d419b0cb0 100644
--- a/go/vt/proto/binlogservice/binlogservice.pb.go
+++ b/go/vt/proto/binlogservice/binlogservice.pb.go
@@ -1,4 +1,4 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: binlogservice.proto
package binlogservice
@@ -12,7 +12,6 @@ import (
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
-
binlogdata "vitess.io/vitess/go/vt/proto/binlogdata"
)
@@ -30,7 +29,7 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
func init() { proto.RegisterFile("binlogservice.proto", fileDescriptor_4ccdea02fd9c8d58) }
var fileDescriptor_4ccdea02fd9c8d58 = []byte{
- // 177 bytes of a gzipped FileDescriptorProto
+ // 194 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x4e, 0xca, 0xcc, 0xcb,
0xc9, 0x4f, 0x2f, 0x4e, 0x2d, 0x2a, 0xcb, 0x4c, 0x4e, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17,
0xe2, 0x45, 0x11, 0x94, 0x12, 0x80, 0x70, 0x53, 0x12, 0x4b, 0x12, 0x21, 0x0a, 0x8c, 0x0e, 0x31,
@@ -39,10 +38,11 @@ var fileDescriptor_4ccdea02fd9c8d58 = []byte{
0xba, 0x50, 0xe5, 0x82, 0x52, 0x0b, 0x4b, 0x53, 0x8b, 0x4b, 0xa4, 0x94, 0xf0, 0x29, 0x29, 0x2e,
0xc8, 0xcf, 0x2b, 0x4e, 0x55, 0x62, 0x30, 0x60, 0x14, 0x0a, 0xe5, 0xe2, 0x81, 0xc8, 0x86, 0x24,
0x26, 0xe5, 0xa4, 0x16, 0x0b, 0xc9, 0x63, 0xea, 0x83, 0xc8, 0xc0, 0x0c, 0x56, 0xc0, 0xad, 0x00,
- 0x61, 0xac, 0x93, 0x4e, 0x94, 0x56, 0x59, 0x66, 0x49, 0x6a, 0x71, 0xb1, 0x5e, 0x66, 0xbe, 0x3e,
- 0x84, 0xa5, 0x9f, 0x9e, 0xaf, 0x5f, 0x56, 0xa2, 0x0f, 0xf6, 0xa4, 0x3e, 0x4a, 0x20, 0x24, 0xb1,
- 0x81, 0x05, 0x8d, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0x4a, 0xf4, 0x0a, 0x9c, 0x31, 0x01, 0x00,
- 0x00,
+ 0x61, 0xac, 0x93, 0xcd, 0x89, 0x47, 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7,
+ 0x38, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x56, 0x59, 0x66, 0x49, 0x6a, 0x71, 0xb1, 0x5e, 0x66, 0xbe,
+ 0x3e, 0x84, 0xa5, 0x9f, 0x9e, 0xaf, 0x5f, 0x56, 0xa2, 0x0f, 0xf6, 0xb4, 0x3e, 0x4a, 0xa0, 0x24,
+ 0xb1, 0x81, 0x05, 0x8d, 0x01, 0x01, 0x00, 0x00, 0xff, 0xff, 0xda, 0xef, 0x13, 0x20, 0x41, 0x01,
+ 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
diff --git a/go/vt/proto/logutil/logutil.pb.go b/go/vt/proto/logutil/logutil.pb.go
index d51f2962abb..0185fb41955 100644
--- a/go/vt/proto/logutil/logutil.pb.go
+++ b/go/vt/proto/logutil/logutil.pb.go
@@ -1,14 +1,15 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: logutil.proto
package logutil
import (
fmt "fmt"
+ io "io"
math "math"
+ math_bits "math/bits"
proto "github.com/golang/protobuf/proto"
-
vttime "vitess.io/vitess/go/vt/proto/vttime"
)
@@ -77,18 +78,26 @@ func (*Event) ProtoMessage() {}
func (*Event) Descriptor() ([]byte, []int) {
return fileDescriptor_31f5dd3702a8edf9, []int{0}
}
-
func (m *Event) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Event.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Event) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Event.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Event.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Event) XXX_Merge(src proto.Message) {
xxx_messageInfo_Event.Merge(m, src)
}
func (m *Event) XXX_Size() int {
- return xxx_messageInfo_Event.Size(m)
+ return m.Size()
}
func (m *Event) XXX_DiscardUnknown() {
xxx_messageInfo_Event.DiscardUnknown(m)
@@ -139,20 +148,409 @@ func init() {
func init() { proto.RegisterFile("logutil.proto", fileDescriptor_31f5dd3702a8edf9) }
var fileDescriptor_31f5dd3702a8edf9 = []byte{
- // 236 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x34, 0x8f, 0x5f, 0x4b, 0xc3, 0x30,
- 0x14, 0xc5, 0xcd, 0xda, 0x38, 0x77, 0x37, 0x47, 0xb9, 0xf8, 0x10, 0x7c, 0x0a, 0x32, 0xa4, 0xf8,
- 0xd0, 0xc0, 0x04, 0xdf, 0x55, 0xaa, 0x0c, 0x46, 0x0b, 0x57, 0x41, 0xf0, 0x4d, 0xe1, 0x3a, 0x02,
- 0xd9, 0x22, 0x2e, 0xcd, 0xb7, 0xf0, 0x3b, 0x4b, 0xd3, 0xfa, 0x76, 0xce, 0xef, 0x1c, 0xee, 0x1f,
- 0x38, 0x77, 0x7e, 0xd7, 0x05, 0xeb, 0xaa, 0xef, 0x1f, 0x1f, 0x3c, 0x4e, 0x47, 0x7b, 0xb9, 0x88,
- 0x21, 0xd8, 0x3d, 0x0f, 0xf8, 0xea, 0x57, 0x80, 0xac, 0x23, 0x1f, 0x02, 0x6a, 0xc8, 0x7b, 0xae,
- 0x84, 0x16, 0xe5, 0x7c, 0xbd, 0xa8, 0xc6, 0xda, 0xab, 0xdd, 0x33, 0xa5, 0x04, 0x57, 0x20, 0x1d,
- 0x47, 0x76, 0x6a, 0xa2, 0x45, 0xb9, 0x5c, 0x2f, 0xab, 0xff, 0x0d, 0xdb, 0x9e, 0xd2, 0x10, 0x22,
- 0x42, 0xfe, 0x65, 0x1d, 0xab, 0x4c, 0x8b, 0x72, 0x46, 0x49, 0xf7, 0xcc, 0xd9, 0x03, 0xab, 0x5c,
- 0x8b, 0x32, 0xa3, 0xa4, 0xf1, 0x02, 0x64, 0xfc, 0x70, 0x1d, 0x2b, 0x99, 0x8a, 0x83, 0xb9, 0xb9,
- 0x03, 0x99, 0xa6, 0xe1, 0x19, 0xe4, 0x9b, 0xe6, 0xa9, 0x2d, 0x4e, 0x70, 0x0e, 0xd3, 0xb7, 0x7b,
- 0x6a, 0x36, 0xcd, 0x73, 0x21, 0x70, 0x06, 0xb2, 0x26, 0x6a, 0xa9, 0x98, 0xf4, 0xfc, 0xb1, 0x6d,
- 0x5e, 0xda, 0x6d, 0x5d, 0x64, 0x0f, 0xd7, 0xef, 0xab, 0x68, 0x03, 0x1f, 0x8f, 0x95, 0xf5, 0x66,
- 0x50, 0x66, 0xe7, 0x4d, 0x0c, 0x26, 0xfd, 0x69, 0xc6, 0x53, 0x3f, 0x4f, 0x93, 0xbd, 0xfd, 0x0b,
- 0x00, 0x00, 0xff, 0xff, 0xa4, 0x27, 0x83, 0x63, 0x1e, 0x01, 0x00, 0x00,
+ // 258 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x34, 0x8f, 0xcd, 0x4a, 0xc3, 0x40,
+ 0x14, 0x85, 0x7b, 0x9b, 0x8c, 0xb5, 0xb7, 0xb5, 0x84, 0xc1, 0x45, 0x70, 0x11, 0x06, 0xe9, 0x22,
+ 0xb8, 0xc8, 0x40, 0x85, 0xee, 0x55, 0xa2, 0x14, 0x4a, 0x02, 0xa3, 0x20, 0xb8, 0x53, 0xb8, 0x96,
+ 0x81, 0x69, 0x47, 0xec, 0x74, 0xde, 0xc2, 0xbd, 0x8f, 0xe4, 0xd2, 0x47, 0x90, 0xf8, 0x22, 0x92,
+ 0x49, 0xdc, 0x9d, 0xf3, 0x9d, 0xc3, 0xfd, 0xc1, 0x13, 0x63, 0x37, 0x07, 0xa7, 0x4d, 0xf1, 0xf6,
+ 0x6e, 0x9d, 0xe5, 0xa3, 0xde, 0x9e, 0x4d, 0xbd, 0x73, 0x7a, 0x4b, 0x1d, 0x3e, 0xff, 0x00, 0x64,
+ 0xa5, 0xa7, 0x9d, 0xe3, 0x02, 0xe3, 0x96, 0xa7, 0x20, 0x20, 0x9f, 0x2c, 0xa6, 0x45, 0x5f, 0x7b,
+ 0xd0, 0x5b, 0x52, 0x21, 0xe1, 0x73, 0x64, 0x86, 0x3c, 0x99, 0x74, 0x28, 0x20, 0x9f, 0x2d, 0x66,
+ 0xc5, 0xff, 0x86, 0x75, 0x4b, 0x55, 0x17, 0x72, 0x8e, 0xf1, 0xab, 0x36, 0x94, 0x46, 0x02, 0xf2,
+ 0xb1, 0x0a, 0xba, 0x65, 0x46, 0xef, 0x28, 0x8d, 0x05, 0xe4, 0x91, 0x0a, 0x9a, 0x9f, 0x22, 0xf3,
+ 0xcf, 0xe6, 0x40, 0x29, 0x0b, 0xc5, 0xce, 0x5c, 0x2c, 0x91, 0x85, 0x69, 0xfc, 0x18, 0xe3, 0x55,
+ 0x75, 0x5b, 0x27, 0x03, 0x3e, 0xc1, 0xd1, 0xe3, 0x95, 0xaa, 0x56, 0xd5, 0x5d, 0x02, 0x7c, 0x8c,
+ 0xac, 0x54, 0xaa, 0x56, 0xc9, 0xb0, 0xe5, 0x37, 0x75, 0x75, 0x5f, 0xaf, 0xcb, 0x24, 0xba, 0x5e,
+ 0x7e, 0x35, 0x19, 0x7c, 0x37, 0x19, 0xfc, 0x34, 0x19, 0x7c, 0xfe, 0x66, 0x83, 0xa7, 0xb9, 0xd7,
+ 0x8e, 0xf6, 0xfb, 0x42, 0x5b, 0xd9, 0x29, 0xb9, 0xb1, 0xd2, 0x3b, 0x19, 0xfe, 0x96, 0xfd, 0xe9,
+ 0x2f, 0x47, 0xc1, 0x5e, 0xfe, 0x05, 0x00, 0x00, 0xff, 0xff, 0x7b, 0xc4, 0x19, 0xa7, 0x2e, 0x01,
+ 0x00, 0x00,
+}
+
+func (m *Event) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Event) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Event) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Value) > 0 {
+ i -= len(m.Value)
+ copy(dAtA[i:], m.Value)
+ i = encodeVarintLogutil(dAtA, i, uint64(len(m.Value)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if m.Line != 0 {
+ i = encodeVarintLogutil(dAtA, i, uint64(m.Line))
+ i--
+ dAtA[i] = 0x20
+ }
+ if len(m.File) > 0 {
+ i -= len(m.File)
+ copy(dAtA[i:], m.File)
+ i = encodeVarintLogutil(dAtA, i, uint64(len(m.File)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.Level != 0 {
+ i = encodeVarintLogutil(dAtA, i, uint64(m.Level))
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.Time != nil {
+ {
+ size, err := m.Time.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintLogutil(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
}
+
+func encodeVarintLogutil(dAtA []byte, offset int, v uint64) int {
+ offset -= sovLogutil(v)
+ base := offset
+ for v >= 1<<7 {
+ dAtA[offset] = uint8(v&0x7f | 0x80)
+ v >>= 7
+ offset++
+ }
+ dAtA[offset] = uint8(v)
+ return base
+}
+func (m *Event) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Time != nil {
+ l = m.Time.Size()
+ n += 1 + l + sovLogutil(uint64(l))
+ }
+ if m.Level != 0 {
+ n += 1 + sovLogutil(uint64(m.Level))
+ }
+ l = len(m.File)
+ if l > 0 {
+ n += 1 + l + sovLogutil(uint64(l))
+ }
+ if m.Line != 0 {
+ n += 1 + sovLogutil(uint64(m.Line))
+ }
+ l = len(m.Value)
+ if l > 0 {
+ n += 1 + l + sovLogutil(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func sovLogutil(x uint64) (n int) {
+ return (math_bits.Len64(x|1) + 6) / 7
+}
+func sozLogutil(x uint64) (n int) {
+ return sovLogutil(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+}
+func (m *Event) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowLogutil
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Event: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Event: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Time", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowLogutil
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthLogutil
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthLogutil
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Time == nil {
+ m.Time = &vttime.Time{}
+ }
+ if err := m.Time.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Level", wireType)
+ }
+ m.Level = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowLogutil
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Level |= Level(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field File", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowLogutil
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthLogutil
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthLogutil
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.File = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Line", wireType)
+ }
+ m.Line = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowLogutil
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Line |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowLogutil
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthLogutil
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthLogutil
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Value = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipLogutil(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthLogutil
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthLogutil
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func skipLogutil(dAtA []byte) (n int, err error) {
+ l := len(dAtA)
+ iNdEx := 0
+ depth := 0
+ for iNdEx < l {
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowLogutil
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ wireType := int(wire & 0x7)
+ switch wireType {
+ case 0:
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowLogutil
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ iNdEx++
+ if dAtA[iNdEx-1] < 0x80 {
+ break
+ }
+ }
+ case 1:
+ iNdEx += 8
+ case 2:
+ var length int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowLogutil
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ length |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if length < 0 {
+ return 0, ErrInvalidLengthLogutil
+ }
+ iNdEx += length
+ case 3:
+ depth++
+ case 4:
+ if depth == 0 {
+ return 0, ErrUnexpectedEndOfGroupLogutil
+ }
+ depth--
+ case 5:
+ iNdEx += 4
+ default:
+ return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
+ }
+ if iNdEx < 0 {
+ return 0, ErrInvalidLengthLogutil
+ }
+ if depth == 0 {
+ return iNdEx, nil
+ }
+ }
+ return 0, io.ErrUnexpectedEOF
+}
+
+var (
+ ErrInvalidLengthLogutil = fmt.Errorf("proto: negative length found during unmarshaling")
+ ErrIntOverflowLogutil = fmt.Errorf("proto: integer overflow")
+ ErrUnexpectedEndOfGroupLogutil = fmt.Errorf("proto: unexpected end of group")
+)
diff --git a/go/vt/proto/mysqlctl/mysqlctl.pb.go b/go/vt/proto/mysqlctl/mysqlctl.pb.go
index 2b80a9971d9..27512f92d99 100644
--- a/go/vt/proto/mysqlctl/mysqlctl.pb.go
+++ b/go/vt/proto/mysqlctl/mysqlctl.pb.go
@@ -1,4 +1,4 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: mysqlctl.proto
package mysqlctl
@@ -6,7 +6,9 @@ package mysqlctl
import (
context "context"
fmt "fmt"
+ io "io"
math "math"
+ math_bits "math/bits"
proto "github.com/golang/protobuf/proto"
grpc "google.golang.org/grpc"
@@ -38,18 +40,26 @@ func (*StartRequest) ProtoMessage() {}
func (*StartRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_cd8c110e42f9cbb9, []int{0}
}
-
func (m *StartRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StartRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *StartRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StartRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_StartRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *StartRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_StartRequest.Merge(m, src)
}
func (m *StartRequest) XXX_Size() int {
- return xxx_messageInfo_StartRequest.Size(m)
+ return m.Size()
}
func (m *StartRequest) XXX_DiscardUnknown() {
xxx_messageInfo_StartRequest.DiscardUnknown(m)
@@ -76,18 +86,26 @@ func (*StartResponse) ProtoMessage() {}
func (*StartResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_cd8c110e42f9cbb9, []int{1}
}
-
func (m *StartResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StartResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *StartResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StartResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_StartResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *StartResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_StartResponse.Merge(m, src)
}
func (m *StartResponse) XXX_Size() int {
- return xxx_messageInfo_StartResponse.Size(m)
+ return m.Size()
}
func (m *StartResponse) XXX_DiscardUnknown() {
xxx_messageInfo_StartResponse.DiscardUnknown(m)
@@ -108,18 +126,26 @@ func (*ShutdownRequest) ProtoMessage() {}
func (*ShutdownRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_cd8c110e42f9cbb9, []int{2}
}
-
func (m *ShutdownRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ShutdownRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ShutdownRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ShutdownRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ShutdownRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ShutdownRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ShutdownRequest.Merge(m, src)
}
func (m *ShutdownRequest) XXX_Size() int {
- return xxx_messageInfo_ShutdownRequest.Size(m)
+ return m.Size()
}
func (m *ShutdownRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ShutdownRequest.DiscardUnknown(m)
@@ -146,18 +172,26 @@ func (*ShutdownResponse) ProtoMessage() {}
func (*ShutdownResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_cd8c110e42f9cbb9, []int{3}
}
-
func (m *ShutdownResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ShutdownResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ShutdownResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ShutdownResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ShutdownResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ShutdownResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ShutdownResponse.Merge(m, src)
}
func (m *ShutdownResponse) XXX_Size() int {
- return xxx_messageInfo_ShutdownResponse.Size(m)
+ return m.Size()
}
func (m *ShutdownResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ShutdownResponse.DiscardUnknown(m)
@@ -177,18 +211,26 @@ func (*RunMysqlUpgradeRequest) ProtoMessage() {}
func (*RunMysqlUpgradeRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_cd8c110e42f9cbb9, []int{4}
}
-
func (m *RunMysqlUpgradeRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_RunMysqlUpgradeRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *RunMysqlUpgradeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_RunMysqlUpgradeRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_RunMysqlUpgradeRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *RunMysqlUpgradeRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_RunMysqlUpgradeRequest.Merge(m, src)
}
func (m *RunMysqlUpgradeRequest) XXX_Size() int {
- return xxx_messageInfo_RunMysqlUpgradeRequest.Size(m)
+ return m.Size()
}
func (m *RunMysqlUpgradeRequest) XXX_DiscardUnknown() {
xxx_messageInfo_RunMysqlUpgradeRequest.DiscardUnknown(m)
@@ -208,18 +250,26 @@ func (*RunMysqlUpgradeResponse) ProtoMessage() {}
func (*RunMysqlUpgradeResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_cd8c110e42f9cbb9, []int{5}
}
-
func (m *RunMysqlUpgradeResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_RunMysqlUpgradeResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *RunMysqlUpgradeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_RunMysqlUpgradeResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_RunMysqlUpgradeResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *RunMysqlUpgradeResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_RunMysqlUpgradeResponse.Merge(m, src)
}
func (m *RunMysqlUpgradeResponse) XXX_Size() int {
- return xxx_messageInfo_RunMysqlUpgradeResponse.Size(m)
+ return m.Size()
}
func (m *RunMysqlUpgradeResponse) XXX_DiscardUnknown() {
xxx_messageInfo_RunMysqlUpgradeResponse.DiscardUnknown(m)
@@ -239,18 +289,26 @@ func (*ReinitConfigRequest) ProtoMessage() {}
func (*ReinitConfigRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_cd8c110e42f9cbb9, []int{6}
}
-
func (m *ReinitConfigRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ReinitConfigRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ReinitConfigRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ReinitConfigRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ReinitConfigRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ReinitConfigRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReinitConfigRequest.Merge(m, src)
}
func (m *ReinitConfigRequest) XXX_Size() int {
- return xxx_messageInfo_ReinitConfigRequest.Size(m)
+ return m.Size()
}
func (m *ReinitConfigRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ReinitConfigRequest.DiscardUnknown(m)
@@ -270,18 +328,26 @@ func (*ReinitConfigResponse) ProtoMessage() {}
func (*ReinitConfigResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_cd8c110e42f9cbb9, []int{7}
}
-
func (m *ReinitConfigResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ReinitConfigResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ReinitConfigResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ReinitConfigResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ReinitConfigResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ReinitConfigResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReinitConfigResponse.Merge(m, src)
}
func (m *ReinitConfigResponse) XXX_Size() int {
- return xxx_messageInfo_ReinitConfigResponse.Size(m)
+ return m.Size()
}
func (m *ReinitConfigResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ReinitConfigResponse.DiscardUnknown(m)
@@ -301,18 +367,26 @@ func (*RefreshConfigRequest) ProtoMessage() {}
func (*RefreshConfigRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_cd8c110e42f9cbb9, []int{8}
}
-
func (m *RefreshConfigRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_RefreshConfigRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *RefreshConfigRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_RefreshConfigRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_RefreshConfigRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *RefreshConfigRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_RefreshConfigRequest.Merge(m, src)
}
func (m *RefreshConfigRequest) XXX_Size() int {
- return xxx_messageInfo_RefreshConfigRequest.Size(m)
+ return m.Size()
}
func (m *RefreshConfigRequest) XXX_DiscardUnknown() {
xxx_messageInfo_RefreshConfigRequest.DiscardUnknown(m)
@@ -332,18 +406,26 @@ func (*RefreshConfigResponse) ProtoMessage() {}
func (*RefreshConfigResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_cd8c110e42f9cbb9, []int{9}
}
-
func (m *RefreshConfigResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_RefreshConfigResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *RefreshConfigResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_RefreshConfigResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_RefreshConfigResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *RefreshConfigResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_RefreshConfigResponse.Merge(m, src)
}
func (m *RefreshConfigResponse) XXX_Size() int {
- return xxx_messageInfo_RefreshConfigResponse.Size(m)
+ return m.Size()
}
func (m *RefreshConfigResponse) XXX_DiscardUnknown() {
xxx_messageInfo_RefreshConfigResponse.DiscardUnknown(m)
@@ -351,6 +433,62 @@ func (m *RefreshConfigResponse) XXX_DiscardUnknown() {
var xxx_messageInfo_RefreshConfigResponse proto.InternalMessageInfo
+// BackupInfo is the read-only attributes of a mysqlctl/backupstorage.BackupHandle.
+type BackupInfo struct {
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ Directory string `protobuf:"bytes,2,opt,name=directory,proto3" json:"directory,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *BackupInfo) Reset() { *m = BackupInfo{} }
+func (m *BackupInfo) String() string { return proto.CompactTextString(m) }
+func (*BackupInfo) ProtoMessage() {}
+func (*BackupInfo) Descriptor() ([]byte, []int) {
+ return fileDescriptor_cd8c110e42f9cbb9, []int{10}
+}
+func (m *BackupInfo) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *BackupInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_BackupInfo.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *BackupInfo) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_BackupInfo.Merge(m, src)
+}
+func (m *BackupInfo) XXX_Size() int {
+ return m.Size()
+}
+func (m *BackupInfo) XXX_DiscardUnknown() {
+ xxx_messageInfo_BackupInfo.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BackupInfo proto.InternalMessageInfo
+
+func (m *BackupInfo) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *BackupInfo) GetDirectory() string {
+ if m != nil {
+ return m.Directory
+ }
+ return ""
+}
+
func init() {
proto.RegisterType((*StartRequest)(nil), "mysqlctl.StartRequest")
proto.RegisterType((*StartResponse)(nil), "mysqlctl.StartResponse")
@@ -362,34 +500,39 @@ func init() {
proto.RegisterType((*ReinitConfigResponse)(nil), "mysqlctl.ReinitConfigResponse")
proto.RegisterType((*RefreshConfigRequest)(nil), "mysqlctl.RefreshConfigRequest")
proto.RegisterType((*RefreshConfigResponse)(nil), "mysqlctl.RefreshConfigResponse")
+ proto.RegisterType((*BackupInfo)(nil), "mysqlctl.BackupInfo")
}
func init() { proto.RegisterFile("mysqlctl.proto", fileDescriptor_cd8c110e42f9cbb9) }
var fileDescriptor_cd8c110e42f9cbb9 = []byte{
- // 339 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x92, 0x4d, 0x4f, 0xfa, 0x30,
- 0x1c, 0xc7, 0xff, 0x84, 0xfc, 0xcd, 0xfc, 0x09, 0xce, 0x54, 0x79, 0x6a, 0xa2, 0xe0, 0x12, 0x95,
- 0x13, 0x4d, 0xf4, 0xa4, 0x37, 0x25, 0xf1, 0x66, 0x4c, 0x4a, 0x4c, 0x8c, 0x17, 0x32, 0xa5, 0x8c,
- 0x26, 0xb8, 0x42, 0x5b, 0x20, 0xbe, 0x05, 0x5f, 0xb5, 0xb1, 0x6b, 0xc7, 0xc6, 0xc0, 0xdb, 0xfa,
- 0x7d, 0x6a, 0xf6, 0xd9, 0xe0, 0xf0, 0xf3, 0x4b, 0xcd, 0xa7, 0x1f, 0x7a, 0xda, 0x9b, 0x49, 0xa1,
- 0x05, 0xf2, 0xdc, 0x39, 0x20, 0x50, 0x19, 0xe8, 0x50, 0x6a, 0xca, 0xe6, 0x0b, 0xa6, 0x34, 0x6a,
- 0xc3, 0x81, 0xf1, 0x46, 0xc3, 0x50, 0x46, 0xaa, 0x59, 0xea, 0x94, 0xbb, 0xfb, 0x14, 0x12, 0xe9,
- 0x5e, 0x46, 0x2a, 0xf0, 0xa1, 0x6a, 0x0b, 0x6a, 0x26, 0x62, 0xc5, 0x82, 0x5b, 0xf0, 0x07, 0x93,
- 0x85, 0x1e, 0x89, 0x55, 0xec, 0x46, 0x2e, 0xc1, 0x5f, 0x85, 0x5c, 0x0f, 0xc7, 0x42, 0x0e, 0x93,
- 0x6a, 0xb3, 0xd4, 0x29, 0x75, 0x3d, 0x5a, 0xfd, 0x95, 0x1f, 0x85, 0x7c, 0x32, 0x62, 0x80, 0xe0,
- 0x68, 0x5d, 0xb5, 0x73, 0x4d, 0xa8, 0xd3, 0x45, 0x6c, 0x02, 0x2f, 0xb3, 0x48, 0x86, 0x23, 0x66,
- 0x57, 0x83, 0x16, 0x34, 0x0a, 0x8e, 0x2d, 0xd5, 0xe0, 0x98, 0x32, 0x1e, 0x73, 0xdd, 0x17, 0xf1,
- 0x98, 0x47, 0xae, 0x51, 0x87, 0x93, 0xbc, 0x6c, 0xe3, 0x46, 0x1f, 0x4b, 0xa6, 0x26, 0xf9, 0x7c,
- 0x03, 0x6a, 0x1b, 0x7a, 0x52, 0xb8, 0xfe, 0x2e, 0x83, 0x67, 0x2e, 0xee, 0xeb, 0x29, 0xba, 0x83,
- 0xff, 0x86, 0x00, 0xaa, 0xf7, 0x52, 0xac, 0x59, 0x86, 0xb8, 0x51, 0xd0, 0xed, 0xbd, 0xff, 0x50,
- 0x1f, 0x3c, 0xf7, 0xc6, 0xa8, 0x95, 0x89, 0xe5, 0x01, 0x62, 0xbc, 0xcd, 0x4a, 0x47, 0x5e, 0xc1,
- 0xdf, 0x00, 0x81, 0x3a, 0xeb, 0xc2, 0x76, 0x7a, 0xf8, 0xfc, 0x8f, 0x44, 0xba, 0xfc, 0x0c, 0x95,
- 0x2c, 0x30, 0x74, 0x9a, 0x29, 0x15, 0xf9, 0xe2, 0xb3, 0x5d, 0x76, 0x3a, 0x48, 0xa1, 0x9a, 0x23,
- 0x8a, 0x72, 0x95, 0xe2, 0x27, 0xc0, 0xed, 0x9d, 0xbe, 0xdb, 0x7c, 0xb8, 0x7a, 0xbb, 0x58, 0x72,
- 0xcd, 0x94, 0xea, 0x71, 0x41, 0x92, 0x27, 0x12, 0x09, 0xb2, 0xd4, 0xc4, 0xfc, 0xdc, 0xc4, 0x0d,
- 0xbc, 0xef, 0x99, 0xf3, 0xcd, 0x4f, 0x00, 0x00, 0x00, 0xff, 0xff, 0xb8, 0xe2, 0x15, 0x86, 0xfe,
- 0x02, 0x00, 0x00,
+ // 405 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x53, 0xdf, 0x6a, 0xda, 0x50,
+ 0x1c, 0x36, 0x73, 0x1b, 0xf1, 0x37, 0x5d, 0xc6, 0xd9, 0xd4, 0x18, 0xb6, 0xe8, 0x02, 0x1b, 0x5e,
+ 0x19, 0xd8, 0x2e, 0xc6, 0x7a, 0x51, 0xa8, 0x42, 0xa1, 0x17, 0xa5, 0x10, 0x29, 0x94, 0xde, 0x48,
+ 0x6a, 0x4e, 0x62, 0xa8, 0xe6, 0xc4, 0x73, 0x4e, 0x14, 0x5f, 0xa1, 0x4f, 0xd0, 0x47, 0xea, 0x65,
+ 0x1f, 0xa1, 0xd8, 0x17, 0x29, 0x3d, 0x26, 0x31, 0x31, 0xda, 0xbb, 0x73, 0xbe, 0x7f, 0x9c, 0x7c,
+ 0x1f, 0x81, 0xcf, 0xb3, 0x15, 0x9b, 0x4f, 0xc7, 0x7c, 0xda, 0x0b, 0x29, 0xe1, 0x04, 0xc9, 0xc9,
+ 0xdd, 0x30, 0xa1, 0x3a, 0xe4, 0x36, 0xe5, 0x16, 0x9e, 0x47, 0x98, 0x71, 0xd4, 0x86, 0x4f, 0x82,
+ 0x73, 0x46, 0x36, 0xf5, 0x98, 0x2a, 0x75, 0xca, 0xdd, 0x8a, 0x05, 0x1b, 0xe8, 0x84, 0x7a, 0xcc,
+ 0x50, 0xa0, 0x16, 0x1b, 0x58, 0x48, 0x02, 0x86, 0x8d, 0xff, 0xa0, 0x0c, 0x27, 0x11, 0x77, 0xc8,
+ 0x32, 0x48, 0x42, 0x7e, 0x83, 0xb2, 0xb4, 0x7d, 0x3e, 0x72, 0x09, 0x1d, 0x6d, 0xac, 0xaa, 0xd4,
+ 0x91, 0xba, 0xb2, 0x55, 0x7b, 0x85, 0x4f, 0x09, 0x3d, 0x17, 0xa0, 0x81, 0xe0, 0xcb, 0xd6, 0x1a,
+ 0xc7, 0xa9, 0xd0, 0xb0, 0xa2, 0x40, 0x08, 0x2e, 0x43, 0x8f, 0xda, 0x0e, 0x8e, 0x53, 0x8d, 0x16,
+ 0x34, 0x0b, 0x4c, 0x6c, 0xaa, 0xc3, 0x57, 0x0b, 0xfb, 0x81, 0xcf, 0x07, 0x24, 0x70, 0x7d, 0x2f,
+ 0x71, 0x34, 0xe0, 0x5b, 0x1e, 0x8e, 0xe5, 0x02, 0x77, 0x29, 0x66, 0x93, 0xbc, 0xbe, 0x09, 0xf5,
+ 0x1d, 0x3c, 0x36, 0x1c, 0x03, 0xf4, 0xed, 0xf1, 0x6d, 0x14, 0x9e, 0x05, 0x2e, 0x41, 0x08, 0xde,
+ 0x07, 0xf6, 0x0c, 0x8b, 0x6f, 0xaa, 0x58, 0xe2, 0x8c, 0xbe, 0x43, 0xc5, 0xf1, 0x29, 0x1e, 0x73,
+ 0x42, 0x57, 0xea, 0x3b, 0x41, 0x6c, 0x81, 0x3f, 0x77, 0x65, 0x90, 0xc5, 0xc3, 0x07, 0x7c, 0x8a,
+ 0x8e, 0xe0, 0x83, 0x68, 0x10, 0x35, 0x7a, 0xe9, 0x2c, 0xd9, 0x0d, 0xb4, 0x66, 0x01, 0x8f, 0x9f,
+ 0x51, 0x42, 0x03, 0x90, 0x93, 0xc6, 0x50, 0x2b, 0x23, 0xcb, 0x0f, 0xa0, 0x69, 0xfb, 0xa8, 0x34,
+ 0xe4, 0x0a, 0x94, 0x9d, 0x22, 0x51, 0x67, 0x6b, 0xd8, 0xdf, 0xbe, 0xf6, 0xf3, 0x0d, 0x45, 0x9a,
+ 0x7c, 0x01, 0xd5, 0x6c, 0xe1, 0xe8, 0x47, 0xc6, 0x54, 0xdc, 0x47, 0xd3, 0x0f, 0xd1, 0x69, 0xa0,
+ 0x05, 0xb5, 0xdc, 0x22, 0x28, 0x67, 0x29, 0x4e, 0xa8, 0xb5, 0x0f, 0xf2, 0x49, 0x66, 0xff, 0xdf,
+ 0xc3, 0x5a, 0x97, 0x1e, 0xd7, 0xba, 0xf4, 0xb4, 0xd6, 0xa5, 0xfb, 0x67, 0xbd, 0x74, 0xfd, 0x6b,
+ 0xe1, 0x73, 0xcc, 0x58, 0xcf, 0x27, 0xe6, 0xe6, 0x64, 0x7a, 0xc4, 0x5c, 0x70, 0x53, 0xfc, 0x2c,
+ 0x66, 0x12, 0x78, 0xf3, 0x51, 0xdc, 0xff, 0xbe, 0x04, 0x00, 0x00, 0xff, 0xff, 0x5d, 0xef, 0x36,
+ 0xdc, 0x4e, 0x03, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@@ -615,3 +758,1294 @@ var _MysqlCtl_serviceDesc = grpc.ServiceDesc{
Streams: []grpc.StreamDesc{},
Metadata: "mysqlctl.proto",
}
+
+func (m *StartRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StartRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *StartRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.MysqldArgs) > 0 {
+ for iNdEx := len(m.MysqldArgs) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.MysqldArgs[iNdEx])
+ copy(dAtA[i:], m.MysqldArgs[iNdEx])
+ i = encodeVarintMysqlctl(dAtA, i, uint64(len(m.MysqldArgs[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *StartResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StartResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *StartResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ShutdownRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ShutdownRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ShutdownRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.WaitForMysqld {
+ i--
+ if m.WaitForMysqld {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ShutdownResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ShutdownResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ShutdownResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RunMysqlUpgradeRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RunMysqlUpgradeRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RunMysqlUpgradeRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RunMysqlUpgradeResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RunMysqlUpgradeResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RunMysqlUpgradeResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ReinitConfigRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ReinitConfigRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ReinitConfigRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ReinitConfigResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ReinitConfigResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ReinitConfigResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RefreshConfigRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RefreshConfigRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RefreshConfigRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RefreshConfigResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RefreshConfigResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RefreshConfigResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *BackupInfo) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *BackupInfo) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *BackupInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Directory) > 0 {
+ i -= len(m.Directory)
+ copy(dAtA[i:], m.Directory)
+ i = encodeVarintMysqlctl(dAtA, i, uint64(len(m.Directory)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = encodeVarintMysqlctl(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func encodeVarintMysqlctl(dAtA []byte, offset int, v uint64) int {
+ offset -= sovMysqlctl(v)
+ base := offset
+ for v >= 1<<7 {
+ dAtA[offset] = uint8(v&0x7f | 0x80)
+ v >>= 7
+ offset++
+ }
+ dAtA[offset] = uint8(v)
+ return base
+}
+func (m *StartRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.MysqldArgs) > 0 {
+ for _, s := range m.MysqldArgs {
+ l = len(s)
+ n += 1 + l + sovMysqlctl(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StartResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ShutdownRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.WaitForMysqld {
+ n += 2
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ShutdownResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RunMysqlUpgradeRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RunMysqlUpgradeResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ReinitConfigRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ReinitConfigResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RefreshConfigRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RefreshConfigResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *BackupInfo) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovMysqlctl(uint64(l))
+ }
+ l = len(m.Directory)
+ if l > 0 {
+ n += 1 + l + sovMysqlctl(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func sovMysqlctl(x uint64) (n int) {
+ return (math_bits.Len64(x|1) + 6) / 7
+}
+func sozMysqlctl(x uint64) (n int) {
+ return sovMysqlctl(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+}
+func (m *StartRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowMysqlctl
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StartRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StartRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MysqldArgs", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowMysqlctl
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.MysqldArgs = append(m.MysqldArgs, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipMysqlctl(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StartResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowMysqlctl
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StartResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StartResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipMysqlctl(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ShutdownRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowMysqlctl
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ShutdownRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ShutdownRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field WaitForMysqld", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowMysqlctl
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.WaitForMysqld = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipMysqlctl(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ShutdownResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowMysqlctl
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ShutdownResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ShutdownResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipMysqlctl(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RunMysqlUpgradeRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowMysqlctl
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RunMysqlUpgradeRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RunMysqlUpgradeRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipMysqlctl(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RunMysqlUpgradeResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowMysqlctl
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RunMysqlUpgradeResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RunMysqlUpgradeResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipMysqlctl(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ReinitConfigRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowMysqlctl
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ReinitConfigRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ReinitConfigRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipMysqlctl(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ReinitConfigResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowMysqlctl
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ReinitConfigResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ReinitConfigResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipMysqlctl(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RefreshConfigRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowMysqlctl
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RefreshConfigRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RefreshConfigRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipMysqlctl(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RefreshConfigResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowMysqlctl
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RefreshConfigResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RefreshConfigResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipMysqlctl(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *BackupInfo) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowMysqlctl
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: BackupInfo: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: BackupInfo: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowMysqlctl
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Directory", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowMysqlctl
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Directory = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipMysqlctl(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthMysqlctl
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func skipMysqlctl(dAtA []byte) (n int, err error) {
+ l := len(dAtA)
+ iNdEx := 0
+ depth := 0
+ for iNdEx < l {
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowMysqlctl
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ wireType := int(wire & 0x7)
+ switch wireType {
+ case 0:
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowMysqlctl
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ iNdEx++
+ if dAtA[iNdEx-1] < 0x80 {
+ break
+ }
+ }
+ case 1:
+ iNdEx += 8
+ case 2:
+ var length int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowMysqlctl
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ length |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if length < 0 {
+ return 0, ErrInvalidLengthMysqlctl
+ }
+ iNdEx += length
+ case 3:
+ depth++
+ case 4:
+ if depth == 0 {
+ return 0, ErrUnexpectedEndOfGroupMysqlctl
+ }
+ depth--
+ case 5:
+ iNdEx += 4
+ default:
+ return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
+ }
+ if iNdEx < 0 {
+ return 0, ErrInvalidLengthMysqlctl
+ }
+ if depth == 0 {
+ return iNdEx, nil
+ }
+ }
+ return 0, io.ErrUnexpectedEOF
+}
+
+var (
+ ErrInvalidLengthMysqlctl = fmt.Errorf("proto: negative length found during unmarshaling")
+ ErrIntOverflowMysqlctl = fmt.Errorf("proto: integer overflow")
+ ErrUnexpectedEndOfGroupMysqlctl = fmt.Errorf("proto: unexpected end of group")
+)
diff --git a/go/vt/proto/query/query.pb.go b/go/vt/proto/query/query.pb.go
index b8a794d4d1d..bec6552eb8c 100644
--- a/go/vt/proto/query/query.pb.go
+++ b/go/vt/proto/query/query.pb.go
@@ -1,14 +1,16 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: query.proto
package query
import (
+ encoding_binary "encoding/binary"
fmt "fmt"
+ io "io"
math "math"
+ math_bits "math/bits"
proto "github.com/golang/protobuf/proto"
-
topodata "vitess.io/vitess/go/vt/proto/topodata"
vtrpc "vitess.io/vitess/go/vt/proto/vtrpc"
)
@@ -463,6 +465,43 @@ func (ExecuteOptions_TransactionIsolation) EnumDescriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{6, 2}
}
+type ExecuteOptions_PlannerVersion int32
+
+const (
+ ExecuteOptions_DEFAULT_PLANNER ExecuteOptions_PlannerVersion = 0
+ ExecuteOptions_V3 ExecuteOptions_PlannerVersion = 1
+ ExecuteOptions_Gen4 ExecuteOptions_PlannerVersion = 2
+ ExecuteOptions_Gen4Greedy ExecuteOptions_PlannerVersion = 3
+ ExecuteOptions_Gen4Left2Right ExecuteOptions_PlannerVersion = 4
+ ExecuteOptions_Gen4WithFallback ExecuteOptions_PlannerVersion = 5
+)
+
+var ExecuteOptions_PlannerVersion_name = map[int32]string{
+ 0: "DEFAULT_PLANNER",
+ 1: "V3",
+ 2: "Gen4",
+ 3: "Gen4Greedy",
+ 4: "Gen4Left2Right",
+ 5: "Gen4WithFallback",
+}
+
+var ExecuteOptions_PlannerVersion_value = map[string]int32{
+ "DEFAULT_PLANNER": 0,
+ "V3": 1,
+ "Gen4": 2,
+ "Gen4Greedy": 3,
+ "Gen4Left2Right": 4,
+ "Gen4WithFallback": 5,
+}
+
+func (x ExecuteOptions_PlannerVersion) String() string {
+ return proto.EnumName(ExecuteOptions_PlannerVersion_name, int32(x))
+}
+
+func (ExecuteOptions_PlannerVersion) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor_5c6ac9b241082464, []int{6, 3}
+}
+
// The category of one statement.
type StreamEvent_Statement_Category int32
@@ -512,18 +551,26 @@ func (*Target) ProtoMessage() {}
func (*Target) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{0}
}
-
func (m *Target) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Target.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Target) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Target.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Target.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Target) XXX_Merge(src proto.Message) {
xxx_messageInfo_Target.Merge(m, src)
}
func (m *Target) XXX_Size() int {
- return xxx_messageInfo_Target.Size(m)
+ return m.Size()
}
func (m *Target) XXX_DiscardUnknown() {
xxx_messageInfo_Target.DiscardUnknown(m)
@@ -581,18 +628,26 @@ func (*VTGateCallerID) ProtoMessage() {}
func (*VTGateCallerID) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{1}
}
-
func (m *VTGateCallerID) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_VTGateCallerID.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *VTGateCallerID) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_VTGateCallerID.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_VTGateCallerID.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *VTGateCallerID) XXX_Merge(src proto.Message) {
xxx_messageInfo_VTGateCallerID.Merge(m, src)
}
func (m *VTGateCallerID) XXX_Size() int {
- return xxx_messageInfo_VTGateCallerID.Size(m)
+ return m.Size()
}
func (m *VTGateCallerID) XXX_DiscardUnknown() {
xxx_messageInfo_VTGateCallerID.DiscardUnknown(m)
@@ -638,18 +693,26 @@ func (*EventToken) ProtoMessage() {}
func (*EventToken) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{2}
}
-
func (m *EventToken) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_EventToken.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *EventToken) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_EventToken.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_EventToken.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *EventToken) XXX_Merge(src proto.Message) {
xxx_messageInfo_EventToken.Merge(m, src)
}
func (m *EventToken) XXX_Size() int {
- return xxx_messageInfo_EventToken.Size(m)
+ return m.Size()
}
func (m *EventToken) XXX_DiscardUnknown() {
xxx_messageInfo_EventToken.DiscardUnknown(m)
@@ -693,18 +756,26 @@ func (*Value) ProtoMessage() {}
func (*Value) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{3}
}
-
func (m *Value) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Value.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Value) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Value.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Value.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Value) XXX_Merge(src proto.Message) {
xxx_messageInfo_Value.Merge(m, src)
}
func (m *Value) XXX_Size() int {
- return xxx_messageInfo_Value.Size(m)
+ return m.Size()
}
func (m *Value) XXX_DiscardUnknown() {
xxx_messageInfo_Value.DiscardUnknown(m)
@@ -743,18 +814,26 @@ func (*BindVariable) ProtoMessage() {}
func (*BindVariable) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{4}
}
-
func (m *BindVariable) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_BindVariable.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *BindVariable) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_BindVariable.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_BindVariable.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *BindVariable) XXX_Merge(src proto.Message) {
xxx_messageInfo_BindVariable.Merge(m, src)
}
func (m *BindVariable) XXX_Size() int {
- return xxx_messageInfo_BindVariable.Size(m)
+ return m.Size()
}
func (m *BindVariable) XXX_DiscardUnknown() {
xxx_messageInfo_BindVariable.DiscardUnknown(m)
@@ -801,18 +880,26 @@ func (*BoundQuery) ProtoMessage() {}
func (*BoundQuery) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{5}
}
-
func (m *BoundQuery) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_BoundQuery.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *BoundQuery) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_BoundQuery.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_BoundQuery.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *BoundQuery) XXX_Merge(src proto.Message) {
xxx_messageInfo_BoundQuery.Merge(m, src)
}
func (m *BoundQuery) XXX_Size() int {
- return xxx_messageInfo_BoundQuery.Size(m)
+ return m.Size()
}
func (m *BoundQuery) XXX_DiscardUnknown() {
xxx_messageInfo_BoundQuery.DiscardUnknown(m)
@@ -858,7 +945,14 @@ type ExecuteOptions struct {
TransactionIsolation ExecuteOptions_TransactionIsolation `protobuf:"varint,9,opt,name=transaction_isolation,json=transactionIsolation,proto3,enum=query.ExecuteOptions_TransactionIsolation" json:"transaction_isolation,omitempty"`
// skip_query_plan_cache specifies if the query plan should be cached by vitess.
// By default all query plans are cached.
- SkipQueryPlanCache bool `protobuf:"varint,10,opt,name=skip_query_plan_cache,json=skipQueryPlanCache,proto3" json:"skip_query_plan_cache,omitempty"`
+ SkipQueryPlanCache bool `protobuf:"varint,10,opt,name=skip_query_plan_cache,json=skipQueryPlanCache,proto3" json:"skip_query_plan_cache,omitempty"`
+ // PlannerVersion specifies which planner to use.
+ // If DEFAULT is chosen, whatever vtgate was started with will be used
+ PlannerVersion ExecuteOptions_PlannerVersion `protobuf:"varint,11,opt,name=planner_version,json=plannerVersion,proto3,enum=query.ExecuteOptions_PlannerVersion" json:"planner_version,omitempty"`
+ // has_created_temp_tables signals whether plans created in this session should be cached or not
+ // if the user has created temp tables, Vitess will not reuse plans created for this session in other sessions.
+ // The current session can still use other sessions cached plans.
+ HasCreatedTempTables bool `protobuf:"varint,12,opt,name=has_created_temp_tables,json=hasCreatedTempTables,proto3" json:"has_created_temp_tables,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@@ -870,18 +964,26 @@ func (*ExecuteOptions) ProtoMessage() {}
func (*ExecuteOptions) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{6}
}
-
func (m *ExecuteOptions) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ExecuteOptions.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ExecuteOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ExecuteOptions.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ExecuteOptions.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ExecuteOptions) XXX_Merge(src proto.Message) {
xxx_messageInfo_ExecuteOptions.Merge(m, src)
}
func (m *ExecuteOptions) XXX_Size() int {
- return xxx_messageInfo_ExecuteOptions.Size(m)
+ return m.Size()
}
func (m *ExecuteOptions) XXX_DiscardUnknown() {
xxx_messageInfo_ExecuteOptions.DiscardUnknown(m)
@@ -931,6 +1033,20 @@ func (m *ExecuteOptions) GetSkipQueryPlanCache() bool {
return false
}
+func (m *ExecuteOptions) GetPlannerVersion() ExecuteOptions_PlannerVersion {
+ if m != nil {
+ return m.PlannerVersion
+ }
+ return ExecuteOptions_DEFAULT_PLANNER
+}
+
+func (m *ExecuteOptions) GetHasCreatedTempTables() bool {
+ if m != nil {
+ return m.HasCreatedTempTables
+ }
+ return false
+}
+
// Field describes a single column returned by a query
type Field struct {
// name of the field as returned by mysql C API
@@ -965,18 +1081,26 @@ func (*Field) ProtoMessage() {}
func (*Field) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{7}
}
-
func (m *Field) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Field.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Field) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Field.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Field.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Field) XXX_Merge(src proto.Message) {
xxx_messageInfo_Field.Merge(m, src)
}
func (m *Field) XXX_Size() int {
- return xxx_messageInfo_Field.Size(m)
+ return m.Size()
}
func (m *Field) XXX_DiscardUnknown() {
xxx_messageInfo_Field.DiscardUnknown(m)
@@ -1081,18 +1205,26 @@ func (*Row) ProtoMessage() {}
func (*Row) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{8}
}
-
func (m *Row) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Row.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Row) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Row.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Row.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Row) XXX_Merge(src proto.Message) {
xxx_messageInfo_Row.Merge(m, src)
}
func (m *Row) XXX_Size() int {
- return xxx_messageInfo_Row.Size(m)
+ return m.Size()
}
func (m *Row) XXX_DiscardUnknown() {
xxx_messageInfo_Row.DiscardUnknown(m)
@@ -1139,18 +1271,26 @@ func (*QueryResult) ProtoMessage() {}
func (*QueryResult) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{9}
}
-
func (m *QueryResult) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_QueryResult.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *QueryResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_QueryResult.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_QueryResult.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *QueryResult) XXX_Merge(src proto.Message) {
xxx_messageInfo_QueryResult.Merge(m, src)
}
func (m *QueryResult) XXX_Size() int {
- return xxx_messageInfo_QueryResult.Size(m)
+ return m.Size()
}
func (m *QueryResult) XXX_DiscardUnknown() {
xxx_messageInfo_QueryResult.DiscardUnknown(m)
@@ -1202,18 +1342,26 @@ func (*QueryWarning) ProtoMessage() {}
func (*QueryWarning) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{10}
}
-
func (m *QueryWarning) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_QueryWarning.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *QueryWarning) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_QueryWarning.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_QueryWarning.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *QueryWarning) XXX_Merge(src proto.Message) {
xxx_messageInfo_QueryWarning.Merge(m, src)
}
func (m *QueryWarning) XXX_Size() int {
- return xxx_messageInfo_QueryWarning.Size(m)
+ return m.Size()
}
func (m *QueryWarning) XXX_DiscardUnknown() {
xxx_messageInfo_QueryWarning.DiscardUnknown(m)
@@ -1254,18 +1402,26 @@ func (*StreamEvent) ProtoMessage() {}
func (*StreamEvent) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{11}
}
-
func (m *StreamEvent) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StreamEvent.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *StreamEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StreamEvent.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_StreamEvent.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *StreamEvent) XXX_Merge(src proto.Message) {
xxx_messageInfo_StreamEvent.Merge(m, src)
}
func (m *StreamEvent) XXX_Size() int {
- return xxx_messageInfo_StreamEvent.Size(m)
+ return m.Size()
}
func (m *StreamEvent) XXX_DiscardUnknown() {
xxx_messageInfo_StreamEvent.DiscardUnknown(m)
@@ -1308,18 +1464,26 @@ func (*StreamEvent_Statement) ProtoMessage() {}
func (*StreamEvent_Statement) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{11, 0}
}
-
func (m *StreamEvent_Statement) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StreamEvent_Statement.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *StreamEvent_Statement) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StreamEvent_Statement.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_StreamEvent_Statement.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *StreamEvent_Statement) XXX_Merge(src proto.Message) {
xxx_messageInfo_StreamEvent_Statement.Merge(m, src)
}
func (m *StreamEvent_Statement) XXX_Size() int {
- return xxx_messageInfo_StreamEvent_Statement.Size(m)
+ return m.Size()
}
func (m *StreamEvent_Statement) XXX_DiscardUnknown() {
xxx_messageInfo_StreamEvent_Statement.DiscardUnknown(m)
@@ -1382,18 +1546,26 @@ func (*ExecuteRequest) ProtoMessage() {}
func (*ExecuteRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{12}
}
-
func (m *ExecuteRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ExecuteRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ExecuteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ExecuteRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ExecuteRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ExecuteRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ExecuteRequest.Merge(m, src)
}
func (m *ExecuteRequest) XXX_Size() int {
- return xxx_messageInfo_ExecuteRequest.Size(m)
+ return m.Size()
}
func (m *ExecuteRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ExecuteRequest.DiscardUnknown(m)
@@ -1464,18 +1636,26 @@ func (*ExecuteResponse) ProtoMessage() {}
func (*ExecuteResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{13}
}
-
func (m *ExecuteResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ExecuteResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ExecuteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ExecuteResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ExecuteResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ExecuteResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ExecuteResponse.Merge(m, src)
}
func (m *ExecuteResponse) XXX_Size() int {
- return xxx_messageInfo_ExecuteResponse.Size(m)
+ return m.Size()
}
func (m *ExecuteResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ExecuteResponse.DiscardUnknown(m)
@@ -1509,18 +1689,26 @@ func (*ResultWithError) ProtoMessage() {}
func (*ResultWithError) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{14}
}
-
func (m *ResultWithError) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ResultWithError.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ResultWithError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ResultWithError.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ResultWithError.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ResultWithError) XXX_Merge(src proto.Message) {
xxx_messageInfo_ResultWithError.Merge(m, src)
}
func (m *ResultWithError) XXX_Size() int {
- return xxx_messageInfo_ResultWithError.Size(m)
+ return m.Size()
}
func (m *ResultWithError) XXX_DiscardUnknown() {
xxx_messageInfo_ResultWithError.DiscardUnknown(m)
@@ -1562,18 +1750,26 @@ func (*ExecuteBatchRequest) ProtoMessage() {}
func (*ExecuteBatchRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{15}
}
-
func (m *ExecuteBatchRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ExecuteBatchRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ExecuteBatchRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ExecuteBatchRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ExecuteBatchRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ExecuteBatchRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ExecuteBatchRequest.Merge(m, src)
}
func (m *ExecuteBatchRequest) XXX_Size() int {
- return xxx_messageInfo_ExecuteBatchRequest.Size(m)
+ return m.Size()
}
func (m *ExecuteBatchRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ExecuteBatchRequest.DiscardUnknown(m)
@@ -1644,18 +1840,26 @@ func (*ExecuteBatchResponse) ProtoMessage() {}
func (*ExecuteBatchResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{16}
}
-
func (m *ExecuteBatchResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ExecuteBatchResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ExecuteBatchResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ExecuteBatchResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ExecuteBatchResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ExecuteBatchResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ExecuteBatchResponse.Merge(m, src)
}
func (m *ExecuteBatchResponse) XXX_Size() int {
- return xxx_messageInfo_ExecuteBatchResponse.Size(m)
+ return m.Size()
}
func (m *ExecuteBatchResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ExecuteBatchResponse.DiscardUnknown(m)
@@ -1689,18 +1893,26 @@ func (*StreamExecuteRequest) ProtoMessage() {}
func (*StreamExecuteRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{17}
}
-
func (m *StreamExecuteRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StreamExecuteRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *StreamExecuteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StreamExecuteRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_StreamExecuteRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *StreamExecuteRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_StreamExecuteRequest.Merge(m, src)
}
func (m *StreamExecuteRequest) XXX_Size() int {
- return xxx_messageInfo_StreamExecuteRequest.Size(m)
+ return m.Size()
}
func (m *StreamExecuteRequest) XXX_DiscardUnknown() {
xxx_messageInfo_StreamExecuteRequest.DiscardUnknown(m)
@@ -1764,18 +1976,26 @@ func (*StreamExecuteResponse) ProtoMessage() {}
func (*StreamExecuteResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{18}
}
-
func (m *StreamExecuteResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StreamExecuteResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *StreamExecuteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StreamExecuteResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_StreamExecuteResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *StreamExecuteResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_StreamExecuteResponse.Merge(m, src)
}
func (m *StreamExecuteResponse) XXX_Size() int {
- return xxx_messageInfo_StreamExecuteResponse.Size(m)
+ return m.Size()
}
func (m *StreamExecuteResponse) XXX_DiscardUnknown() {
xxx_messageInfo_StreamExecuteResponse.DiscardUnknown(m)
@@ -1807,18 +2027,26 @@ func (*BeginRequest) ProtoMessage() {}
func (*BeginRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{19}
}
-
func (m *BeginRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_BeginRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *BeginRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_BeginRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_BeginRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *BeginRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_BeginRequest.Merge(m, src)
}
func (m *BeginRequest) XXX_Size() int {
- return xxx_messageInfo_BeginRequest.Size(m)
+ return m.Size()
}
func (m *BeginRequest) XXX_DiscardUnknown() {
xxx_messageInfo_BeginRequest.DiscardUnknown(m)
@@ -1869,18 +2097,26 @@ func (*BeginResponse) ProtoMessage() {}
func (*BeginResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{20}
}
-
func (m *BeginResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_BeginResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *BeginResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_BeginResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_BeginResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *BeginResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_BeginResponse.Merge(m, src)
}
func (m *BeginResponse) XXX_Size() int {
- return xxx_messageInfo_BeginResponse.Size(m)
+ return m.Size()
}
func (m *BeginResponse) XXX_DiscardUnknown() {
xxx_messageInfo_BeginResponse.DiscardUnknown(m)
@@ -1919,18 +2155,26 @@ func (*CommitRequest) ProtoMessage() {}
func (*CommitRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{21}
}
-
func (m *CommitRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_CommitRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *CommitRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_CommitRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_CommitRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *CommitRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_CommitRequest.Merge(m, src)
}
func (m *CommitRequest) XXX_Size() int {
- return xxx_messageInfo_CommitRequest.Size(m)
+ return m.Size()
}
func (m *CommitRequest) XXX_DiscardUnknown() {
xxx_messageInfo_CommitRequest.DiscardUnknown(m)
@@ -1980,18 +2224,26 @@ func (*CommitResponse) ProtoMessage() {}
func (*CommitResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{22}
}
-
func (m *CommitResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_CommitResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *CommitResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_CommitResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_CommitResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *CommitResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_CommitResponse.Merge(m, src)
}
func (m *CommitResponse) XXX_Size() int {
- return xxx_messageInfo_CommitResponse.Size(m)
+ return m.Size()
}
func (m *CommitResponse) XXX_DiscardUnknown() {
xxx_messageInfo_CommitResponse.DiscardUnknown(m)
@@ -2023,18 +2275,26 @@ func (*RollbackRequest) ProtoMessage() {}
func (*RollbackRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{23}
}
-
func (m *RollbackRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_RollbackRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *RollbackRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_RollbackRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_RollbackRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *RollbackRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_RollbackRequest.Merge(m, src)
}
func (m *RollbackRequest) XXX_Size() int {
- return xxx_messageInfo_RollbackRequest.Size(m)
+ return m.Size()
}
func (m *RollbackRequest) XXX_DiscardUnknown() {
xxx_messageInfo_RollbackRequest.DiscardUnknown(m)
@@ -2084,18 +2344,26 @@ func (*RollbackResponse) ProtoMessage() {}
func (*RollbackResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{24}
}
-
func (m *RollbackResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_RollbackResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *RollbackResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_RollbackResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_RollbackResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *RollbackResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_RollbackResponse.Merge(m, src)
}
func (m *RollbackResponse) XXX_Size() int {
- return xxx_messageInfo_RollbackResponse.Size(m)
+ return m.Size()
}
func (m *RollbackResponse) XXX_DiscardUnknown() {
xxx_messageInfo_RollbackResponse.DiscardUnknown(m)
@@ -2128,18 +2396,26 @@ func (*PrepareRequest) ProtoMessage() {}
func (*PrepareRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{25}
}
-
func (m *PrepareRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_PrepareRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *PrepareRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_PrepareRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_PrepareRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *PrepareRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_PrepareRequest.Merge(m, src)
}
func (m *PrepareRequest) XXX_Size() int {
- return xxx_messageInfo_PrepareRequest.Size(m)
+ return m.Size()
}
func (m *PrepareRequest) XXX_DiscardUnknown() {
xxx_messageInfo_PrepareRequest.DiscardUnknown(m)
@@ -2195,18 +2471,26 @@ func (*PrepareResponse) ProtoMessage() {}
func (*PrepareResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{26}
}
-
func (m *PrepareResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_PrepareResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *PrepareResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_PrepareResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_PrepareResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *PrepareResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_PrepareResponse.Merge(m, src)
}
func (m *PrepareResponse) XXX_Size() int {
- return xxx_messageInfo_PrepareResponse.Size(m)
+ return m.Size()
}
func (m *PrepareResponse) XXX_DiscardUnknown() {
xxx_messageInfo_PrepareResponse.DiscardUnknown(m)
@@ -2231,18 +2515,26 @@ func (*CommitPreparedRequest) ProtoMessage() {}
func (*CommitPreparedRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{27}
}
-
func (m *CommitPreparedRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_CommitPreparedRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *CommitPreparedRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_CommitPreparedRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_CommitPreparedRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *CommitPreparedRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_CommitPreparedRequest.Merge(m, src)
}
func (m *CommitPreparedRequest) XXX_Size() int {
- return xxx_messageInfo_CommitPreparedRequest.Size(m)
+ return m.Size()
}
func (m *CommitPreparedRequest) XXX_DiscardUnknown() {
xxx_messageInfo_CommitPreparedRequest.DiscardUnknown(m)
@@ -2291,18 +2583,26 @@ func (*CommitPreparedResponse) ProtoMessage() {}
func (*CommitPreparedResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{28}
}
-
func (m *CommitPreparedResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_CommitPreparedResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *CommitPreparedResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_CommitPreparedResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_CommitPreparedResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *CommitPreparedResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_CommitPreparedResponse.Merge(m, src)
}
func (m *CommitPreparedResponse) XXX_Size() int {
- return xxx_messageInfo_CommitPreparedResponse.Size(m)
+ return m.Size()
}
func (m *CommitPreparedResponse) XXX_DiscardUnknown() {
xxx_messageInfo_CommitPreparedResponse.DiscardUnknown(m)
@@ -2328,18 +2628,26 @@ func (*RollbackPreparedRequest) ProtoMessage() {}
func (*RollbackPreparedRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{29}
}
-
func (m *RollbackPreparedRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_RollbackPreparedRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *RollbackPreparedRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_RollbackPreparedRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_RollbackPreparedRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *RollbackPreparedRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_RollbackPreparedRequest.Merge(m, src)
}
func (m *RollbackPreparedRequest) XXX_Size() int {
- return xxx_messageInfo_RollbackPreparedRequest.Size(m)
+ return m.Size()
}
func (m *RollbackPreparedRequest) XXX_DiscardUnknown() {
xxx_messageInfo_RollbackPreparedRequest.DiscardUnknown(m)
@@ -2395,18 +2703,26 @@ func (*RollbackPreparedResponse) ProtoMessage() {}
func (*RollbackPreparedResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{30}
}
-
func (m *RollbackPreparedResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_RollbackPreparedResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *RollbackPreparedResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_RollbackPreparedResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_RollbackPreparedResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *RollbackPreparedResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_RollbackPreparedResponse.Merge(m, src)
}
func (m *RollbackPreparedResponse) XXX_Size() int {
- return xxx_messageInfo_RollbackPreparedResponse.Size(m)
+ return m.Size()
}
func (m *RollbackPreparedResponse) XXX_DiscardUnknown() {
xxx_messageInfo_RollbackPreparedResponse.DiscardUnknown(m)
@@ -2432,18 +2748,26 @@ func (*CreateTransactionRequest) ProtoMessage() {}
func (*CreateTransactionRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{31}
}
-
func (m *CreateTransactionRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_CreateTransactionRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *CreateTransactionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_CreateTransactionRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_CreateTransactionRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *CreateTransactionRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_CreateTransactionRequest.Merge(m, src)
}
func (m *CreateTransactionRequest) XXX_Size() int {
- return xxx_messageInfo_CreateTransactionRequest.Size(m)
+ return m.Size()
}
func (m *CreateTransactionRequest) XXX_DiscardUnknown() {
xxx_messageInfo_CreateTransactionRequest.DiscardUnknown(m)
@@ -2499,18 +2823,26 @@ func (*CreateTransactionResponse) ProtoMessage() {}
func (*CreateTransactionResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{32}
}
-
func (m *CreateTransactionResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_CreateTransactionResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *CreateTransactionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_CreateTransactionResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_CreateTransactionResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *CreateTransactionResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_CreateTransactionResponse.Merge(m, src)
}
func (m *CreateTransactionResponse) XXX_Size() int {
- return xxx_messageInfo_CreateTransactionResponse.Size(m)
+ return m.Size()
}
func (m *CreateTransactionResponse) XXX_DiscardUnknown() {
xxx_messageInfo_CreateTransactionResponse.DiscardUnknown(m)
@@ -2536,18 +2868,26 @@ func (*StartCommitRequest) ProtoMessage() {}
func (*StartCommitRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{33}
}
-
func (m *StartCommitRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StartCommitRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *StartCommitRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StartCommitRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_StartCommitRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *StartCommitRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_StartCommitRequest.Merge(m, src)
}
func (m *StartCommitRequest) XXX_Size() int {
- return xxx_messageInfo_StartCommitRequest.Size(m)
+ return m.Size()
}
func (m *StartCommitRequest) XXX_DiscardUnknown() {
xxx_messageInfo_StartCommitRequest.DiscardUnknown(m)
@@ -2603,18 +2943,26 @@ func (*StartCommitResponse) ProtoMessage() {}
func (*StartCommitResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{34}
}
-
func (m *StartCommitResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StartCommitResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *StartCommitResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StartCommitResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_StartCommitResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *StartCommitResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_StartCommitResponse.Merge(m, src)
}
func (m *StartCommitResponse) XXX_Size() int {
- return xxx_messageInfo_StartCommitResponse.Size(m)
+ return m.Size()
}
func (m *StartCommitResponse) XXX_DiscardUnknown() {
xxx_messageInfo_StartCommitResponse.DiscardUnknown(m)
@@ -2640,18 +2988,26 @@ func (*SetRollbackRequest) ProtoMessage() {}
func (*SetRollbackRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{35}
}
-
func (m *SetRollbackRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_SetRollbackRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *SetRollbackRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_SetRollbackRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_SetRollbackRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *SetRollbackRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_SetRollbackRequest.Merge(m, src)
}
func (m *SetRollbackRequest) XXX_Size() int {
- return xxx_messageInfo_SetRollbackRequest.Size(m)
+ return m.Size()
}
func (m *SetRollbackRequest) XXX_DiscardUnknown() {
xxx_messageInfo_SetRollbackRequest.DiscardUnknown(m)
@@ -2707,18 +3063,26 @@ func (*SetRollbackResponse) ProtoMessage() {}
func (*SetRollbackResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{36}
}
-
func (m *SetRollbackResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_SetRollbackResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *SetRollbackResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_SetRollbackResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_SetRollbackResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *SetRollbackResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_SetRollbackResponse.Merge(m, src)
}
func (m *SetRollbackResponse) XXX_Size() int {
- return xxx_messageInfo_SetRollbackResponse.Size(m)
+ return m.Size()
}
func (m *SetRollbackResponse) XXX_DiscardUnknown() {
xxx_messageInfo_SetRollbackResponse.DiscardUnknown(m)
@@ -2743,18 +3107,26 @@ func (*ConcludeTransactionRequest) ProtoMessage() {}
func (*ConcludeTransactionRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{37}
}
-
func (m *ConcludeTransactionRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ConcludeTransactionRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ConcludeTransactionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ConcludeTransactionRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ConcludeTransactionRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ConcludeTransactionRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ConcludeTransactionRequest.Merge(m, src)
}
func (m *ConcludeTransactionRequest) XXX_Size() int {
- return xxx_messageInfo_ConcludeTransactionRequest.Size(m)
+ return m.Size()
}
func (m *ConcludeTransactionRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ConcludeTransactionRequest.DiscardUnknown(m)
@@ -2803,18 +3175,26 @@ func (*ConcludeTransactionResponse) ProtoMessage() {}
func (*ConcludeTransactionResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{38}
}
-
func (m *ConcludeTransactionResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ConcludeTransactionResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ConcludeTransactionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ConcludeTransactionResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ConcludeTransactionResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ConcludeTransactionResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ConcludeTransactionResponse.Merge(m, src)
}
func (m *ConcludeTransactionResponse) XXX_Size() int {
- return xxx_messageInfo_ConcludeTransactionResponse.Size(m)
+ return m.Size()
}
func (m *ConcludeTransactionResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ConcludeTransactionResponse.DiscardUnknown(m)
@@ -2839,18 +3219,26 @@ func (*ReadTransactionRequest) ProtoMessage() {}
func (*ReadTransactionRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{39}
}
-
func (m *ReadTransactionRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ReadTransactionRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ReadTransactionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ReadTransactionRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ReadTransactionRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ReadTransactionRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReadTransactionRequest.Merge(m, src)
}
func (m *ReadTransactionRequest) XXX_Size() int {
- return xxx_messageInfo_ReadTransactionRequest.Size(m)
+ return m.Size()
}
func (m *ReadTransactionRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ReadTransactionRequest.DiscardUnknown(m)
@@ -2900,18 +3288,26 @@ func (*ReadTransactionResponse) ProtoMessage() {}
func (*ReadTransactionResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{40}
}
-
func (m *ReadTransactionResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ReadTransactionResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ReadTransactionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ReadTransactionResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ReadTransactionResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ReadTransactionResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReadTransactionResponse.Merge(m, src)
}
func (m *ReadTransactionResponse) XXX_Size() int {
- return xxx_messageInfo_ReadTransactionResponse.Size(m)
+ return m.Size()
}
func (m *ReadTransactionResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ReadTransactionResponse.DiscardUnknown(m)
@@ -2946,18 +3342,26 @@ func (*BeginExecuteRequest) ProtoMessage() {}
func (*BeginExecuteRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{41}
}
-
func (m *BeginExecuteRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_BeginExecuteRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *BeginExecuteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_BeginExecuteRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_BeginExecuteRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *BeginExecuteRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_BeginExecuteRequest.Merge(m, src)
}
func (m *BeginExecuteRequest) XXX_Size() int {
- return xxx_messageInfo_BeginExecuteRequest.Size(m)
+ return m.Size()
}
func (m *BeginExecuteRequest) XXX_DiscardUnknown() {
xxx_messageInfo_BeginExecuteRequest.DiscardUnknown(m)
@@ -3035,18 +3439,26 @@ func (*BeginExecuteResponse) ProtoMessage() {}
func (*BeginExecuteResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{42}
}
-
func (m *BeginExecuteResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_BeginExecuteResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *BeginExecuteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_BeginExecuteResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_BeginExecuteResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *BeginExecuteResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_BeginExecuteResponse.Merge(m, src)
}
func (m *BeginExecuteResponse) XXX_Size() int {
- return xxx_messageInfo_BeginExecuteResponse.Size(m)
+ return m.Size()
}
func (m *BeginExecuteResponse) XXX_DiscardUnknown() {
xxx_messageInfo_BeginExecuteResponse.DiscardUnknown(m)
@@ -3101,18 +3513,26 @@ func (*BeginExecuteBatchRequest) ProtoMessage() {}
func (*BeginExecuteBatchRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{43}
}
-
func (m *BeginExecuteBatchRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_BeginExecuteBatchRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *BeginExecuteBatchRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_BeginExecuteBatchRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_BeginExecuteBatchRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *BeginExecuteBatchRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_BeginExecuteBatchRequest.Merge(m, src)
}
func (m *BeginExecuteBatchRequest) XXX_Size() int {
- return xxx_messageInfo_BeginExecuteBatchRequest.Size(m)
+ return m.Size()
}
func (m *BeginExecuteBatchRequest) XXX_DiscardUnknown() {
xxx_messageInfo_BeginExecuteBatchRequest.DiscardUnknown(m)
@@ -3183,18 +3603,26 @@ func (*BeginExecuteBatchResponse) ProtoMessage() {}
func (*BeginExecuteBatchResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{44}
}
-
func (m *BeginExecuteBatchResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_BeginExecuteBatchResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *BeginExecuteBatchResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_BeginExecuteBatchResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_BeginExecuteBatchResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *BeginExecuteBatchResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_BeginExecuteBatchResponse.Merge(m, src)
}
func (m *BeginExecuteBatchResponse) XXX_Size() int {
- return xxx_messageInfo_BeginExecuteBatchResponse.Size(m)
+ return m.Size()
}
func (m *BeginExecuteBatchResponse) XXX_DiscardUnknown() {
xxx_messageInfo_BeginExecuteBatchResponse.DiscardUnknown(m)
@@ -3248,18 +3676,26 @@ func (*MessageStreamRequest) ProtoMessage() {}
func (*MessageStreamRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{45}
}
-
func (m *MessageStreamRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_MessageStreamRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *MessageStreamRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_MessageStreamRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_MessageStreamRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *MessageStreamRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_MessageStreamRequest.Merge(m, src)
}
func (m *MessageStreamRequest) XXX_Size() int {
- return xxx_messageInfo_MessageStreamRequest.Size(m)
+ return m.Size()
}
func (m *MessageStreamRequest) XXX_DiscardUnknown() {
xxx_messageInfo_MessageStreamRequest.DiscardUnknown(m)
@@ -3309,18 +3745,26 @@ func (*MessageStreamResponse) ProtoMessage() {}
func (*MessageStreamResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{46}
}
-
func (m *MessageStreamResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_MessageStreamResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *MessageStreamResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_MessageStreamResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_MessageStreamResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *MessageStreamResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_MessageStreamResponse.Merge(m, src)
}
func (m *MessageStreamResponse) XXX_Size() int {
- return xxx_messageInfo_MessageStreamResponse.Size(m)
+ return m.Size()
}
func (m *MessageStreamResponse) XXX_DiscardUnknown() {
xxx_messageInfo_MessageStreamResponse.DiscardUnknown(m)
@@ -3354,18 +3798,26 @@ func (*MessageAckRequest) ProtoMessage() {}
func (*MessageAckRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{47}
}
-
func (m *MessageAckRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_MessageAckRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *MessageAckRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_MessageAckRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_MessageAckRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *MessageAckRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_MessageAckRequest.Merge(m, src)
}
func (m *MessageAckRequest) XXX_Size() int {
- return xxx_messageInfo_MessageAckRequest.Size(m)
+ return m.Size()
}
func (m *MessageAckRequest) XXX_DiscardUnknown() {
xxx_messageInfo_MessageAckRequest.DiscardUnknown(m)
@@ -3425,18 +3877,26 @@ func (*MessageAckResponse) ProtoMessage() {}
func (*MessageAckResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{48}
}
-
func (m *MessageAckResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_MessageAckResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *MessageAckResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_MessageAckResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_MessageAckResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *MessageAckResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_MessageAckResponse.Merge(m, src)
}
func (m *MessageAckResponse) XXX_Size() int {
- return xxx_messageInfo_MessageAckResponse.Size(m)
+ return m.Size()
}
func (m *MessageAckResponse) XXX_DiscardUnknown() {
xxx_messageInfo_MessageAckResponse.DiscardUnknown(m)
@@ -3471,18 +3931,26 @@ func (*ReserveExecuteRequest) ProtoMessage() {}
func (*ReserveExecuteRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{49}
}
-
func (m *ReserveExecuteRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ReserveExecuteRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ReserveExecuteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ReserveExecuteRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ReserveExecuteRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ReserveExecuteRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReserveExecuteRequest.Merge(m, src)
}
func (m *ReserveExecuteRequest) XXX_Size() int {
- return xxx_messageInfo_ReserveExecuteRequest.Size(m)
+ return m.Size()
}
func (m *ReserveExecuteRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ReserveExecuteRequest.DiscardUnknown(m)
@@ -3557,18 +4025,26 @@ func (*ReserveExecuteResponse) ProtoMessage() {}
func (*ReserveExecuteResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{50}
}
-
func (m *ReserveExecuteResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ReserveExecuteResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ReserveExecuteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ReserveExecuteResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ReserveExecuteResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ReserveExecuteResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReserveExecuteResponse.Merge(m, src)
}
func (m *ReserveExecuteResponse) XXX_Size() int {
- return xxx_messageInfo_ReserveExecuteResponse.Size(m)
+ return m.Size()
}
func (m *ReserveExecuteResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ReserveExecuteResponse.DiscardUnknown(m)
@@ -3623,18 +4099,26 @@ func (*ReserveBeginExecuteRequest) ProtoMessage() {}
func (*ReserveBeginExecuteRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{51}
}
-
func (m *ReserveBeginExecuteRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ReserveBeginExecuteRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ReserveBeginExecuteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ReserveBeginExecuteRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ReserveBeginExecuteRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ReserveBeginExecuteRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReserveBeginExecuteRequest.Merge(m, src)
}
func (m *ReserveBeginExecuteRequest) XXX_Size() int {
- return xxx_messageInfo_ReserveBeginExecuteRequest.Size(m)
+ return m.Size()
}
func (m *ReserveBeginExecuteRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ReserveBeginExecuteRequest.DiscardUnknown(m)
@@ -3706,18 +4190,26 @@ func (*ReserveBeginExecuteResponse) ProtoMessage() {}
func (*ReserveBeginExecuteResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{52}
}
-
func (m *ReserveBeginExecuteResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ReserveBeginExecuteResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ReserveBeginExecuteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ReserveBeginExecuteResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ReserveBeginExecuteResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ReserveBeginExecuteResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReserveBeginExecuteResponse.Merge(m, src)
}
func (m *ReserveBeginExecuteResponse) XXX_Size() int {
- return xxx_messageInfo_ReserveBeginExecuteResponse.Size(m)
+ return m.Size()
}
func (m *ReserveBeginExecuteResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ReserveBeginExecuteResponse.DiscardUnknown(m)
@@ -3778,18 +4270,26 @@ func (*ReleaseRequest) ProtoMessage() {}
func (*ReleaseRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{53}
}
-
func (m *ReleaseRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ReleaseRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ReleaseRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ReleaseRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ReleaseRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ReleaseRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReleaseRequest.Merge(m, src)
}
func (m *ReleaseRequest) XXX_Size() int {
- return xxx_messageInfo_ReleaseRequest.Size(m)
+ return m.Size()
}
func (m *ReleaseRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ReleaseRequest.DiscardUnknown(m)
@@ -3845,18 +4345,26 @@ func (*ReleaseResponse) ProtoMessage() {}
func (*ReleaseResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{54}
}
-
func (m *ReleaseResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ReleaseResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ReleaseResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ReleaseResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ReleaseResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ReleaseResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReleaseResponse.Merge(m, src)
}
func (m *ReleaseResponse) XXX_Size() int {
- return xxx_messageInfo_ReleaseResponse.Size(m)
+ return m.Size()
}
func (m *ReleaseResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ReleaseResponse.DiscardUnknown(m)
@@ -3877,18 +4385,26 @@ func (*StreamHealthRequest) ProtoMessage() {}
func (*StreamHealthRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{55}
}
-
func (m *StreamHealthRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StreamHealthRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *StreamHealthRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StreamHealthRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_StreamHealthRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *StreamHealthRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_StreamHealthRequest.Merge(m, src)
}
func (m *StreamHealthRequest) XXX_Size() int {
- return xxx_messageInfo_StreamHealthRequest.Size(m)
+ return m.Size()
}
func (m *StreamHealthRequest) XXX_DiscardUnknown() {
xxx_messageInfo_StreamHealthRequest.DiscardUnknown(m)
@@ -3937,18 +4453,26 @@ func (*RealtimeStats) ProtoMessage() {}
func (*RealtimeStats) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{56}
}
-
func (m *RealtimeStats) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_RealtimeStats.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *RealtimeStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_RealtimeStats.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_RealtimeStats.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *RealtimeStats) XXX_Merge(src proto.Message) {
xxx_messageInfo_RealtimeStats.Merge(m, src)
}
func (m *RealtimeStats) XXX_Size() int {
- return xxx_messageInfo_RealtimeStats.Size(m)
+ return m.Size()
}
func (m *RealtimeStats) XXX_DiscardUnknown() {
xxx_messageInfo_RealtimeStats.DiscardUnknown(m)
@@ -4026,18 +4550,26 @@ func (*AggregateStats) ProtoMessage() {}
func (*AggregateStats) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{57}
}
-
func (m *AggregateStats) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_AggregateStats.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *AggregateStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_AggregateStats.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_AggregateStats.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *AggregateStats) XXX_Merge(src proto.Message) {
xxx_messageInfo_AggregateStats.Merge(m, src)
}
func (m *AggregateStats) XXX_Size() int {
- return xxx_messageInfo_AggregateStats.Size(m)
+ return m.Size()
}
func (m *AggregateStats) XXX_DiscardUnknown() {
xxx_messageInfo_AggregateStats.DiscardUnknown(m)
@@ -4132,18 +4664,26 @@ func (*StreamHealthResponse) ProtoMessage() {}
func (*StreamHealthResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{58}
}
-
func (m *StreamHealthResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StreamHealthResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *StreamHealthResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StreamHealthResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_StreamHealthResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *StreamHealthResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_StreamHealthResponse.Merge(m, src)
}
func (m *StreamHealthResponse) XXX_Size() int {
- return xxx_messageInfo_StreamHealthResponse.Size(m)
+ return m.Size()
}
func (m *StreamHealthResponse) XXX_DiscardUnknown() {
xxx_messageInfo_StreamHealthResponse.DiscardUnknown(m)
@@ -4203,18 +4743,26 @@ func (*TransactionMetadata) ProtoMessage() {}
func (*TransactionMetadata) Descriptor() ([]byte, []int) {
return fileDescriptor_5c6ac9b241082464, []int{59}
}
-
func (m *TransactionMetadata) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_TransactionMetadata.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *TransactionMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_TransactionMetadata.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_TransactionMetadata.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *TransactionMetadata) XXX_Merge(src proto.Message) {
xxx_messageInfo_TransactionMetadata.Merge(m, src)
}
func (m *TransactionMetadata) XXX_Size() int {
- return xxx_messageInfo_TransactionMetadata.Size(m)
+ return m.Size()
}
func (m *TransactionMetadata) XXX_DiscardUnknown() {
xxx_messageInfo_TransactionMetadata.DiscardUnknown(m)
@@ -4258,6 +4806,7 @@ func init() {
proto.RegisterEnum("query.ExecuteOptions_IncludedFields", ExecuteOptions_IncludedFields_name, ExecuteOptions_IncludedFields_value)
proto.RegisterEnum("query.ExecuteOptions_Workload", ExecuteOptions_Workload_name, ExecuteOptions_Workload_value)
proto.RegisterEnum("query.ExecuteOptions_TransactionIsolation", ExecuteOptions_TransactionIsolation_name, ExecuteOptions_TransactionIsolation_value)
+ proto.RegisterEnum("query.ExecuteOptions_PlannerVersion", ExecuteOptions_PlannerVersion_name, ExecuteOptions_PlannerVersion_value)
proto.RegisterEnum("query.StreamEvent_Statement_Category", StreamEvent_Statement_Category_name, StreamEvent_Statement_Category_value)
proto.RegisterType((*Target)(nil), "query.Target")
proto.RegisterType((*VTGateCallerID)(nil), "query.VTGateCallerID")
@@ -4326,203 +4875,15226 @@ func init() {
func init() { proto.RegisterFile("query.proto", fileDescriptor_5c6ac9b241082464) }
var fileDescriptor_5c6ac9b241082464 = []byte{
- // 3158 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5a, 0x4b, 0x70, 0x1b, 0x47,
- 0x7a, 0xd6, 0xe0, 0x45, 0xe0, 0x07, 0x01, 0x36, 0x9b, 0xa4, 0x04, 0x51, 0x7e, 0xd0, 0x63, 0xcb,
- 0x66, 0x98, 0x84, 0x92, 0x28, 0x59, 0x51, 0x6c, 0x27, 0xd1, 0x10, 0x1c, 0xca, 0x90, 0x80, 0x01,
- 0xd4, 0x18, 0x48, 0x96, 0x2a, 0x55, 0x53, 0x43, 0xa0, 0x05, 0x4e, 0x71, 0x80, 0x81, 0x66, 0x86,
- 0x94, 0x78, 0x53, 0xe2, 0x38, 0xce, 0x3b, 0xce, 0x3b, 0x8e, 0x2b, 0xae, 0x54, 0xe5, 0x90, 0xca,
- 0x65, 0xcf, 0x3e, 0xef, 0xc1, 0x87, 0x3d, 0x6c, 0xd5, 0x1e, 0x77, 0xf7, 0xb0, 0xbb, 0x87, 0xad,
- 0xdd, 0x93, 0x6b, 0x6b, 0x0f, 0x7b, 0xd8, 0xc3, 0xd6, 0x56, 0x3f, 0x66, 0x00, 0x90, 0xb0, 0x44,
- 0xcb, 0xeb, 0xda, 0x92, 0xac, 0x5b, 0xff, 0x8f, 0x7e, 0x7c, 0x5f, 0xff, 0xf3, 0xf7, 0x63, 0x1a,
- 0xf2, 0x77, 0x77, 0xa9, 0xbf, 0xbf, 0x3a, 0xf0, 0xbd, 0xd0, 0xc3, 0x69, 0x2e, 0x2c, 0x16, 0x43,
- 0x6f, 0xe0, 0x75, 0xec, 0xd0, 0x16, 0xea, 0xc5, 0xfc, 0x5e, 0xe8, 0x0f, 0xda, 0x42, 0x50, 0xdf,
- 0x53, 0x20, 0x63, 0xda, 0x7e, 0x97, 0x86, 0x78, 0x11, 0xb2, 0x3b, 0x74, 0x3f, 0x18, 0xd8, 0x6d,
- 0x5a, 0x52, 0x96, 0x94, 0xe5, 0x1c, 0x89, 0x65, 0x3c, 0x0f, 0xe9, 0x60, 0xdb, 0xf6, 0x3b, 0xa5,
- 0x04, 0x37, 0x08, 0x01, 0xbf, 0x0e, 0xf9, 0xd0, 0xde, 0x72, 0x69, 0x68, 0x85, 0xfb, 0x03, 0x5a,
- 0x4a, 0x2e, 0x29, 0xcb, 0xc5, 0xb5, 0xf9, 0xd5, 0xb8, 0x3f, 0x93, 0x1b, 0xcd, 0xfd, 0x01, 0x25,
- 0x10, 0xc6, 0x65, 0x8c, 0x21, 0xd5, 0xa6, 0xae, 0x5b, 0x4a, 0xf1, 0xb6, 0x78, 0x59, 0xdd, 0x80,
- 0xe2, 0x0d, 0xf3, 0x8a, 0x1d, 0xd2, 0xb2, 0xed, 0xba, 0xd4, 0xaf, 0x6c, 0xb0, 0xe1, 0xec, 0x06,
- 0xd4, 0xef, 0xdb, 0xbd, 0x78, 0x38, 0x91, 0x8c, 0x8f, 0x43, 0xa6, 0xeb, 0x7b, 0xbb, 0x83, 0xa0,
- 0x94, 0x58, 0x4a, 0x2e, 0xe7, 0x88, 0x94, 0xd4, 0x3f, 0x05, 0xd0, 0xf7, 0x68, 0x3f, 0x34, 0xbd,
- 0x1d, 0xda, 0xc7, 0xcf, 0x41, 0x2e, 0x74, 0x7a, 0x34, 0x08, 0xed, 0xde, 0x80, 0x37, 0x91, 0x24,
- 0x43, 0xc5, 0xe7, 0x40, 0x5a, 0x84, 0xec, 0xc0, 0x0b, 0x9c, 0xd0, 0xf1, 0xfa, 0x1c, 0x4f, 0x8e,
- 0xc4, 0xb2, 0xfa, 0xc7, 0x90, 0xbe, 0x61, 0xbb, 0xbb, 0x14, 0xbf, 0x08, 0x29, 0x0e, 0x58, 0xe1,
- 0x80, 0xf3, 0xab, 0x82, 0x74, 0x8e, 0x93, 0x1b, 0x58, 0xdb, 0x7b, 0xcc, 0x93, 0xb7, 0x3d, 0x4d,
- 0x84, 0xa0, 0xee, 0xc0, 0xf4, 0xba, 0xd3, 0xef, 0xdc, 0xb0, 0x7d, 0x87, 0x91, 0xf1, 0x98, 0xcd,
- 0xe0, 0x57, 0x20, 0xc3, 0x0b, 0x41, 0x29, 0xb9, 0x94, 0x5c, 0xce, 0xaf, 0x4d, 0xcb, 0x8a, 0x7c,
- 0x6c, 0x44, 0xda, 0xd4, 0x6f, 0x2a, 0x00, 0xeb, 0xde, 0x6e, 0xbf, 0x73, 0x9d, 0x19, 0x31, 0x82,
- 0x64, 0x70, 0xd7, 0x95, 0x44, 0xb2, 0x22, 0xbe, 0x06, 0xc5, 0x2d, 0xa7, 0xdf, 0xb1, 0xf6, 0xe4,
- 0x70, 0x04, 0x97, 0xf9, 0xb5, 0x57, 0x64, 0x73, 0xc3, 0xca, 0xab, 0xa3, 0xa3, 0x0e, 0xf4, 0x7e,
- 0xe8, 0xef, 0x93, 0xc2, 0xd6, 0xa8, 0x6e, 0xb1, 0x05, 0xf8, 0xb0, 0x13, 0xeb, 0x74, 0x87, 0xee,
- 0x47, 0x9d, 0xee, 0xd0, 0x7d, 0xfc, 0x3b, 0xa3, 0x88, 0xf2, 0x6b, 0x73, 0x51, 0x5f, 0x23, 0x75,
- 0x25, 0xcc, 0x37, 0x12, 0x97, 0x14, 0xf5, 0x93, 0x34, 0x14, 0xf5, 0xfb, 0xb4, 0xbd, 0x1b, 0xd2,
- 0xfa, 0x80, 0xcd, 0x41, 0x80, 0x6b, 0x30, 0xe3, 0xf4, 0xdb, 0xee, 0x6e, 0x87, 0x76, 0xac, 0x3b,
- 0x0e, 0x75, 0x3b, 0x01, 0x8f, 0xa3, 0x62, 0x3c, 0xee, 0x71, 0xff, 0xd5, 0x8a, 0x74, 0xde, 0xe4,
- 0xbe, 0xa4, 0xe8, 0x8c, 0xc9, 0x78, 0x05, 0x66, 0xdb, 0xae, 0x43, 0xfb, 0xa1, 0x75, 0x87, 0xe1,
- 0xb5, 0x7c, 0xef, 0x5e, 0x50, 0x4a, 0x2f, 0x29, 0xcb, 0x59, 0x32, 0x23, 0x0c, 0x9b, 0x4c, 0x4f,
- 0xbc, 0x7b, 0x01, 0x7e, 0x03, 0xb2, 0xf7, 0x3c, 0x7f, 0xc7, 0xf5, 0xec, 0x4e, 0x29, 0xc3, 0xfb,
- 0x7c, 0x61, 0x72, 0x9f, 0x37, 0xa5, 0x17, 0x89, 0xfd, 0xf1, 0x32, 0xa0, 0xe0, 0xae, 0x6b, 0x05,
- 0xd4, 0xa5, 0xed, 0xd0, 0x72, 0x9d, 0x9e, 0x13, 0x96, 0xb2, 0x3c, 0x24, 0x8b, 0xc1, 0x5d, 0xb7,
- 0xc9, 0xd5, 0x55, 0xa6, 0xc5, 0x16, 0x2c, 0x84, 0xbe, 0xdd, 0x0f, 0xec, 0x36, 0x6b, 0xcc, 0x72,
- 0x02, 0xcf, 0xb5, 0x79, 0x38, 0xe6, 0x78, 0x97, 0x2b, 0x93, 0xbb, 0x34, 0x87, 0x55, 0x2a, 0x51,
- 0x0d, 0x32, 0x1f, 0x4e, 0xd0, 0xe2, 0x73, 0xb0, 0x10, 0xec, 0x38, 0x03, 0x8b, 0xb7, 0x63, 0x0d,
- 0x5c, 0xbb, 0x6f, 0xb5, 0xed, 0xf6, 0x36, 0x2d, 0x01, 0x87, 0x8d, 0x99, 0x91, 0xcf, 0x7b, 0xc3,
- 0xb5, 0xfb, 0x65, 0x66, 0x51, 0xdf, 0x84, 0xe2, 0x38, 0x8f, 0x78, 0x16, 0x0a, 0xe6, 0xad, 0x86,
- 0x6e, 0x69, 0xc6, 0x86, 0x65, 0x68, 0x35, 0x1d, 0x1d, 0xc3, 0x05, 0xc8, 0x71, 0x55, 0xdd, 0xa8,
- 0xde, 0x42, 0x0a, 0x9e, 0x82, 0xa4, 0x56, 0xad, 0xa2, 0x84, 0x7a, 0x09, 0xb2, 0x11, 0x21, 0x78,
- 0x06, 0xf2, 0x2d, 0xa3, 0xd9, 0xd0, 0xcb, 0x95, 0xcd, 0x8a, 0xbe, 0x81, 0x8e, 0xe1, 0x2c, 0xa4,
- 0xea, 0x55, 0xb3, 0x81, 0x14, 0x51, 0xd2, 0x1a, 0x28, 0xc1, 0x6a, 0x6e, 0xac, 0x6b, 0x28, 0xa9,
- 0xfe, 0x9f, 0x02, 0xf3, 0x93, 0x80, 0xe1, 0x3c, 0x4c, 0x6d, 0xe8, 0x9b, 0x5a, 0xab, 0x6a, 0xa2,
- 0x63, 0x78, 0x0e, 0x66, 0x88, 0xde, 0xd0, 0x35, 0x53, 0x5b, 0xaf, 0xea, 0x16, 0xd1, 0xb5, 0x0d,
- 0xa4, 0x60, 0x0c, 0x45, 0x56, 0xb2, 0xca, 0xf5, 0x5a, 0xad, 0x62, 0x9a, 0xfa, 0x06, 0x4a, 0xe0,
- 0x79, 0x40, 0x5c, 0xd7, 0x32, 0x86, 0xda, 0x24, 0x46, 0x30, 0xdd, 0xd4, 0x49, 0x45, 0xab, 0x56,
- 0x6e, 0xb3, 0x06, 0x50, 0x0a, 0xbf, 0x04, 0xcf, 0x97, 0xeb, 0x46, 0xb3, 0xd2, 0x34, 0x75, 0xc3,
- 0xb4, 0x9a, 0x86, 0xd6, 0x68, 0xbe, 0x5d, 0x37, 0x79, 0xcb, 0x02, 0x5c, 0x1a, 0x17, 0x01, 0xb4,
- 0x96, 0x59, 0x17, 0xed, 0xa0, 0xcc, 0xd5, 0x54, 0x56, 0x41, 0x89, 0xab, 0xa9, 0x6c, 0x02, 0x25,
- 0xaf, 0xa6, 0xb2, 0x49, 0x94, 0x52, 0x3f, 0x49, 0x40, 0x9a, 0x73, 0xc5, 0xd2, 0xdd, 0x48, 0x12,
- 0xe3, 0xe5, 0xf8, 0xd3, 0x4f, 0x3c, 0xe4, 0xd3, 0xe7, 0x19, 0x53, 0x26, 0x21, 0x21, 0xe0, 0x53,
- 0x90, 0xf3, 0xfc, 0xae, 0x25, 0x2c, 0x22, 0x7d, 0x66, 0x3d, 0xbf, 0xcb, 0xf3, 0x2c, 0x4b, 0x5d,
- 0x2c, 0xeb, 0x6e, 0xd9, 0x01, 0xe5, 0x11, 0x9c, 0x23, 0xb1, 0x8c, 0x4f, 0x02, 0xf3, 0xb3, 0xf8,
- 0x38, 0x32, 0xdc, 0x36, 0xe5, 0xf9, 0x5d, 0x83, 0x0d, 0xe5, 0x65, 0x28, 0xb4, 0x3d, 0x77, 0xb7,
- 0xd7, 0xb7, 0x5c, 0xda, 0xef, 0x86, 0xdb, 0xa5, 0xa9, 0x25, 0x65, 0xb9, 0x40, 0xa6, 0x85, 0xb2,
- 0xca, 0x75, 0xb8, 0x04, 0x53, 0xed, 0x6d, 0xdb, 0x0f, 0xa8, 0x88, 0xda, 0x02, 0x89, 0x44, 0xde,
- 0x2b, 0x6d, 0x3b, 0x3d, 0xdb, 0x0d, 0x78, 0x84, 0x16, 0x48, 0x2c, 0x33, 0x10, 0x77, 0x5c, 0xbb,
- 0x1b, 0xf0, 0xc8, 0x2a, 0x10, 0x21, 0xe0, 0x17, 0x21, 0x2f, 0x3b, 0xe4, 0x14, 0xe4, 0xf9, 0x70,
- 0x40, 0xa8, 0x18, 0x03, 0xea, 0x1f, 0x40, 0x92, 0x78, 0xf7, 0x58, 0x9f, 0x62, 0x44, 0x41, 0x49,
- 0x59, 0x4a, 0x2e, 0x63, 0x12, 0x89, 0x2c, 0xfd, 0xcb, 0x0c, 0x28, 0x12, 0x63, 0x94, 0xf3, 0x3e,
- 0x52, 0x20, 0xcf, 0x23, 0x97, 0xd0, 0x60, 0xd7, 0x0d, 0x59, 0xa6, 0x94, 0x29, 0x42, 0x19, 0xcb,
- 0x94, 0x7c, 0x5e, 0x88, 0xb4, 0x31, 0x02, 0xd8, 0x57, 0x6f, 0xd9, 0x77, 0xee, 0xd0, 0x76, 0x48,
- 0xc5, 0x82, 0x90, 0x22, 0xd3, 0x4c, 0xa9, 0x49, 0x1d, 0x63, 0xde, 0xe9, 0x07, 0xd4, 0x0f, 0x2d,
- 0xa7, 0xc3, 0xe7, 0x24, 0x45, 0xb2, 0x42, 0x51, 0xe9, 0xe0, 0x17, 0x20, 0xc5, 0xf3, 0x46, 0x8a,
- 0xf7, 0x02, 0xb2, 0x17, 0xe2, 0xdd, 0x23, 0x5c, 0x7f, 0x35, 0x95, 0x4d, 0xa3, 0x8c, 0xfa, 0x16,
- 0x4c, 0xf3, 0xc1, 0xdd, 0xb4, 0xfd, 0xbe, 0xd3, 0xef, 0xf2, 0x65, 0xd0, 0xeb, 0x88, 0xb8, 0x28,
- 0x10, 0x5e, 0x66, 0x98, 0x7b, 0x34, 0x08, 0xec, 0x2e, 0x95, 0xcb, 0x52, 0x24, 0xaa, 0xff, 0x93,
- 0x84, 0x7c, 0x33, 0xf4, 0xa9, 0xdd, 0xe3, 0x2b, 0x1c, 0x7e, 0x0b, 0x20, 0x08, 0xed, 0x90, 0xf6,
- 0x68, 0x3f, 0x8c, 0xf0, 0x3d, 0x27, 0x7b, 0x1e, 0xf1, 0x5b, 0x6d, 0x46, 0x4e, 0x64, 0xc4, 0x1f,
- 0xaf, 0x41, 0x9e, 0x32, 0xb3, 0x15, 0xb2, 0x95, 0x52, 0x66, 0xe3, 0xd9, 0x28, 0xb5, 0xc4, 0x4b,
- 0x28, 0x01, 0x1a, 0x97, 0x17, 0x3f, 0x4e, 0x40, 0x2e, 0x6e, 0x0d, 0x6b, 0x90, 0x6d, 0xdb, 0x21,
- 0xed, 0x7a, 0xfe, 0xbe, 0x5c, 0xc0, 0x4e, 0x3f, 0xac, 0xf7, 0xd5, 0xb2, 0x74, 0x26, 0x71, 0x35,
- 0xfc, 0x3c, 0x88, 0x5d, 0x81, 0x08, 0x4b, 0x81, 0x37, 0xc7, 0x35, 0x3c, 0x30, 0xdf, 0x00, 0x3c,
- 0xf0, 0x9d, 0x9e, 0xed, 0xef, 0x5b, 0x3b, 0x74, 0x3f, 0x4a, 0xf6, 0xc9, 0x09, 0x33, 0x89, 0xa4,
- 0xdf, 0x35, 0xba, 0x2f, 0xd3, 0xd3, 0xa5, 0xf1, 0xba, 0x32, 0x5a, 0x0e, 0xcf, 0xcf, 0x48, 0x4d,
- 0xbe, 0x7c, 0x06, 0xd1, 0x42, 0x99, 0xe6, 0x81, 0xc5, 0x8a, 0xea, 0x6b, 0x90, 0x8d, 0x06, 0x8f,
- 0x73, 0x90, 0xd6, 0x7d, 0xdf, 0xf3, 0xd1, 0x31, 0x9e, 0xa5, 0x6a, 0x55, 0x91, 0xe8, 0x36, 0x36,
- 0x58, 0xa2, 0xfb, 0x51, 0x22, 0x5e, 0xad, 0x08, 0xbd, 0xbb, 0x4b, 0x83, 0x10, 0xff, 0x09, 0xcc,
- 0x51, 0x1e, 0x42, 0xce, 0x1e, 0xb5, 0xda, 0x7c, 0x6b, 0xc3, 0x02, 0x48, 0xe1, 0x7c, 0xcf, 0xac,
- 0x8a, 0x9d, 0x58, 0xb4, 0xe5, 0x21, 0xb3, 0xb1, 0xaf, 0x54, 0x75, 0xb0, 0x0e, 0x73, 0x4e, 0xaf,
- 0x47, 0x3b, 0x8e, 0x1d, 0x8e, 0x36, 0x20, 0x26, 0x6c, 0x21, 0x5a, 0xf9, 0xc7, 0x76, 0x4e, 0x64,
- 0x36, 0xae, 0x11, 0x37, 0x73, 0x1a, 0x32, 0x21, 0xdf, 0xe5, 0xf1, 0xd8, 0xcd, 0xaf, 0x15, 0xa2,
- 0x8c, 0xc3, 0x95, 0x44, 0x1a, 0xf1, 0x6b, 0x20, 0xf6, 0x8c, 0x3c, 0xb7, 0x0c, 0x03, 0x62, 0xb8,
- 0x15, 0x20, 0xc2, 0x8e, 0x4f, 0x43, 0x71, 0x6c, 0x91, 0xea, 0x70, 0xc2, 0x92, 0xa4, 0x30, 0xba,
- 0xe2, 0x74, 0xf0, 0x19, 0x98, 0xf2, 0xc4, 0x02, 0xc5, 0xb3, 0xce, 0x70, 0xc4, 0xe3, 0xab, 0x17,
- 0x89, 0xbc, 0x58, 0x6e, 0xf0, 0x69, 0x40, 0xfd, 0x3d, 0xda, 0x61, 0x8d, 0x4e, 0xf1, 0x46, 0x21,
- 0x52, 0x55, 0x3a, 0xea, 0x1f, 0xc1, 0x4c, 0x4c, 0x71, 0x30, 0xf0, 0xfa, 0x01, 0xc5, 0x2b, 0x90,
- 0xf1, 0xf9, 0xf7, 0x2e, 0x69, 0xc5, 0xb2, 0x8f, 0x91, 0x4c, 0x40, 0xa4, 0x87, 0xda, 0x81, 0x19,
- 0xa1, 0xb9, 0xe9, 0x84, 0xdb, 0x7c, 0x26, 0xf1, 0x69, 0x48, 0x53, 0x56, 0x38, 0x30, 0x29, 0xa4,
- 0x51, 0xe6, 0x76, 0x22, 0xac, 0x23, 0xbd, 0x24, 0x1e, 0xd9, 0xcb, 0xcf, 0x12, 0x30, 0x27, 0x47,
- 0xb9, 0x6e, 0x87, 0xed, 0xed, 0x27, 0x34, 0x1a, 0x7e, 0x17, 0xa6, 0x98, 0xde, 0x89, 0xbf, 0x9c,
- 0x09, 0xf1, 0x10, 0x79, 0xb0, 0x88, 0xb0, 0x03, 0x6b, 0x64, 0xfa, 0xe5, 0x2e, 0xaa, 0x60, 0x07,
- 0x23, 0x4b, 0xf8, 0x84, 0xc0, 0xc9, 0x3c, 0x22, 0x70, 0xa6, 0x8e, 0x12, 0x38, 0xea, 0x06, 0xcc,
- 0x8f, 0x33, 0x2e, 0x83, 0xe3, 0xf7, 0x60, 0x4a, 0x4c, 0x4a, 0x94, 0x23, 0x27, 0xcd, 0x5b, 0xe4,
- 0xa2, 0x7e, 0x9a, 0x80, 0x79, 0x99, 0xbe, 0xbe, 0x1e, 0xdf, 0xf1, 0x08, 0xcf, 0xe9, 0x23, 0x7d,
- 0xa0, 0x47, 0x9b, 0x3f, 0xb5, 0x0c, 0x0b, 0x07, 0x78, 0x7c, 0x8c, 0x8f, 0xf5, 0x33, 0x05, 0xa6,
- 0xd7, 0x69, 0xd7, 0xe9, 0x3f, 0xa1, 0xb3, 0x30, 0x42, 0x6e, 0xea, 0x48, 0x41, 0x3c, 0x80, 0x82,
- 0xc4, 0x2b, 0xd9, 0x3a, 0xcc, 0xb6, 0x32, 0xe9, 0x6b, 0xb9, 0x04, 0xd3, 0xf2, 0x1c, 0x6e, 0xbb,
- 0x8e, 0x1d, 0xc4, 0x78, 0x0e, 0x1c, 0xc4, 0x35, 0x66, 0x24, 0xf2, 0xc8, 0xce, 0x05, 0xf5, 0xc7,
- 0x0a, 0x14, 0xca, 0x5e, 0xaf, 0xe7, 0x84, 0x4f, 0x28, 0xc7, 0x87, 0x19, 0x4a, 0x4d, 0x8a, 0xc7,
- 0x73, 0x50, 0x8c, 0x60, 0x4a, 0x6a, 0x0f, 0xac, 0x34, 0xca, 0xa1, 0x95, 0xe6, 0x27, 0x0a, 0xcc,
- 0x10, 0xcf, 0x75, 0xb7, 0xec, 0xf6, 0xce, 0xd3, 0x4d, 0xce, 0x79, 0x40, 0x43, 0xa0, 0x47, 0xa5,
- 0xe7, 0x97, 0x0a, 0x14, 0x1b, 0x3e, 0x1d, 0xd8, 0x3e, 0x7d, 0xaa, 0xd9, 0x61, 0xdb, 0xf4, 0x4e,
- 0x28, 0x37, 0x38, 0x39, 0xc2, 0xcb, 0xea, 0x2c, 0xcc, 0xc4, 0xd8, 0x05, 0x61, 0xea, 0xf7, 0x14,
- 0x58, 0x10, 0x21, 0x26, 0x2d, 0x9d, 0x27, 0x94, 0x96, 0x08, 0x6f, 0x6a, 0x04, 0x6f, 0x09, 0x8e,
- 0x1f, 0xc4, 0x26, 0x61, 0xbf, 0x9b, 0x80, 0x13, 0x51, 0xf0, 0x3c, 0xe1, 0xc0, 0xbf, 0x44, 0x3c,
- 0x2c, 0x42, 0xe9, 0x30, 0x09, 0x92, 0xa1, 0x0f, 0x12, 0x50, 0x2a, 0xfb, 0xd4, 0x0e, 0xe9, 0xc8,
- 0x3e, 0xe8, 0xe9, 0x89, 0x0d, 0x7c, 0x0e, 0xa6, 0x07, 0xb6, 0x1f, 0x3a, 0x6d, 0x67, 0x60, 0xb3,
- 0xa3, 0x68, 0x9a, 0x6f, 0xb3, 0x0e, 0x34, 0x30, 0xe6, 0xa2, 0x9e, 0x82, 0x93, 0x13, 0x18, 0x91,
- 0x7c, 0xfd, 0x4a, 0x01, 0xdc, 0x0c, 0x6d, 0x3f, 0xfc, 0x1a, 0xac, 0x4b, 0x13, 0x83, 0x69, 0x01,
- 0xe6, 0xc6, 0xf0, 0x8f, 0xf2, 0x42, 0xc3, 0xaf, 0xc5, 0x92, 0xf4, 0xb9, 0xbc, 0x8c, 0xe2, 0x97,
- 0xbc, 0xfc, 0x40, 0x81, 0xc5, 0xb2, 0x27, 0x6e, 0x27, 0x9f, 0xca, 0x2f, 0x4c, 0x7d, 0x1e, 0x4e,
- 0x4d, 0x04, 0x28, 0x09, 0xf8, 0xbe, 0x02, 0xc7, 0x09, 0xb5, 0x3b, 0x4f, 0x27, 0xf8, 0xeb, 0x70,
- 0xe2, 0x10, 0x38, 0xb9, 0x47, 0xb9, 0x08, 0xd9, 0x1e, 0x0d, 0x6d, 0xb6, 0xc3, 0x95, 0x90, 0x16,
- 0xa3, 0x76, 0x87, 0xde, 0x35, 0xe9, 0x41, 0x62, 0x5f, 0xf5, 0x87, 0x09, 0x98, 0xe3, 0xfb, 0xec,
- 0x67, 0x87, 0xbc, 0x23, 0xdd, 0xc2, 0x64, 0x0e, 0x6e, 0xfe, 0x98, 0xc3, 0xc0, 0xa7, 0x56, 0x74,
- 0x3b, 0x30, 0xc5, 0x7f, 0xc2, 0xc1, 0xc0, 0xa7, 0xd7, 0x85, 0x46, 0xfd, 0x96, 0x02, 0xf3, 0xe3,
- 0x14, 0xc7, 0x27, 0x9a, 0xdf, 0xf4, 0x6d, 0xcb, 0x84, 0x94, 0x92, 0x3c, 0xca, 0x21, 0x29, 0x75,
- 0xe4, 0x43, 0xd2, 0xb7, 0x13, 0x50, 0x1a, 0x05, 0xf3, 0xec, 0x4e, 0x67, 0xfc, 0x4e, 0xe7, 0x8b,
- 0xde, 0xf2, 0xa9, 0xdf, 0x51, 0xe0, 0xe4, 0x04, 0x42, 0xbf, 0x58, 0x88, 0x8c, 0xdc, 0xec, 0x24,
- 0x1e, 0x79, 0xb3, 0xf3, 0xd5, 0x07, 0xc9, 0x77, 0x15, 0x98, 0xaf, 0x89, 0xbb, 0x7a, 0x71, 0xf3,
- 0xf1, 0xe4, 0xe6, 0x60, 0x7e, 0x1d, 0x9f, 0x1a, 0xfe, 0xad, 0x52, 0xcb, 0xb0, 0x70, 0x00, 0xda,
- 0x63, 0xdc, 0xe6, 0xfc, 0x42, 0x81, 0x59, 0xd9, 0x8a, 0xf6, 0xc4, 0x6e, 0x5f, 0x26, 0xb0, 0x83,
- 0x5f, 0x80, 0xa4, 0xd3, 0x89, 0xf6, 0xbd, 0xe3, 0x3f, 0xe3, 0x99, 0x41, 0xbd, 0x0c, 0x78, 0x14,
- 0xf7, 0x63, 0x50, 0xf7, 0xd3, 0x04, 0x2c, 0x10, 0x91, 0x7d, 0x9f, 0xfd, 0x5f, 0xf8, 0xb2, 0xff,
- 0x17, 0x1e, 0xbe, 0x70, 0x7d, 0xca, 0x37, 0x53, 0xe3, 0x54, 0x7f, 0x75, 0x4b, 0xd7, 0x81, 0x85,
- 0x36, 0x79, 0x68, 0xa1, 0x7d, 0xfc, 0x7c, 0xf4, 0x69, 0x02, 0x16, 0x25, 0x90, 0x67, 0x7b, 0x9d,
- 0xa3, 0x47, 0x44, 0xe6, 0x50, 0x44, 0xfc, 0x5c, 0x81, 0x53, 0x13, 0x89, 0xfc, 0xad, 0xef, 0x68,
- 0x0e, 0x44, 0x4f, 0xea, 0x91, 0xd1, 0x93, 0x3e, 0x72, 0xf4, 0xbc, 0x9f, 0x80, 0x22, 0xa1, 0x2e,
- 0xb5, 0x83, 0xa7, 0xfc, 0x76, 0xef, 0x00, 0x87, 0xe9, 0x43, 0xf7, 0x9c, 0xb3, 0x30, 0x13, 0x13,
- 0x21, 0x0f, 0x5c, 0xfc, 0x80, 0xce, 0xd6, 0xc1, 0xb7, 0xa9, 0xed, 0x86, 0xd1, 0x4e, 0x50, 0xfd,
- 0xdf, 0x04, 0x14, 0x08, 0xd3, 0x38, 0x3d, 0xda, 0x0c, 0xed, 0x30, 0xc0, 0x2f, 0xc1, 0xf4, 0x36,
- 0x77, 0xb1, 0x86, 0x11, 0x92, 0x23, 0x79, 0xa1, 0x13, 0x7f, 0x1f, 0xd7, 0x60, 0x21, 0xa0, 0x6d,
- 0xaf, 0xdf, 0x09, 0xac, 0x2d, 0xba, 0xed, 0xf4, 0x3b, 0x56, 0xcf, 0x0e, 0x42, 0xea, 0x73, 0x5a,
- 0x0a, 0x64, 0x4e, 0x1a, 0xd7, 0xb9, 0xad, 0xc6, 0x4d, 0xf8, 0x2c, 0xcc, 0x6f, 0x39, 0x7d, 0xd7,
- 0xeb, 0x5a, 0x03, 0xd7, 0xde, 0xa7, 0x7e, 0x60, 0xb5, 0xbd, 0xdd, 0xbe, 0xe0, 0x23, 0x4d, 0xb0,
- 0xb0, 0x35, 0x84, 0xa9, 0xcc, 0x2c, 0xf8, 0x36, 0xac, 0x4c, 0xec, 0xc5, 0xba, 0xe3, 0xb8, 0x21,
- 0xf5, 0x69, 0xc7, 0xf2, 0xe9, 0xc0, 0x75, 0xda, 0xe2, 0xa1, 0x91, 0x20, 0xea, 0xd5, 0x09, 0x5d,
- 0x6f, 0x4a, 0x77, 0x32, 0xf4, 0xc6, 0xa7, 0x20, 0xd7, 0x1e, 0xec, 0x5a, 0xbb, 0xfc, 0xd1, 0x02,
- 0xe3, 0x4f, 0x21, 0xd9, 0xf6, 0x60, 0xb7, 0xc5, 0x64, 0x8c, 0x20, 0x79, 0x77, 0x20, 0x92, 0xb3,
- 0x42, 0x58, 0x51, 0xfd, 0x4c, 0x81, 0xa2, 0xd6, 0xed, 0xfa, 0xb4, 0x6b, 0x87, 0x92, 0xa6, 0xb3,
- 0x30, 0x2f, 0x28, 0xd9, 0xb7, 0x64, 0xb8, 0x0a, 0x3c, 0x8a, 0xc0, 0x23, 0x6d, 0x22, 0x56, 0x05,
- 0x9e, 0x0b, 0x70, 0x7c, 0xb7, 0x3f, 0xb1, 0x4e, 0x82, 0xd7, 0x99, 0x8f, 0xad, 0xa3, 0xb5, 0xfe,
- 0x10, 0x4e, 0x4e, 0x66, 0xa1, 0xe7, 0x88, 0xc7, 0x7e, 0x05, 0x72, 0x7c, 0x02, 0xe8, 0x9a, 0xd3,
- 0x7f, 0x48, 0x55, 0xfb, 0x3e, 0xe7, 0xeb, 0x73, 0xaa, 0xda, 0xf7, 0xd5, 0xff, 0x8f, 0xff, 0x29,
- 0x46, 0xe1, 0x12, 0x27, 0x8e, 0x28, 0x90, 0x95, 0x87, 0x05, 0x72, 0x09, 0xa6, 0x58, 0x30, 0x3a,
- 0xfd, 0x2e, 0x07, 0x97, 0x25, 0x91, 0x88, 0x9b, 0xf0, 0xaa, 0xc4, 0x4e, 0xef, 0x87, 0xd4, 0xef,
- 0xdb, 0xae, 0xbb, 0x6f, 0x89, 0xeb, 0xc7, 0x7e, 0x48, 0x3b, 0xd6, 0xf0, 0xf1, 0xa3, 0x48, 0x1f,
- 0x2f, 0x0b, 0x6f, 0x3d, 0x76, 0x26, 0xb1, 0xaf, 0x19, 0x3f, 0x8b, 0x7c, 0x13, 0x8a, 0xbe, 0x0c,
- 0x62, 0x2b, 0x60, 0xd3, 0x23, 0x53, 0xee, 0x7c, 0xf4, 0x6a, 0x62, 0x34, 0xc2, 0x49, 0xc1, 0x1f,
- 0x0b, 0xf8, 0xc7, 0x4e, 0x38, 0x57, 0x53, 0xd9, 0x0c, 0x9a, 0x52, 0xbf, 0xa1, 0xc0, 0xdc, 0x84,
- 0xb3, 0x7b, 0x7c, 0x31, 0xa0, 0x8c, 0xdc, 0x3b, 0xfe, 0x3e, 0xa4, 0xf9, 0x83, 0x16, 0xf9, 0x86,
- 0xea, 0xc4, 0xe1, 0xa3, 0x3f, 0x7f, 0x7c, 0x42, 0x84, 0x17, 0xfb, 0x16, 0x39, 0xa6, 0x36, 0xbf,
- 0x78, 0x8c, 0x32, 0x6a, 0x9e, 0xe9, 0xc4, 0x5d, 0xe4, 0xe1, 0x9b, 0xcc, 0xd4, 0x23, 0x6f, 0x32,
- 0x57, 0xfe, 0x39, 0x09, 0xb9, 0xda, 0x7e, 0xf3, 0xae, 0xbb, 0xe9, 0xda, 0x5d, 0xfe, 0x3a, 0xa4,
- 0xd6, 0x30, 0x6f, 0xa1, 0x63, 0x78, 0x16, 0x0a, 0x46, 0xdd, 0xb4, 0x8c, 0x56, 0xb5, 0x6a, 0x6d,
- 0x56, 0xb5, 0x2b, 0x48, 0xc1, 0x08, 0xa6, 0x1b, 0xa4, 0x62, 0x5d, 0xd3, 0x6f, 0x09, 0x4d, 0x02,
- 0xcf, 0xc1, 0x4c, 0xcb, 0xa8, 0x5c, 0x6f, 0xe9, 0x43, 0x65, 0x0a, 0x2f, 0xc0, 0x6c, 0xad, 0x55,
- 0x35, 0x2b, 0x8d, 0xea, 0x88, 0x3a, 0x8b, 0x0b, 0x90, 0x5b, 0xaf, 0xd6, 0xd7, 0x85, 0x88, 0x58,
- 0xfb, 0x2d, 0xa3, 0x59, 0xb9, 0x62, 0xe8, 0x1b, 0x42, 0xb5, 0xc4, 0x54, 0xb7, 0x75, 0x52, 0xdf,
- 0xac, 0x44, 0x5d, 0x5e, 0xc6, 0x08, 0xf2, 0xeb, 0x15, 0x43, 0x23, 0xb2, 0x95, 0x07, 0x0a, 0x2e,
- 0x42, 0x4e, 0x37, 0x5a, 0x35, 0x29, 0x27, 0x70, 0x09, 0xe6, 0xb4, 0x96, 0x59, 0xb7, 0x2a, 0x46,
- 0x99, 0xe8, 0x35, 0xdd, 0x30, 0xa5, 0x25, 0x85, 0xe7, 0xa0, 0x68, 0x56, 0x6a, 0x7a, 0xd3, 0xd4,
- 0x6a, 0x0d, 0xa9, 0x64, 0xa3, 0xc8, 0x36, 0xf5, 0xc8, 0x07, 0xe1, 0x45, 0x58, 0x30, 0xea, 0x96,
- 0x7c, 0x8a, 0x67, 0xdd, 0xd0, 0xaa, 0x2d, 0x5d, 0xda, 0x96, 0xf0, 0x09, 0xc0, 0x75, 0xc3, 0x6a,
- 0x35, 0x36, 0x34, 0x53, 0xb7, 0x8c, 0xfa, 0x4d, 0x69, 0xb8, 0x8c, 0x8b, 0x90, 0x1d, 0x8e, 0xe0,
- 0x01, 0x63, 0xa1, 0xd0, 0xd0, 0x88, 0x39, 0x04, 0xfb, 0xe0, 0x01, 0x23, 0x0b, 0xae, 0x90, 0x7a,
- 0xab, 0x31, 0x74, 0x9b, 0x85, 0xbc, 0x24, 0x4b, 0xaa, 0x52, 0x4c, 0xb5, 0x5e, 0x31, 0xca, 0xf1,
- 0xf8, 0x1e, 0x64, 0x17, 0x13, 0x48, 0x59, 0xd9, 0x81, 0x14, 0x9f, 0x8e, 0x2c, 0xa4, 0x8c, 0xba,
- 0xa1, 0xa3, 0x63, 0x78, 0x06, 0xa0, 0xd2, 0xac, 0x18, 0xa6, 0x7e, 0x85, 0x68, 0x55, 0x06, 0x9b,
- 0x2b, 0x22, 0x02, 0x19, 0xda, 0x69, 0x98, 0xaa, 0x34, 0x37, 0xab, 0x75, 0xcd, 0x94, 0x30, 0x2b,
- 0xcd, 0xeb, 0xad, 0xba, 0xc9, 0x8c, 0x08, 0xe7, 0x21, 0x53, 0x69, 0x9a, 0xfa, 0x3b, 0x26, 0xc3,
- 0xc5, 0x6d, 0x82, 0x55, 0xf4, 0xe0, 0xf2, 0xca, 0x87, 0x49, 0x48, 0xf1, 0x57, 0xcd, 0x05, 0xc8,
- 0xf1, 0xd9, 0x36, 0x6f, 0x35, 0x58, 0x97, 0x39, 0x48, 0x55, 0x0c, 0xf3, 0x12, 0xfa, 0xb3, 0x04,
- 0x06, 0x48, 0xb7, 0x78, 0xf9, 0xcf, 0x33, 0xac, 0x5c, 0x31, 0xcc, 0x73, 0x17, 0xd1, 0xbb, 0x09,
- 0xd6, 0x6c, 0x4b, 0x08, 0x7f, 0x11, 0x19, 0xd6, 0x2e, 0xa0, 0xf7, 0x62, 0xc3, 0xda, 0x05, 0xf4,
- 0x97, 0x91, 0xe1, 0xfc, 0x1a, 0x7a, 0x3f, 0x36, 0x9c, 0x5f, 0x43, 0x7f, 0x15, 0x19, 0x2e, 0x5e,
- 0x40, 0x7f, 0x1d, 0x1b, 0x2e, 0x5e, 0x40, 0x7f, 0x93, 0x61, 0x58, 0x38, 0x92, 0xf3, 0x6b, 0xe8,
- 0x6f, 0xb3, 0xb1, 0x74, 0xf1, 0x02, 0xfa, 0xbb, 0x2c, 0x9b, 0xff, 0x78, 0x56, 0xd1, 0xdf, 0x23,
- 0x36, 0x4c, 0x36, 0x41, 0xe8, 0x1f, 0x78, 0x91, 0x99, 0xd0, 0x3f, 0x22, 0x86, 0x91, 0x69, 0xb9,
- 0xf8, 0x01, 0xb7, 0xdc, 0xd2, 0x35, 0x82, 0xfe, 0x29, 0x23, 0x5e, 0x5e, 0x96, 0x2b, 0x35, 0xad,
- 0x8a, 0x30, 0xaf, 0xc1, 0x58, 0xf9, 0x97, 0xb3, 0xac, 0xc8, 0xc2, 0x13, 0xfd, 0x6b, 0x83, 0x75,
- 0x78, 0x43, 0x23, 0xe5, 0xb7, 0x35, 0x82, 0xfe, 0xed, 0x2c, 0xeb, 0xf0, 0x86, 0x46, 0x24, 0x5f,
- 0xff, 0xde, 0x60, 0x8e, 0xdc, 0xf4, 0x1f, 0x67, 0xd9, 0xa0, 0xa5, 0xfe, 0x3f, 0x1b, 0x38, 0x0b,
- 0xc9, 0xf5, 0x8a, 0x89, 0x3e, 0xe4, 0xbd, 0xb1, 0x10, 0x45, 0xff, 0x85, 0x98, 0xb2, 0xa9, 0x9b,
- 0xe8, 0x23, 0xa6, 0x4c, 0x9b, 0xad, 0x46, 0x55, 0x47, 0xcf, 0xb1, 0xc1, 0x5d, 0xd1, 0xeb, 0x35,
- 0xdd, 0x24, 0xb7, 0xd0, 0x7f, 0x73, 0xf7, 0xab, 0xcd, 0xba, 0x81, 0x3e, 0x46, 0xb8, 0x08, 0xa0,
- 0xbf, 0xd3, 0x20, 0x7a, 0xb3, 0x59, 0xa9, 0x1b, 0xe8, 0xc5, 0x95, 0x4d, 0x40, 0x07, 0xd3, 0x01,
- 0x03, 0xd0, 0x32, 0xae, 0x19, 0xf5, 0x9b, 0x06, 0x3a, 0xc6, 0x84, 0x06, 0xd1, 0x1b, 0x1a, 0xd1,
- 0x91, 0x82, 0x01, 0x32, 0xf2, 0x3d, 0x67, 0x02, 0x4f, 0x43, 0x96, 0xd4, 0xab, 0xd5, 0x75, 0xad,
- 0x7c, 0x0d, 0x25, 0xd7, 0x5f, 0x87, 0x19, 0xc7, 0x5b, 0xdd, 0x73, 0x42, 0x1a, 0x04, 0xe2, 0xdd,
- 0xfc, 0x6d, 0x55, 0x4a, 0x8e, 0x77, 0x46, 0x94, 0xce, 0x74, 0xbd, 0x33, 0x7b, 0xe1, 0x19, 0x6e,
- 0x3d, 0xc3, 0x33, 0xc6, 0x56, 0x86, 0x0b, 0xe7, 0x7f, 0x1d, 0x00, 0x00, 0xff, 0xff, 0xd7, 0x1b,
- 0xa7, 0xfb, 0x95, 0x2f, 0x00, 0x00,
+ // 3303 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xec, 0x5b, 0x4d, 0x90, 0x1b, 0x49,
+ 0x56, 0xee, 0x2a, 0xfd, 0xb4, 0xf4, 0xd4, 0x52, 0x67, 0x67, 0x77, 0xdb, 0x9a, 0xf6, 0x8c, 0xa7,
+ 0xb7, 0x76, 0x67, 0xd7, 0x18, 0x68, 0x7b, 0xda, 0x5e, 0x63, 0x66, 0x17, 0x98, 0x6a, 0x75, 0xb5,
+ 0x47, 0xb6, 0x54, 0x92, 0x53, 0x25, 0x7b, 0x3d, 0x41, 0x44, 0x45, 0x59, 0x4a, 0xab, 0x2b, 0xba,
+ 0x54, 0xa5, 0xae, 0xaa, 0x6e, 0x8f, 0x6e, 0x86, 0x65, 0x59, 0xfe, 0x59, 0xfe, 0x77, 0xd9, 0x60,
+ 0x83, 0x08, 0x0e, 0x04, 0x17, 0x22, 0xb8, 0x71, 0xe6, 0x30, 0x41, 0x70, 0x20, 0xe0, 0x08, 0x1c,
+ 0x58, 0x86, 0x20, 0xe0, 0xb4, 0x41, 0x70, 0xe0, 0xc0, 0x81, 0x20, 0xf2, 0xa7, 0x4a, 0x52, 0xb7,
+ 0xc6, 0xee, 0xf5, 0x32, 0xb1, 0x61, 0x8f, 0x6f, 0xf9, 0x7e, 0xf2, 0xe7, 0x7d, 0xf9, 0xf2, 0xbd,
+ 0x57, 0xa9, 0x14, 0x94, 0x0e, 0x8f, 0x68, 0x38, 0xde, 0x1a, 0x85, 0x41, 0x1c, 0xe0, 0x1c, 0x27,
+ 0x36, 0x2a, 0x71, 0x30, 0x0a, 0xfa, 0x4e, 0xec, 0x08, 0xf6, 0x46, 0xe9, 0x38, 0x0e, 0x47, 0x3d,
+ 0x41, 0x68, 0x5f, 0x53, 0x20, 0x6f, 0x39, 0xe1, 0x80, 0xc6, 0x78, 0x03, 0x0a, 0x07, 0x74, 0x1c,
+ 0x8d, 0x9c, 0x1e, 0xad, 0x2a, 0x9b, 0xca, 0xa5, 0x22, 0x49, 0x69, 0xbc, 0x06, 0xb9, 0x68, 0xdf,
+ 0x09, 0xfb, 0x55, 0x95, 0x0b, 0x04, 0x81, 0xbf, 0x08, 0xa5, 0xd8, 0x79, 0xe8, 0xd1, 0xd8, 0x8e,
+ 0xc7, 0x23, 0x5a, 0xcd, 0x6c, 0x2a, 0x97, 0x2a, 0xdb, 0x6b, 0x5b, 0xe9, 0x7c, 0x16, 0x17, 0x5a,
+ 0xe3, 0x11, 0x25, 0x10, 0xa7, 0x6d, 0x8c, 0x21, 0xdb, 0xa3, 0x9e, 0x57, 0xcd, 0xf2, 0xb1, 0x78,
+ 0x5b, 0xdb, 0x85, 0xca, 0x3d, 0xeb, 0x96, 0x13, 0xd3, 0x9a, 0xe3, 0x79, 0x34, 0xac, 0xef, 0xb2,
+ 0xe5, 0x1c, 0x45, 0x34, 0xf4, 0x9d, 0x61, 0xba, 0x9c, 0x84, 0xc6, 0xe7, 0x20, 0x3f, 0x08, 0x83,
+ 0xa3, 0x51, 0x54, 0x55, 0x37, 0x33, 0x97, 0x8a, 0x44, 0x52, 0xda, 0xcf, 0x02, 0x18, 0xc7, 0xd4,
+ 0x8f, 0xad, 0xe0, 0x80, 0xfa, 0xf8, 0x75, 0x28, 0xc6, 0xee, 0x90, 0x46, 0xb1, 0x33, 0x1c, 0xf1,
+ 0x21, 0x32, 0x64, 0xc2, 0xf8, 0x18, 0x93, 0x36, 0xa0, 0x30, 0x0a, 0x22, 0x37, 0x76, 0x03, 0x9f,
+ 0xdb, 0x53, 0x24, 0x29, 0xad, 0xfd, 0x34, 0xe4, 0xee, 0x39, 0xde, 0x11, 0xc5, 0x6f, 0x42, 0x96,
+ 0x1b, 0xac, 0x70, 0x83, 0x4b, 0x5b, 0x02, 0x74, 0x6e, 0x27, 0x17, 0xb0, 0xb1, 0x8f, 0x99, 0x26,
+ 0x1f, 0x7b, 0x89, 0x08, 0x42, 0x3b, 0x80, 0xa5, 0x1d, 0xd7, 0xef, 0xdf, 0x73, 0x42, 0x97, 0x81,
+ 0xf1, 0x9c, 0xc3, 0xe0, 0xcf, 0x41, 0x9e, 0x37, 0xa2, 0x6a, 0x66, 0x33, 0x73, 0xa9, 0xb4, 0xbd,
+ 0x24, 0x3b, 0xf2, 0xb5, 0x11, 0x29, 0xd3, 0xfe, 0x4a, 0x01, 0xd8, 0x09, 0x8e, 0xfc, 0xfe, 0x5d,
+ 0x26, 0xc4, 0x08, 0x32, 0xd1, 0xa1, 0x27, 0x81, 0x64, 0x4d, 0x7c, 0x07, 0x2a, 0x0f, 0x5d, 0xbf,
+ 0x6f, 0x1f, 0xcb, 0xe5, 0x08, 0x2c, 0x4b, 0xdb, 0x9f, 0x93, 0xc3, 0x4d, 0x3a, 0x6f, 0x4d, 0xaf,
+ 0x3a, 0x32, 0xfc, 0x38, 0x1c, 0x93, 0xf2, 0xc3, 0x69, 0xde, 0x46, 0x17, 0xf0, 0x69, 0x25, 0x36,
+ 0xe9, 0x01, 0x1d, 0x27, 0x93, 0x1e, 0xd0, 0x31, 0xfe, 0x91, 0x69, 0x8b, 0x4a, 0xdb, 0xab, 0xc9,
+ 0x5c, 0x53, 0x7d, 0xa5, 0x99, 0xef, 0xa8, 0x37, 0x15, 0xed, 0x2f, 0x16, 0xa1, 0x62, 0x7c, 0x40,
+ 0x7b, 0x47, 0x31, 0x6d, 0x8d, 0xd8, 0x1e, 0x44, 0xb8, 0x09, 0xcb, 0xae, 0xdf, 0xf3, 0x8e, 0xfa,
+ 0xb4, 0x6f, 0x3f, 0x72, 0xa9, 0xd7, 0x8f, 0xb8, 0x1f, 0x55, 0xd2, 0x75, 0xcf, 0xea, 0x6f, 0xd5,
+ 0xa5, 0xf2, 0x1e, 0xd7, 0x25, 0x15, 0x77, 0x86, 0xc6, 0x97, 0x61, 0xa5, 0xe7, 0xb9, 0xd4, 0x8f,
+ 0xed, 0x47, 0xcc, 0x5e, 0x3b, 0x0c, 0x1e, 0x47, 0xd5, 0xdc, 0xa6, 0x72, 0xa9, 0x40, 0x96, 0x85,
+ 0x60, 0x8f, 0xf1, 0x49, 0xf0, 0x38, 0xc2, 0xef, 0x40, 0xe1, 0x71, 0x10, 0x1e, 0x78, 0x81, 0xd3,
+ 0xaf, 0xe6, 0xf9, 0x9c, 0x17, 0xe7, 0xcf, 0x79, 0x5f, 0x6a, 0x91, 0x54, 0x1f, 0x5f, 0x02, 0x14,
+ 0x1d, 0x7a, 0x76, 0x44, 0x3d, 0xda, 0x8b, 0x6d, 0xcf, 0x1d, 0xba, 0x71, 0xb5, 0xc0, 0x5d, 0xb2,
+ 0x12, 0x1d, 0x7a, 0x1d, 0xce, 0x6e, 0x30, 0x2e, 0xb6, 0x61, 0x3d, 0x0e, 0x1d, 0x3f, 0x72, 0x7a,
+ 0x6c, 0x30, 0xdb, 0x8d, 0x02, 0xcf, 0xe1, 0xee, 0x58, 0xe4, 0x53, 0x5e, 0x9e, 0x3f, 0xa5, 0x35,
+ 0xe9, 0x52, 0x4f, 0x7a, 0x90, 0xb5, 0x78, 0x0e, 0x17, 0xbf, 0x0d, 0xeb, 0xd1, 0x81, 0x3b, 0xb2,
+ 0xf9, 0x38, 0xf6, 0xc8, 0x73, 0x7c, 0xbb, 0xe7, 0xf4, 0xf6, 0x69, 0x15, 0xb8, 0xd9, 0x98, 0x09,
+ 0xf9, 0xbe, 0xb7, 0x3d, 0xc7, 0xaf, 0x31, 0x09, 0x03, 0x9d, 0xe9, 0xf9, 0x34, 0xb4, 0x8f, 0x69,
+ 0x18, 0xb1, 0xd5, 0x94, 0x9e, 0x06, 0x7a, 0x5b, 0x28, 0xdf, 0x13, 0xba, 0xa4, 0x32, 0x9a, 0xa1,
+ 0xf1, 0x17, 0xe1, 0xfc, 0xbe, 0x13, 0xd9, 0xbd, 0x90, 0x3a, 0x31, 0xed, 0xdb, 0x31, 0x1d, 0x8e,
+ 0xec, 0x58, 0xf8, 0xe0, 0x12, 0x5f, 0xc3, 0xda, 0xbe, 0x13, 0xd5, 0x84, 0xd4, 0xa2, 0xc3, 0x11,
+ 0x8f, 0x23, 0x91, 0xf6, 0x25, 0xa8, 0xcc, 0xee, 0x26, 0x5e, 0x81, 0xb2, 0xf5, 0xa0, 0x6d, 0xd8,
+ 0xba, 0xb9, 0x6b, 0x9b, 0x7a, 0xd3, 0x40, 0x0b, 0xb8, 0x0c, 0x45, 0xce, 0x6a, 0x99, 0x8d, 0x07,
+ 0x48, 0xc1, 0x8b, 0x90, 0xd1, 0x1b, 0x0d, 0xa4, 0x6a, 0x37, 0xa1, 0x90, 0x6c, 0x0b, 0x5e, 0x86,
+ 0x52, 0xd7, 0xec, 0xb4, 0x8d, 0x5a, 0x7d, 0xaf, 0x6e, 0xec, 0xa2, 0x05, 0x5c, 0x80, 0x6c, 0xab,
+ 0x61, 0xb5, 0x91, 0x22, 0x5a, 0x7a, 0x1b, 0xa9, 0xac, 0xe7, 0xee, 0x8e, 0x8e, 0x32, 0xda, 0x9f,
+ 0x2a, 0xb0, 0x36, 0x0f, 0x5e, 0x5c, 0x82, 0xc5, 0x5d, 0x63, 0x4f, 0xef, 0x36, 0x2c, 0xb4, 0x80,
+ 0x57, 0x61, 0x99, 0x18, 0x6d, 0x43, 0xb7, 0xf4, 0x9d, 0x86, 0x61, 0x13, 0x43, 0xdf, 0x45, 0x0a,
+ 0xc6, 0x50, 0x61, 0x2d, 0xbb, 0xd6, 0x6a, 0x36, 0xeb, 0x96, 0x65, 0xec, 0x22, 0x15, 0xaf, 0x01,
+ 0xe2, 0xbc, 0xae, 0x39, 0xe1, 0x66, 0x30, 0x82, 0xa5, 0x8e, 0x41, 0xea, 0x7a, 0xa3, 0xfe, 0x3e,
+ 0x1b, 0x00, 0x65, 0xf1, 0x67, 0xe0, 0x8d, 0x5a, 0xcb, 0xec, 0xd4, 0x3b, 0x96, 0x61, 0x5a, 0x76,
+ 0xc7, 0xd4, 0xdb, 0x9d, 0xf7, 0x5a, 0x16, 0x1f, 0x59, 0x18, 0x97, 0xc3, 0x15, 0x00, 0xbd, 0x6b,
+ 0xb5, 0xc4, 0x38, 0x28, 0xaf, 0x1d, 0x42, 0x65, 0x16, 0x79, 0xb6, 0x2a, 0xb9, 0x44, 0xbb, 0xdd,
+ 0xd0, 0x4d, 0xd3, 0x20, 0x68, 0x01, 0xe7, 0x41, 0xbd, 0x77, 0x4d, 0xd8, 0x7a, 0x8b, 0xfa, 0xd7,
+ 0x91, 0xca, 0x06, 0x62, 0xad, 0x5b, 0x21, 0xa5, 0xfd, 0x31, 0xca, 0xb0, 0x75, 0x33, 0xba, 0x41,
+ 0x1f, 0xc5, 0xdb, 0xc4, 0x1d, 0xec, 0xc7, 0x28, 0xcb, 0xd6, 0xcd, 0x78, 0xf7, 0xdd, 0x78, 0x7f,
+ 0xcf, 0xf1, 0xbc, 0x87, 0x4e, 0xef, 0x00, 0xe5, 0x6e, 0x67, 0x0b, 0x0a, 0x52, 0x6f, 0x67, 0x0b,
+ 0x2a, 0xca, 0xdc, 0xce, 0x16, 0x32, 0x28, 0xab, 0xfd, 0xa5, 0x0a, 0x39, 0xbe, 0x3d, 0x2c, 0xce,
+ 0x4f, 0x45, 0x6f, 0xde, 0x4e, 0x63, 0x9e, 0xfa, 0x94, 0x98, 0xc7, 0x5d, 0x41, 0x46, 0x5f, 0x41,
+ 0xe0, 0x0b, 0x50, 0x0c, 0xc2, 0x81, 0x70, 0x12, 0x99, 0x37, 0x0a, 0x41, 0x38, 0xe0, 0x8e, 0xc1,
+ 0x62, 0x36, 0x4b, 0x37, 0x0f, 0x9d, 0x88, 0xf2, 0xa3, 0x5b, 0x24, 0x29, 0x8d, 0x5f, 0x03, 0xa6,
+ 0x67, 0xf3, 0x75, 0xe4, 0xb9, 0x6c, 0x31, 0x08, 0x07, 0x26, 0x5b, 0xca, 0x67, 0xa1, 0xdc, 0x0b,
+ 0xbc, 0xa3, 0xa1, 0x6f, 0x7b, 0xd4, 0x1f, 0xc4, 0xfb, 0xd5, 0xc5, 0x4d, 0xe5, 0x52, 0x99, 0x2c,
+ 0x09, 0x66, 0x83, 0xf3, 0x70, 0x15, 0x16, 0x7b, 0xfb, 0x4e, 0x18, 0x51, 0x71, 0x5c, 0xcb, 0x24,
+ 0x21, 0xf9, 0xac, 0xb4, 0xe7, 0x0e, 0x1d, 0x2f, 0xe2, 0x47, 0xb3, 0x4c, 0x52, 0x9a, 0x19, 0xf1,
+ 0xc8, 0x73, 0x06, 0x11, 0x3f, 0x52, 0x65, 0x22, 0x08, 0xfc, 0x26, 0x94, 0xe4, 0x84, 0x1c, 0x82,
+ 0x12, 0x5f, 0x0e, 0x08, 0x16, 0x43, 0x40, 0xfb, 0x09, 0xc8, 0x90, 0xe0, 0x31, 0x9b, 0x53, 0xac,
+ 0x28, 0xaa, 0x2a, 0x9b, 0x99, 0x4b, 0x98, 0x24, 0x24, 0xcb, 0x7b, 0x32, 0xf4, 0x8b, 0x8c, 0x90,
+ 0x04, 0xfb, 0x6f, 0x2b, 0x50, 0xe2, 0x47, 0x96, 0xd0, 0xe8, 0xc8, 0x8b, 0x59, 0x8a, 0x90, 0xb1,
+ 0x51, 0x99, 0x49, 0x11, 0x7c, 0x5f, 0x88, 0x94, 0x31, 0x00, 0x58, 0xb8, 0xb3, 0x9d, 0x47, 0x8f,
+ 0x68, 0x2f, 0xa6, 0x22, 0x13, 0x66, 0xc9, 0x12, 0x63, 0xea, 0x92, 0xc7, 0x90, 0x77, 0xfd, 0x88,
+ 0x86, 0xb1, 0xed, 0xf6, 0xf9, 0x9e, 0x64, 0x49, 0x41, 0x30, 0xea, 0x7d, 0x7c, 0x11, 0xb2, 0x3c,
+ 0x60, 0x66, 0xf9, 0x2c, 0x20, 0x67, 0x21, 0xc1, 0x63, 0xc2, 0xf9, 0xb7, 0xb3, 0x85, 0x1c, 0xca,
+ 0x6b, 0x5f, 0x86, 0x25, 0xbe, 0xb8, 0xfb, 0x4e, 0xe8, 0xbb, 0xfe, 0x80, 0xe7, 0xff, 0xa0, 0x2f,
+ 0xfc, 0xa2, 0x4c, 0x78, 0x9b, 0xd9, 0x3c, 0xa4, 0x51, 0xe4, 0x0c, 0xa8, 0xcc, 0xc7, 0x09, 0xa9,
+ 0xfd, 0x71, 0x06, 0x4a, 0x9d, 0x38, 0xa4, 0xce, 0x90, 0xa7, 0x76, 0xfc, 0x65, 0x80, 0x28, 0x76,
+ 0x62, 0x3a, 0xa4, 0x7e, 0x9c, 0xd8, 0xf7, 0xba, 0x9c, 0x79, 0x4a, 0x6f, 0xab, 0x93, 0x28, 0x91,
+ 0x29, 0x7d, 0xbc, 0x0d, 0x25, 0xca, 0xc4, 0x76, 0xcc, 0x4a, 0x04, 0x99, 0x86, 0x56, 0x92, 0x28,
+ 0x96, 0xd6, 0x0e, 0x04, 0x68, 0xda, 0xde, 0xf8, 0x8e, 0x0a, 0xc5, 0x74, 0x34, 0xac, 0x43, 0xa1,
+ 0xe7, 0xc4, 0x74, 0x10, 0x84, 0x63, 0x99, 0xb9, 0xdf, 0x7a, 0xda, 0xec, 0x5b, 0x35, 0xa9, 0x4c,
+ 0xd2, 0x6e, 0xf8, 0x0d, 0x10, 0xe5, 0x90, 0x70, 0x4b, 0x61, 0x6f, 0x91, 0x73, 0xb8, 0x63, 0xbe,
+ 0x03, 0x78, 0x14, 0xba, 0x43, 0x27, 0x1c, 0xdb, 0x07, 0x74, 0x9c, 0x64, 0xb9, 0xcc, 0x9c, 0x9d,
+ 0x44, 0x52, 0xef, 0x0e, 0x1d, 0xcb, 0x88, 0x78, 0x73, 0xb6, 0xaf, 0xf4, 0x96, 0xd3, 0xfb, 0x33,
+ 0xd5, 0x93, 0xd7, 0x0d, 0x51, 0x52, 0x21, 0xe4, 0xb8, 0x63, 0xb1, 0xa6, 0xf6, 0x05, 0x28, 0x24,
+ 0x8b, 0xc7, 0x45, 0xc8, 0x19, 0x61, 0x18, 0x84, 0x68, 0x81, 0x07, 0xc6, 0x66, 0x43, 0xc4, 0xd6,
+ 0xdd, 0x5d, 0x16, 0x5b, 0xff, 0x45, 0x4d, 0xd3, 0x34, 0xa1, 0x87, 0x47, 0x34, 0x8a, 0xf1, 0xcf,
+ 0xc0, 0x2a, 0xe5, 0x2e, 0xe4, 0x1e, 0x53, 0xbb, 0xc7, 0x6b, 0x3a, 0xe6, 0x40, 0x0a, 0xc7, 0x7b,
+ 0x79, 0x4b, 0x94, 0xa0, 0x49, 0xad, 0x47, 0x56, 0x52, 0x5d, 0xc9, 0xea, 0x63, 0x03, 0x56, 0xdd,
+ 0xe1, 0x90, 0xf6, 0x5d, 0x27, 0x9e, 0x1e, 0x40, 0x6c, 0xd8, 0x7a, 0x52, 0xf2, 0xcc, 0x94, 0x8c,
+ 0x64, 0x25, 0xed, 0x91, 0x0e, 0xf3, 0x16, 0xe4, 0x63, 0x5e, 0xde, 0x72, 0xdf, 0x2d, 0x6d, 0x97,
+ 0x93, 0x88, 0xc3, 0x99, 0x44, 0x0a, 0xf1, 0x17, 0x40, 0x14, 0xcb, 0x3c, 0xb6, 0x4c, 0x1c, 0x62,
+ 0x52, 0x03, 0x11, 0x21, 0xc7, 0x6f, 0x41, 0x65, 0x26, 0x3b, 0xf7, 0x39, 0x60, 0x19, 0x52, 0x9e,
+ 0x4e, 0xb5, 0x7d, 0x7c, 0x05, 0x16, 0x03, 0x91, 0x0b, 0x79, 0xd4, 0x99, 0xac, 0x78, 0x36, 0x51,
+ 0x92, 0x44, 0x8b, 0xc5, 0x86, 0x90, 0x46, 0x34, 0x3c, 0xa6, 0x7d, 0x36, 0xe8, 0x22, 0x1f, 0x14,
+ 0x12, 0x56, 0xbd, 0xaf, 0xfd, 0x14, 0x2c, 0xa7, 0x10, 0x47, 0xa3, 0xc0, 0x8f, 0x28, 0xbe, 0x0c,
+ 0xf9, 0x90, 0x9f, 0x77, 0x09, 0x2b, 0x96, 0x73, 0x4c, 0x45, 0x02, 0x22, 0x35, 0xb4, 0x3e, 0x2c,
+ 0x0b, 0x0e, 0x8b, 0xdf, 0x7c, 0x27, 0xf1, 0x5b, 0x90, 0xa3, 0xac, 0x71, 0x62, 0x53, 0x48, 0xbb,
+ 0xc6, 0xe5, 0x44, 0x48, 0xa7, 0x66, 0x51, 0x9f, 0x39, 0xcb, 0x7f, 0xaa, 0xb0, 0x2a, 0x57, 0xb9,
+ 0xe3, 0xc4, 0xbd, 0xfd, 0x17, 0xd4, 0x1b, 0x7e, 0x14, 0x16, 0x19, 0xdf, 0x4d, 0x4f, 0xce, 0x1c,
+ 0x7f, 0x48, 0x34, 0x98, 0x47, 0x38, 0x91, 0x3d, 0xb5, 0xfd, 0xb2, 0x7c, 0x2c, 0x3b, 0xd1, 0x54,
+ 0xd5, 0x30, 0xc7, 0x71, 0xf2, 0xcf, 0x70, 0x9c, 0xc5, 0xb3, 0x38, 0x8e, 0xb6, 0x0b, 0x6b, 0xb3,
+ 0x88, 0x4b, 0xe7, 0xf8, 0x31, 0x58, 0x14, 0x9b, 0x92, 0xc4, 0xc8, 0x79, 0xfb, 0x96, 0xa8, 0x68,
+ 0x1f, 0xaa, 0xb0, 0x26, 0xc3, 0xd7, 0xa7, 0xe3, 0x1c, 0x4f, 0xe1, 0x9c, 0x3b, 0xd3, 0x01, 0x3d,
+ 0xdb, 0xfe, 0x69, 0x35, 0x58, 0x3f, 0x81, 0xe3, 0x73, 0x1c, 0xd6, 0xef, 0x29, 0xb0, 0xb4, 0x43,
+ 0x07, 0xae, 0xff, 0x82, 0xee, 0xc2, 0x14, 0xb8, 0xd9, 0x33, 0x39, 0xf1, 0x08, 0xca, 0xd2, 0x5e,
+ 0x89, 0xd6, 0x69, 0xb4, 0x95, 0x79, 0xa7, 0xe5, 0x26, 0x2c, 0xc9, 0x0b, 0x08, 0xc7, 0x73, 0x9d,
+ 0x28, 0xb5, 0xe7, 0xc4, 0x0d, 0x84, 0xce, 0x84, 0x44, 0xde, 0x55, 0x70, 0x42, 0xfb, 0x37, 0x05,
+ 0xca, 0xb5, 0x60, 0x38, 0x74, 0xe3, 0x17, 0x14, 0xe3, 0xd3, 0x08, 0x65, 0xe7, 0xf9, 0xe3, 0xdb,
+ 0x50, 0x49, 0xcc, 0x94, 0xd0, 0x9e, 0xc8, 0x34, 0xca, 0xa9, 0x4c, 0xf3, 0xef, 0x0a, 0x2c, 0x93,
+ 0x40, 0x54, 0xf8, 0x2f, 0x37, 0x38, 0xd7, 0x00, 0x4d, 0x0c, 0x3d, 0x2b, 0x3c, 0xff, 0xa3, 0x40,
+ 0xa5, 0x1d, 0xd2, 0x91, 0x13, 0xd2, 0x97, 0x1a, 0x1d, 0x56, 0xa6, 0xf7, 0x63, 0x59, 0xe0, 0x14,
+ 0x09, 0x6f, 0x6b, 0x2b, 0xb0, 0x9c, 0xda, 0x2e, 0x00, 0xd3, 0xfe, 0x51, 0x81, 0x75, 0xe1, 0x62,
+ 0x52, 0xd2, 0x7f, 0x41, 0x61, 0x49, 0xec, 0xcd, 0x4e, 0xd9, 0x5b, 0x85, 0x73, 0x27, 0x6d, 0x93,
+ 0x66, 0x7f, 0x55, 0x85, 0xf3, 0x89, 0xf3, 0xbc, 0xe0, 0x86, 0xff, 0x00, 0xfe, 0xb0, 0x01, 0xd5,
+ 0xd3, 0x20, 0x48, 0x84, 0xbe, 0xa1, 0x42, 0x55, 0x5c, 0xe2, 0x4c, 0xd5, 0x41, 0x2f, 0x8f, 0x6f,
+ 0xe0, 0xb7, 0x61, 0x69, 0xe4, 0x84, 0xb1, 0xdb, 0x73, 0x47, 0x0e, 0xfb, 0x14, 0xcd, 0xf1, 0x32,
+ 0xeb, 0xc4, 0x00, 0x33, 0x2a, 0xda, 0x05, 0x78, 0x6d, 0x0e, 0x22, 0x12, 0xaf, 0xff, 0x55, 0x00,
+ 0x77, 0x62, 0x27, 0x8c, 0x3f, 0x05, 0x79, 0x69, 0xae, 0x33, 0xad, 0xc3, 0xea, 0x8c, 0xfd, 0xd3,
+ 0xb8, 0xd0, 0xf8, 0x53, 0x91, 0x92, 0x3e, 0x16, 0x97, 0x69, 0xfb, 0x25, 0x2e, 0xff, 0xac, 0xc0,
+ 0x46, 0x2d, 0x10, 0x17, 0xa2, 0x2f, 0xe5, 0x09, 0xd3, 0xde, 0x80, 0x0b, 0x73, 0x0d, 0x94, 0x00,
+ 0xfc, 0x93, 0x02, 0xe7, 0x08, 0x75, 0xfa, 0x2f, 0xa7, 0xf1, 0x77, 0xe1, 0xfc, 0x29, 0xe3, 0x64,
+ 0x8d, 0x72, 0x03, 0x0a, 0x43, 0x1a, 0x3b, 0xac, 0xc2, 0x95, 0x26, 0x6d, 0x24, 0xe3, 0x4e, 0xb4,
+ 0x9b, 0x52, 0x83, 0xa4, 0xba, 0xda, 0x77, 0x55, 0x58, 0xe5, 0x75, 0xf6, 0xab, 0x8f, 0xbc, 0x33,
+ 0xdd, 0xc2, 0xe4, 0x4f, 0x16, 0x7f, 0x4c, 0x61, 0x14, 0x52, 0x3b, 0xb9, 0x1d, 0x58, 0xe4, 0xbf,
+ 0x3e, 0xc2, 0x28, 0xa4, 0x77, 0x05, 0x47, 0xfb, 0x1b, 0x05, 0xd6, 0x66, 0x21, 0x4e, 0xbf, 0x68,
+ 0xfe, 0xbf, 0x6f, 0x5b, 0xe6, 0x84, 0x94, 0xcc, 0x59, 0x3e, 0x92, 0xb2, 0x67, 0xfe, 0x48, 0xfa,
+ 0x5b, 0x15, 0xaa, 0xd3, 0xc6, 0xbc, 0xba, 0xd3, 0x99, 0xbd, 0xd3, 0xf9, 0x7e, 0x6f, 0xf9, 0xb4,
+ 0xbf, 0x57, 0xe0, 0xb5, 0x39, 0x80, 0x7e, 0x7f, 0x2e, 0x32, 0x75, 0xb3, 0xa3, 0x3e, 0xf3, 0x66,
+ 0xe7, 0x93, 0x77, 0x92, 0x7f, 0x50, 0x60, 0xad, 0x29, 0xee, 0xea, 0xc5, 0xcd, 0xc7, 0x8b, 0x1b,
+ 0x83, 0xf9, 0x75, 0x7c, 0x76, 0xf2, 0x6b, 0x95, 0x56, 0x83, 0xf5, 0x13, 0xa6, 0x3d, 0xc7, 0x6d,
+ 0xce, 0x7f, 0x2b, 0xb0, 0x22, 0x47, 0xd1, 0x5f, 0xd8, 0xf2, 0x65, 0x0e, 0x3a, 0xf8, 0x22, 0x64,
+ 0xdc, 0x7e, 0x52, 0xf7, 0xce, 0xbe, 0x42, 0x60, 0x02, 0xed, 0x5d, 0xc0, 0xd3, 0x76, 0x3f, 0x07,
+ 0x74, 0xff, 0xa1, 0xc2, 0x3a, 0x11, 0xd1, 0xf7, 0xd5, 0xef, 0x0b, 0x3f, 0xe8, 0xef, 0x0b, 0x4f,
+ 0x4f, 0x5c, 0x1f, 0xf2, 0x62, 0x6a, 0x16, 0xea, 0x4f, 0x2e, 0x75, 0x9d, 0x48, 0xb4, 0x99, 0x53,
+ 0x89, 0xf6, 0xf9, 0xe3, 0xd1, 0x87, 0x2a, 0x6c, 0x48, 0x43, 0x5e, 0xd5, 0x3a, 0x67, 0xf7, 0x88,
+ 0xfc, 0x29, 0x8f, 0xf8, 0x2f, 0x05, 0x2e, 0xcc, 0x05, 0xf2, 0x87, 0x5e, 0xd1, 0x9c, 0xf0, 0x9e,
+ 0xec, 0x33, 0xbd, 0x27, 0x77, 0x66, 0xef, 0xf9, 0xba, 0x0a, 0x15, 0x42, 0x3d, 0xea, 0x44, 0x2f,
+ 0xf9, 0xed, 0xde, 0x09, 0x0c, 0x73, 0xa7, 0xee, 0x39, 0x57, 0x60, 0x39, 0x05, 0x42, 0x7e, 0x70,
+ 0xf1, 0x0f, 0x74, 0x96, 0x07, 0xdf, 0xa3, 0x8e, 0x17, 0x27, 0x95, 0xa0, 0xf6, 0x27, 0x2a, 0x94,
+ 0x09, 0xe3, 0xb8, 0x43, 0xda, 0x89, 0x9d, 0x38, 0xc2, 0x9f, 0x81, 0xa5, 0x7d, 0xae, 0x62, 0x4f,
+ 0x3c, 0xa4, 0x48, 0x4a, 0x82, 0x27, 0x7e, 0x7d, 0xdc, 0x86, 0xf5, 0x88, 0xf6, 0x02, 0xbf, 0x1f,
+ 0xd9, 0x0f, 0xe9, 0xbe, 0xeb, 0xf7, 0xed, 0xa1, 0x13, 0xc5, 0x34, 0xe4, 0xb0, 0x94, 0xc9, 0xaa,
+ 0x14, 0xee, 0x70, 0x59, 0x93, 0x8b, 0xf0, 0x55, 0x58, 0x7b, 0xe8, 0xfa, 0x5e, 0x30, 0xb0, 0x47,
+ 0x9e, 0x33, 0xa6, 0x61, 0x64, 0xf7, 0x82, 0x23, 0x5f, 0xe0, 0x91, 0x23, 0x58, 0xc8, 0xda, 0x42,
+ 0x54, 0x63, 0x12, 0xfc, 0x3e, 0x5c, 0x9e, 0x3b, 0x8b, 0xfd, 0xc8, 0xf5, 0x62, 0x1a, 0xd2, 0xbe,
+ 0x1d, 0xd2, 0x91, 0xe7, 0xf6, 0xc4, 0x0b, 0x2b, 0x01, 0xd4, 0xe7, 0xe7, 0x4c, 0xbd, 0x27, 0xd5,
+ 0xc9, 0x44, 0x1b, 0x5f, 0x80, 0x62, 0x6f, 0x74, 0x64, 0x1f, 0xf1, 0x47, 0x0b, 0x0c, 0x3f, 0x85,
+ 0x14, 0x7a, 0xa3, 0xa3, 0x2e, 0xa3, 0x31, 0x82, 0xcc, 0xe1, 0x48, 0x04, 0x67, 0x85, 0xb0, 0xa6,
+ 0xf6, 0x3d, 0x05, 0x2a, 0xfa, 0x60, 0x10, 0xd2, 0x81, 0x13, 0x4b, 0x98, 0xae, 0xc2, 0x9a, 0x80,
+ 0x64, 0x6c, 0x4b, 0x77, 0x15, 0xf6, 0x28, 0xc2, 0x1e, 0x29, 0x13, 0xbe, 0x2a, 0xec, 0xb9, 0x0e,
+ 0xe7, 0x8e, 0xfc, 0xb9, 0x7d, 0x54, 0xde, 0x67, 0x2d, 0x95, 0x4e, 0xf7, 0xfa, 0x49, 0x78, 0x6d,
+ 0x3e, 0x0a, 0x43, 0x57, 0xbc, 0x72, 0x2c, 0x93, 0x73, 0x73, 0x8c, 0x6e, 0xba, 0xfe, 0x53, 0xba,
+ 0x3a, 0x1f, 0x70, 0xbc, 0x3e, 0xa6, 0xab, 0xf3, 0x81, 0xf6, 0x67, 0xe9, 0x6f, 0x8a, 0x89, 0xbb,
+ 0xa4, 0x81, 0x23, 0x71, 0x64, 0xe5, 0x69, 0x8e, 0x5c, 0x85, 0x45, 0xe6, 0x8c, 0xae, 0x3f, 0xe0,
+ 0xc6, 0x15, 0x48, 0x42, 0xe2, 0x0e, 0x7c, 0x5e, 0xda, 0x4e, 0x3f, 0x88, 0x69, 0xe8, 0x3b, 0x9e,
+ 0x37, 0xb6, 0xc5, 0xf5, 0xa3, 0xcf, 0x1f, 0x94, 0xa5, 0xaf, 0x3e, 0x45, 0xf8, 0xf8, 0xac, 0xd0,
+ 0x36, 0x52, 0x65, 0x92, 0xea, 0x5a, 0xe9, 0x7b, 0xd0, 0x2f, 0x41, 0x25, 0x94, 0x4e, 0x6c, 0x47,
+ 0x6c, 0x7b, 0x64, 0xc8, 0x5d, 0x4b, 0x5e, 0x4d, 0x4c, 0x7b, 0x38, 0x29, 0x87, 0x33, 0x0e, 0xff,
+ 0xdc, 0x01, 0xe7, 0x76, 0xb6, 0x90, 0x47, 0x8b, 0xda, 0x9f, 0x2b, 0xb0, 0x3a, 0xe7, 0xdb, 0x3d,
+ 0xbd, 0x18, 0x50, 0xa6, 0xee, 0x1d, 0x7f, 0x1c, 0x72, 0xfc, 0x41, 0x8b, 0x7c, 0x43, 0x75, 0xfe,
+ 0xf4, 0xa7, 0x3f, 0x7f, 0x7c, 0x42, 0x84, 0x16, 0x3b, 0x8b, 0xdc, 0x26, 0xf9, 0xda, 0x4e, 0x42,
+ 0x52, 0x62, 0x3c, 0xf9, 0xc4, 0xee, 0xd4, 0x4d, 0x66, 0xf6, 0x99, 0x37, 0x99, 0x97, 0x7f, 0x3b,
+ 0x03, 0xc5, 0xe6, 0xb8, 0x73, 0xe8, 0xed, 0x79, 0xce, 0x80, 0xbf, 0x0e, 0x69, 0xb6, 0xad, 0x07,
+ 0x68, 0x01, 0xaf, 0x40, 0xd9, 0x6c, 0x59, 0xb6, 0xd9, 0x6d, 0x34, 0xec, 0xbd, 0x86, 0x7e, 0x0b,
+ 0x29, 0x18, 0xc1, 0x52, 0x9b, 0xd4, 0xed, 0x3b, 0xc6, 0x03, 0xc1, 0x51, 0xf1, 0x2a, 0x2c, 0x77,
+ 0xcd, 0xfa, 0xdd, 0xae, 0x31, 0x61, 0x66, 0xf1, 0x3a, 0xac, 0x34, 0xbb, 0x0d, 0xab, 0xde, 0x6e,
+ 0x4c, 0xb1, 0x0b, 0xb8, 0x0c, 0xc5, 0x9d, 0x46, 0x6b, 0x47, 0x90, 0x88, 0x8d, 0xdf, 0x35, 0x3b,
+ 0xf5, 0x5b, 0xa6, 0xb1, 0x2b, 0x58, 0x9b, 0x8c, 0xf5, 0xbe, 0x41, 0x5a, 0x7b, 0xf5, 0x64, 0xca,
+ 0x77, 0x31, 0x82, 0xd2, 0x4e, 0xdd, 0xd4, 0x89, 0x1c, 0xe5, 0x89, 0x82, 0x2b, 0x50, 0x34, 0xcc,
+ 0x6e, 0x53, 0xd2, 0x2a, 0xae, 0xc2, 0xaa, 0xde, 0xb5, 0x5a, 0x76, 0xdd, 0xac, 0x11, 0xa3, 0x69,
+ 0x98, 0x96, 0x94, 0x64, 0xf1, 0x2a, 0x54, 0xac, 0x7a, 0xd3, 0xe8, 0x58, 0x7a, 0xb3, 0x2d, 0x99,
+ 0x6c, 0x15, 0x85, 0x8e, 0x91, 0xe8, 0x20, 0xbc, 0x01, 0xeb, 0x66, 0xcb, 0x4e, 0x9e, 0xd6, 0xdd,
+ 0xd3, 0x1b, 0x5d, 0x43, 0xca, 0x36, 0xf1, 0x79, 0xc0, 0x2d, 0xd3, 0xee, 0xb6, 0x77, 0x75, 0xcb,
+ 0xb0, 0xcd, 0xd6, 0x7d, 0x29, 0x78, 0x17, 0x57, 0xa0, 0x30, 0x59, 0xc1, 0x13, 0x86, 0x42, 0xb9,
+ 0xad, 0x13, 0x6b, 0x62, 0xec, 0x93, 0x27, 0x0c, 0x2c, 0xb8, 0x45, 0x5a, 0xdd, 0xf6, 0x44, 0x6d,
+ 0x05, 0x4a, 0x12, 0x2c, 0xc9, 0xca, 0x32, 0xd6, 0x4e, 0xdd, 0xac, 0xa5, 0xeb, 0x7b, 0x52, 0xd8,
+ 0x50, 0x91, 0x72, 0xf9, 0x00, 0xb2, 0x7c, 0x3b, 0x0a, 0x90, 0x35, 0x5b, 0xa6, 0x81, 0x16, 0xf0,
+ 0x32, 0x40, 0xbd, 0x53, 0x37, 0x2d, 0xe3, 0x16, 0xd1, 0x1b, 0xcc, 0x6c, 0xce, 0x48, 0x00, 0x64,
+ 0xd6, 0x2e, 0xc1, 0x62, 0xbd, 0xb3, 0xd7, 0x68, 0xe9, 0x96, 0x34, 0xb3, 0xde, 0xb9, 0xdb, 0x6d,
+ 0x59, 0x4c, 0x88, 0x70, 0x09, 0xf2, 0xf5, 0x8e, 0x65, 0x7c, 0xc5, 0x62, 0x76, 0x71, 0x99, 0x40,
+ 0x15, 0x3d, 0x79, 0xf7, 0xf2, 0xb7, 0x32, 0x90, 0xe5, 0xcf, 0xb9, 0xcb, 0x50, 0xe4, 0xbb, 0x6d,
+ 0x3d, 0x68, 0xb3, 0x29, 0x8b, 0x90, 0xad, 0x9b, 0xd6, 0x4d, 0xf4, 0x73, 0x2a, 0x06, 0xc8, 0x75,
+ 0x79, 0xfb, 0xe7, 0xf3, 0xac, 0x5d, 0x37, 0xad, 0xb7, 0x6f, 0xa0, 0xaf, 0xaa, 0x6c, 0xd8, 0xae,
+ 0x20, 0x7e, 0x21, 0x11, 0x6c, 0x5f, 0x47, 0x5f, 0x4b, 0x05, 0xdb, 0xd7, 0xd1, 0x2f, 0x26, 0x82,
+ 0x6b, 0xdb, 0xe8, 0xeb, 0xa9, 0xe0, 0xda, 0x36, 0xfa, 0xa5, 0x44, 0x70, 0xe3, 0x3a, 0xfa, 0xe5,
+ 0x54, 0x70, 0xe3, 0x3a, 0xfa, 0x95, 0x3c, 0xb3, 0x85, 0x5b, 0x72, 0x6d, 0x1b, 0xfd, 0x6a, 0x21,
+ 0xa5, 0x6e, 0x5c, 0x47, 0xbf, 0x56, 0x60, 0xfb, 0x9f, 0xee, 0x2a, 0xfa, 0x75, 0xc4, 0x96, 0xc9,
+ 0x36, 0x08, 0xfd, 0x06, 0x6f, 0x32, 0x11, 0xfa, 0x4d, 0xc4, 0x6c, 0x64, 0x5c, 0x4e, 0x7e, 0x83,
+ 0x4b, 0x1e, 0x18, 0x3a, 0x41, 0xbf, 0x95, 0x17, 0x8f, 0x3d, 0x6b, 0xf5, 0xa6, 0xde, 0x40, 0x98,
+ 0xf7, 0x60, 0xa8, 0xfc, 0xce, 0x55, 0xd6, 0x64, 0xee, 0x89, 0x7e, 0xb7, 0xcd, 0x26, 0xbc, 0xa7,
+ 0x93, 0xda, 0x7b, 0x3a, 0x41, 0xbf, 0x77, 0x95, 0x4d, 0x78, 0x4f, 0x27, 0x12, 0xaf, 0xdf, 0x6f,
+ 0x33, 0x45, 0x2e, 0xfa, 0x83, 0xab, 0x6c, 0xd1, 0x92, 0xff, 0xcd, 0x36, 0x2e, 0x40, 0x66, 0xa7,
+ 0x6e, 0xa1, 0x6f, 0xf1, 0xd9, 0x98, 0x8b, 0xa2, 0x3f, 0x44, 0x8c, 0xd9, 0x31, 0x2c, 0xf4, 0x6d,
+ 0xc6, 0xcc, 0x59, 0xdd, 0x76, 0xc3, 0x40, 0xaf, 0xb3, 0xc5, 0xdd, 0x32, 0x5a, 0x4d, 0xc3, 0x22,
+ 0x0f, 0xd0, 0x1f, 0x71, 0xf5, 0xdb, 0x9d, 0x96, 0x89, 0xbe, 0x83, 0x70, 0x05, 0xc0, 0xf8, 0x4a,
+ 0x9b, 0x18, 0x9d, 0x4e, 0xbd, 0x65, 0xa2, 0x37, 0x2f, 0xef, 0x01, 0x3a, 0x19, 0x0e, 0x98, 0x01,
+ 0x5d, 0xf3, 0x8e, 0xd9, 0xba, 0x6f, 0xa2, 0x05, 0x46, 0xb4, 0x89, 0xd1, 0xd6, 0x89, 0x81, 0x14,
+ 0x0c, 0x90, 0x97, 0x4f, 0x48, 0x55, 0xbc, 0x04, 0x05, 0xd2, 0x6a, 0x34, 0x76, 0xf4, 0xda, 0x1d,
+ 0x94, 0xd9, 0x31, 0xfe, 0xfa, 0xa3, 0x8b, 0xca, 0xdf, 0x7d, 0x74, 0x51, 0xf9, 0xee, 0x47, 0x17,
+ 0x95, 0x6f, 0xfe, 0xeb, 0xc5, 0x05, 0x58, 0x76, 0x83, 0xad, 0x63, 0x37, 0xa6, 0x51, 0x24, 0xfe,
+ 0x40, 0xf0, 0xbe, 0x26, 0x29, 0x37, 0xb8, 0x22, 0x5a, 0x57, 0x06, 0xc1, 0x95, 0xe3, 0xf8, 0x0a,
+ 0x97, 0x5e, 0xe1, 0x11, 0xe4, 0x61, 0x9e, 0x13, 0xd7, 0xfe, 0x2f, 0x00, 0x00, 0xff, 0xff, 0xc4,
+ 0x64, 0x72, 0x89, 0x9e, 0x30, 0x00, 0x00,
+}
+
+func (m *Target) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Target) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Target) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Cell) > 0 {
+ i -= len(m.Cell)
+ copy(dAtA[i:], m.Cell)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Cell)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.TabletType != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.TabletType))
+ i--
+ dAtA[i] = 0x18
+ }
+ if len(m.Shard) > 0 {
+ i -= len(m.Shard)
+ copy(dAtA[i:], m.Shard)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Shard)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *VTGateCallerID) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *VTGateCallerID) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *VTGateCallerID) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Groups) > 0 {
+ for iNdEx := len(m.Groups) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Groups[iNdEx])
+ copy(dAtA[i:], m.Groups[iNdEx])
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Groups[iNdEx])))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Username) > 0 {
+ i -= len(m.Username)
+ copy(dAtA[i:], m.Username)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Username)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *EventToken) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *EventToken) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *EventToken) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Position) > 0 {
+ i -= len(m.Position)
+ copy(dAtA[i:], m.Position)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Position)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Shard) > 0 {
+ i -= len(m.Shard)
+ copy(dAtA[i:], m.Shard)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Shard)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Timestamp != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.Timestamp))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Value) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Value) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Value) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Value) > 0 {
+ i -= len(m.Value)
+ copy(dAtA[i:], m.Value)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Value)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Type != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.Type))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *BindVariable) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *BindVariable) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *BindVariable) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Values) > 0 {
+ for iNdEx := len(m.Values) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Values[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if len(m.Value) > 0 {
+ i -= len(m.Value)
+ copy(dAtA[i:], m.Value)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Value)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Type != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.Type))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *BoundQuery) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *BoundQuery) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *BoundQuery) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.BindVariables) > 0 {
+ for k := range m.BindVariables {
+ v := m.BindVariables[k]
+ baseI := i
+ if v != nil {
+ {
+ size, err := v.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintQuery(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintQuery(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Sql) > 0 {
+ i -= len(m.Sql)
+ copy(dAtA[i:], m.Sql)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Sql)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ExecuteOptions) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExecuteOptions) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ExecuteOptions) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.HasCreatedTempTables {
+ i--
+ if m.HasCreatedTempTables {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x60
+ }
+ if m.PlannerVersion != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.PlannerVersion))
+ i--
+ dAtA[i] = 0x58
+ }
+ if m.SkipQueryPlanCache {
+ i--
+ if m.SkipQueryPlanCache {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x50
+ }
+ if m.TransactionIsolation != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.TransactionIsolation))
+ i--
+ dAtA[i] = 0x48
+ }
+ if m.SqlSelectLimit != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.SqlSelectLimit))
+ i--
+ dAtA[i] = 0x40
+ }
+ if m.Workload != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.Workload))
+ i--
+ dAtA[i] = 0x30
+ }
+ if m.ClientFoundRows {
+ i--
+ if m.ClientFoundRows {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x28
+ }
+ if m.IncludedFields != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.IncludedFields))
+ i--
+ dAtA[i] = 0x20
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Field) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Field) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Field) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.ColumnType) > 0 {
+ i -= len(m.ColumnType)
+ copy(dAtA[i:], m.ColumnType)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.ColumnType)))
+ i--
+ dAtA[i] = 0x5a
+ }
+ if m.Flags != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.Flags))
+ i--
+ dAtA[i] = 0x50
+ }
+ if m.Decimals != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.Decimals))
+ i--
+ dAtA[i] = 0x48
+ }
+ if m.Charset != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.Charset))
+ i--
+ dAtA[i] = 0x40
+ }
+ if m.ColumnLength != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.ColumnLength))
+ i--
+ dAtA[i] = 0x38
+ }
+ if len(m.OrgName) > 0 {
+ i -= len(m.OrgName)
+ copy(dAtA[i:], m.OrgName)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.OrgName)))
+ i--
+ dAtA[i] = 0x32
+ }
+ if len(m.Database) > 0 {
+ i -= len(m.Database)
+ copy(dAtA[i:], m.Database)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Database)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if len(m.OrgTable) > 0 {
+ i -= len(m.OrgTable)
+ copy(dAtA[i:], m.OrgTable)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.OrgTable)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if len(m.Table) > 0 {
+ i -= len(m.Table)
+ copy(dAtA[i:], m.Table)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Table)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.Type != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.Type))
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Row) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Row) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Row) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Values) > 0 {
+ i -= len(m.Values)
+ copy(dAtA[i:], m.Values)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Values)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Lengths) > 0 {
+ var j2 int
+ dAtA4 := make([]byte, len(m.Lengths)*10)
+ for _, num := range m.Lengths {
+ x3 := (uint64(num) << 1) ^ uint64((num >> 63))
+ for x3 >= 1<<7 {
+ dAtA4[j2] = uint8(uint64(x3)&0x7f | 0x80)
+ j2++
+ x3 >>= 7
+ }
+ dAtA4[j2] = uint8(x3)
+ j2++
+ }
+ i -= j2
+ copy(dAtA[i:], dAtA4[:j2])
+ i = encodeVarintQuery(dAtA, i, uint64(j2))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *QueryResult) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *QueryResult) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
}
+
+func (m *QueryResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Rows) > 0 {
+ for iNdEx := len(m.Rows) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Rows[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if m.InsertId != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.InsertId))
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.RowsAffected != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.RowsAffected))
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.Fields) > 0 {
+ for iNdEx := len(m.Fields) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Fields[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *QueryWarning) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *QueryWarning) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *QueryWarning) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Message) > 0 {
+ i -= len(m.Message)
+ copy(dAtA[i:], m.Message)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Message)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Code != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.Code))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *StreamEvent) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StreamEvent) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *StreamEvent) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.EventToken != nil {
+ {
+ size, err := m.EventToken.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Statements) > 0 {
+ for iNdEx := len(m.Statements) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Statements[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *StreamEvent_Statement) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StreamEvent_Statement) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *StreamEvent_Statement) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Sql) > 0 {
+ i -= len(m.Sql)
+ copy(dAtA[i:], m.Sql)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Sql)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if len(m.PrimaryKeyValues) > 0 {
+ for iNdEx := len(m.PrimaryKeyValues) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.PrimaryKeyValues[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if len(m.PrimaryKeyFields) > 0 {
+ for iNdEx := len(m.PrimaryKeyFields) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.PrimaryKeyFields[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if len(m.TableName) > 0 {
+ i -= len(m.TableName)
+ copy(dAtA[i:], m.TableName)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.TableName)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Category != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.Category))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ExecuteRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExecuteRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ExecuteRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.ReservedId != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.ReservedId))
+ i--
+ dAtA[i] = 0x38
+ }
+ if m.Options != nil {
+ {
+ size, err := m.Options.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x32
+ }
+ if m.TransactionId != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.TransactionId))
+ i--
+ dAtA[i] = 0x28
+ }
+ if m.Query != nil {
+ {
+ size, err := m.Query.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.Target != nil {
+ {
+ size, err := m.Target.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.ImmediateCallerId != nil {
+ {
+ size, err := m.ImmediateCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.EffectiveCallerId != nil {
+ {
+ size, err := m.EffectiveCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ExecuteResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExecuteResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ExecuteResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Result != nil {
+ {
+ size, err := m.Result.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ResultWithError) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ResultWithError) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ResultWithError) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Result != nil {
+ {
+ size, err := m.Result.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Error != nil {
+ {
+ size, err := m.Error.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ExecuteBatchRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExecuteBatchRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ExecuteBatchRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Options != nil {
+ {
+ size, err := m.Options.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x3a
+ }
+ if m.TransactionId != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.TransactionId))
+ i--
+ dAtA[i] = 0x30
+ }
+ if m.AsTransaction {
+ i--
+ if m.AsTransaction {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x28
+ }
+ if len(m.Queries) > 0 {
+ for iNdEx := len(m.Queries) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Queries[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if m.Target != nil {
+ {
+ size, err := m.Target.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.ImmediateCallerId != nil {
+ {
+ size, err := m.ImmediateCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.EffectiveCallerId != nil {
+ {
+ size, err := m.EffectiveCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ExecuteBatchResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExecuteBatchResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ExecuteBatchResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Results) > 0 {
+ for iNdEx := len(m.Results) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Results[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *StreamExecuteRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StreamExecuteRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *StreamExecuteRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.TransactionId != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.TransactionId))
+ i--
+ dAtA[i] = 0x30
+ }
+ if m.Options != nil {
+ {
+ size, err := m.Options.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x2a
+ }
+ if m.Query != nil {
+ {
+ size, err := m.Query.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.Target != nil {
+ {
+ size, err := m.Target.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.ImmediateCallerId != nil {
+ {
+ size, err := m.ImmediateCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.EffectiveCallerId != nil {
+ {
+ size, err := m.EffectiveCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *StreamExecuteResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StreamExecuteResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *StreamExecuteResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Result != nil {
+ {
+ size, err := m.Result.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *BeginRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *BeginRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *BeginRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Options != nil {
+ {
+ size, err := m.Options.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.Target != nil {
+ {
+ size, err := m.Target.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.ImmediateCallerId != nil {
+ {
+ size, err := m.ImmediateCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.EffectiveCallerId != nil {
+ {
+ size, err := m.EffectiveCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *BeginResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *BeginResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *BeginResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.TabletAlias != nil {
+ {
+ size, err := m.TabletAlias.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.TransactionId != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.TransactionId))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *CommitRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *CommitRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *CommitRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.TransactionId != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.TransactionId))
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.Target != nil {
+ {
+ size, err := m.Target.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.ImmediateCallerId != nil {
+ {
+ size, err := m.ImmediateCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.EffectiveCallerId != nil {
+ {
+ size, err := m.EffectiveCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *CommitResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *CommitResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *CommitResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.ReservedId != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.ReservedId))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RollbackRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RollbackRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RollbackRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.TransactionId != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.TransactionId))
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.Target != nil {
+ {
+ size, err := m.Target.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.ImmediateCallerId != nil {
+ {
+ size, err := m.ImmediateCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.EffectiveCallerId != nil {
+ {
+ size, err := m.EffectiveCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RollbackResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RollbackResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RollbackResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.ReservedId != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.ReservedId))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *PrepareRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PrepareRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *PrepareRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Dtid) > 0 {
+ i -= len(m.Dtid)
+ copy(dAtA[i:], m.Dtid)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Dtid)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if m.TransactionId != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.TransactionId))
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.Target != nil {
+ {
+ size, err := m.Target.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.ImmediateCallerId != nil {
+ {
+ size, err := m.ImmediateCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.EffectiveCallerId != nil {
+ {
+ size, err := m.EffectiveCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *PrepareResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PrepareResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *PrepareResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *CommitPreparedRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *CommitPreparedRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *CommitPreparedRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Dtid) > 0 {
+ i -= len(m.Dtid)
+ copy(dAtA[i:], m.Dtid)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Dtid)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.Target != nil {
+ {
+ size, err := m.Target.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.ImmediateCallerId != nil {
+ {
+ size, err := m.ImmediateCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.EffectiveCallerId != nil {
+ {
+ size, err := m.EffectiveCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *CommitPreparedResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *CommitPreparedResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *CommitPreparedResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RollbackPreparedRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RollbackPreparedRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RollbackPreparedRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Dtid) > 0 {
+ i -= len(m.Dtid)
+ copy(dAtA[i:], m.Dtid)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Dtid)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if m.TransactionId != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.TransactionId))
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.Target != nil {
+ {
+ size, err := m.Target.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.ImmediateCallerId != nil {
+ {
+ size, err := m.ImmediateCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.EffectiveCallerId != nil {
+ {
+ size, err := m.EffectiveCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RollbackPreparedResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RollbackPreparedResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RollbackPreparedResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *CreateTransactionRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *CreateTransactionRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *CreateTransactionRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Participants) > 0 {
+ for iNdEx := len(m.Participants) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Participants[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x2a
+ }
+ }
+ if len(m.Dtid) > 0 {
+ i -= len(m.Dtid)
+ copy(dAtA[i:], m.Dtid)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Dtid)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.Target != nil {
+ {
+ size, err := m.Target.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.ImmediateCallerId != nil {
+ {
+ size, err := m.ImmediateCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.EffectiveCallerId != nil {
+ {
+ size, err := m.EffectiveCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *CreateTransactionResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *CreateTransactionResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *CreateTransactionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *StartCommitRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StartCommitRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *StartCommitRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Dtid) > 0 {
+ i -= len(m.Dtid)
+ copy(dAtA[i:], m.Dtid)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Dtid)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if m.TransactionId != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.TransactionId))
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.Target != nil {
+ {
+ size, err := m.Target.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.ImmediateCallerId != nil {
+ {
+ size, err := m.ImmediateCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.EffectiveCallerId != nil {
+ {
+ size, err := m.EffectiveCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *StartCommitResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StartCommitResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *StartCommitResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *SetRollbackRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SetRollbackRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *SetRollbackRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Dtid) > 0 {
+ i -= len(m.Dtid)
+ copy(dAtA[i:], m.Dtid)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Dtid)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if m.TransactionId != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.TransactionId))
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.Target != nil {
+ {
+ size, err := m.Target.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.ImmediateCallerId != nil {
+ {
+ size, err := m.ImmediateCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.EffectiveCallerId != nil {
+ {
+ size, err := m.EffectiveCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *SetRollbackResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SetRollbackResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *SetRollbackResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ConcludeTransactionRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ConcludeTransactionRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ConcludeTransactionRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Dtid) > 0 {
+ i -= len(m.Dtid)
+ copy(dAtA[i:], m.Dtid)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Dtid)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.Target != nil {
+ {
+ size, err := m.Target.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.ImmediateCallerId != nil {
+ {
+ size, err := m.ImmediateCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.EffectiveCallerId != nil {
+ {
+ size, err := m.EffectiveCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ConcludeTransactionResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ConcludeTransactionResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ConcludeTransactionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ReadTransactionRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ReadTransactionRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ReadTransactionRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Dtid) > 0 {
+ i -= len(m.Dtid)
+ copy(dAtA[i:], m.Dtid)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Dtid)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.Target != nil {
+ {
+ size, err := m.Target.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.ImmediateCallerId != nil {
+ {
+ size, err := m.ImmediateCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.EffectiveCallerId != nil {
+ {
+ size, err := m.EffectiveCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ReadTransactionResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ReadTransactionResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ReadTransactionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Metadata != nil {
+ {
+ size, err := m.Metadata.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *BeginExecuteRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *BeginExecuteRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *BeginExecuteRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.PreQueries) > 0 {
+ for iNdEx := len(m.PreQueries) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.PreQueries[iNdEx])
+ copy(dAtA[i:], m.PreQueries[iNdEx])
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.PreQueries[iNdEx])))
+ i--
+ dAtA[i] = 0x3a
+ }
+ }
+ if m.ReservedId != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.ReservedId))
+ i--
+ dAtA[i] = 0x30
+ }
+ if m.Options != nil {
+ {
+ size, err := m.Options.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x2a
+ }
+ if m.Query != nil {
+ {
+ size, err := m.Query.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.Target != nil {
+ {
+ size, err := m.Target.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.ImmediateCallerId != nil {
+ {
+ size, err := m.ImmediateCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.EffectiveCallerId != nil {
+ {
+ size, err := m.EffectiveCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *BeginExecuteResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *BeginExecuteResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *BeginExecuteResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.TabletAlias != nil {
+ {
+ size, err := m.TabletAlias.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.TransactionId != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.TransactionId))
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.Result != nil {
+ {
+ size, err := m.Result.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Error != nil {
+ {
+ size, err := m.Error.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *BeginExecuteBatchRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *BeginExecuteBatchRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *BeginExecuteBatchRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Options != nil {
+ {
+ size, err := m.Options.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x32
+ }
+ if m.AsTransaction {
+ i--
+ if m.AsTransaction {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x28
+ }
+ if len(m.Queries) > 0 {
+ for iNdEx := len(m.Queries) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Queries[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if m.Target != nil {
+ {
+ size, err := m.Target.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.ImmediateCallerId != nil {
+ {
+ size, err := m.ImmediateCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.EffectiveCallerId != nil {
+ {
+ size, err := m.EffectiveCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *BeginExecuteBatchResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *BeginExecuteBatchResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *BeginExecuteBatchResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.TabletAlias != nil {
+ {
+ size, err := m.TabletAlias.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.TransactionId != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.TransactionId))
+ i--
+ dAtA[i] = 0x18
+ }
+ if len(m.Results) > 0 {
+ for iNdEx := len(m.Results) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Results[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if m.Error != nil {
+ {
+ size, err := m.Error.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MessageStreamRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MessageStreamRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *MessageStreamRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.Target != nil {
+ {
+ size, err := m.Target.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.ImmediateCallerId != nil {
+ {
+ size, err := m.ImmediateCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.EffectiveCallerId != nil {
+ {
+ size, err := m.EffectiveCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MessageStreamResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MessageStreamResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *MessageStreamResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Result != nil {
+ {
+ size, err := m.Result.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MessageAckRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MessageAckRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *MessageAckRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Ids) > 0 {
+ for iNdEx := len(m.Ids) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Ids[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x2a
+ }
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.Target != nil {
+ {
+ size, err := m.Target.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.ImmediateCallerId != nil {
+ {
+ size, err := m.ImmediateCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.EffectiveCallerId != nil {
+ {
+ size, err := m.EffectiveCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MessageAckResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MessageAckResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *MessageAckResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Result != nil {
+ {
+ size, err := m.Result.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ReserveExecuteRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ReserveExecuteRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ReserveExecuteRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.PreQueries) > 0 {
+ for iNdEx := len(m.PreQueries) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.PreQueries[iNdEx])
+ copy(dAtA[i:], m.PreQueries[iNdEx])
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.PreQueries[iNdEx])))
+ i--
+ dAtA[i] = 0x3a
+ }
+ }
+ if m.Options != nil {
+ {
+ size, err := m.Options.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x32
+ }
+ if m.TransactionId != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.TransactionId))
+ i--
+ dAtA[i] = 0x28
+ }
+ if m.Query != nil {
+ {
+ size, err := m.Query.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.Target != nil {
+ {
+ size, err := m.Target.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.ImmediateCallerId != nil {
+ {
+ size, err := m.ImmediateCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.EffectiveCallerId != nil {
+ {
+ size, err := m.EffectiveCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ReserveExecuteResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ReserveExecuteResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ReserveExecuteResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.TabletAlias != nil {
+ {
+ size, err := m.TabletAlias.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.ReservedId != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.ReservedId))
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.Result != nil {
+ {
+ size, err := m.Result.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Error != nil {
+ {
+ size, err := m.Error.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ReserveBeginExecuteRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ReserveBeginExecuteRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ReserveBeginExecuteRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.PreQueries) > 0 {
+ for iNdEx := len(m.PreQueries) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.PreQueries[iNdEx])
+ copy(dAtA[i:], m.PreQueries[iNdEx])
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.PreQueries[iNdEx])))
+ i--
+ dAtA[i] = 0x32
+ }
+ }
+ if m.Options != nil {
+ {
+ size, err := m.Options.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x2a
+ }
+ if m.Query != nil {
+ {
+ size, err := m.Query.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.Target != nil {
+ {
+ size, err := m.Target.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.ImmediateCallerId != nil {
+ {
+ size, err := m.ImmediateCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.EffectiveCallerId != nil {
+ {
+ size, err := m.EffectiveCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ReserveBeginExecuteResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ReserveBeginExecuteResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ReserveBeginExecuteResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.TabletAlias != nil {
+ {
+ size, err := m.TabletAlias.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x2a
+ }
+ if m.ReservedId != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.ReservedId))
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.TransactionId != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.TransactionId))
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.Result != nil {
+ {
+ size, err := m.Result.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Error != nil {
+ {
+ size, err := m.Error.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ReleaseRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ReleaseRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ReleaseRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.ReservedId != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.ReservedId))
+ i--
+ dAtA[i] = 0x28
+ }
+ if m.TransactionId != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.TransactionId))
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.Target != nil {
+ {
+ size, err := m.Target.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.ImmediateCallerId != nil {
+ {
+ size, err := m.ImmediateCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.EffectiveCallerId != nil {
+ {
+ size, err := m.EffectiveCallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ReleaseResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ReleaseResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ReleaseResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *StreamHealthRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StreamHealthRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *StreamHealthRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RealtimeStats) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RealtimeStats) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RealtimeStats) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Qps != 0 {
+ i -= 8
+ encoding_binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.Qps))))
+ i--
+ dAtA[i] = 0x31
+ }
+ if m.CpuUsage != 0 {
+ i -= 8
+ encoding_binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.CpuUsage))))
+ i--
+ dAtA[i] = 0x29
+ }
+ if m.SecondsBehindMasterFilteredReplication != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.SecondsBehindMasterFilteredReplication))
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.BinlogPlayersCount != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.BinlogPlayersCount))
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.SecondsBehindMaster != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.SecondsBehindMaster))
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.HealthError) > 0 {
+ i -= len(m.HealthError)
+ copy(dAtA[i:], m.HealthError)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.HealthError)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *AggregateStats) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AggregateStats) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *AggregateStats) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.SecondsBehindMasterMax != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.SecondsBehindMasterMax))
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.SecondsBehindMasterMin != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.SecondsBehindMasterMin))
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.UnhealthyTabletCount != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.UnhealthyTabletCount))
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.HealthyTabletCount != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.HealthyTabletCount))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *StreamHealthResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StreamHealthResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *StreamHealthResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.TabletAlias != nil {
+ {
+ size, err := m.TabletAlias.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x2a
+ }
+ if m.RealtimeStats != nil {
+ {
+ size, err := m.RealtimeStats.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.TabletExternallyReparentedTimestamp != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.TabletExternallyReparentedTimestamp))
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.Serving {
+ i--
+ if m.Serving {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.Target != nil {
+ {
+ size, err := m.Target.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *TransactionMetadata) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *TransactionMetadata) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *TransactionMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Participants) > 0 {
+ for iNdEx := len(m.Participants) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Participants[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintQuery(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if m.TimeCreated != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.TimeCreated))
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.State != 0 {
+ i = encodeVarintQuery(dAtA, i, uint64(m.State))
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.Dtid) > 0 {
+ i -= len(m.Dtid)
+ copy(dAtA[i:], m.Dtid)
+ i = encodeVarintQuery(dAtA, i, uint64(len(m.Dtid)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func encodeVarintQuery(dAtA []byte, offset int, v uint64) int {
+ offset -= sovQuery(v)
+ base := offset
+ for v >= 1<<7 {
+ dAtA[offset] = uint8(v&0x7f | 0x80)
+ v >>= 7
+ offset++
+ }
+ dAtA[offset] = uint8(v)
+ return base
+}
+func (m *Target) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ l = len(m.Shard)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.TabletType != 0 {
+ n += 1 + sovQuery(uint64(m.TabletType))
+ }
+ l = len(m.Cell)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *VTGateCallerID) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Username)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if len(m.Groups) > 0 {
+ for _, s := range m.Groups {
+ l = len(s)
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *EventToken) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Timestamp != 0 {
+ n += 1 + sovQuery(uint64(m.Timestamp))
+ }
+ l = len(m.Shard)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ l = len(m.Position)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Value) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Type != 0 {
+ n += 1 + sovQuery(uint64(m.Type))
+ }
+ l = len(m.Value)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *BindVariable) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Type != 0 {
+ n += 1 + sovQuery(uint64(m.Type))
+ }
+ l = len(m.Value)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if len(m.Values) > 0 {
+ for _, e := range m.Values {
+ l = e.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *BoundQuery) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Sql)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if len(m.BindVariables) > 0 {
+ for k, v := range m.BindVariables {
+ _ = k
+ _ = v
+ l = 0
+ if v != nil {
+ l = v.Size()
+ l += 1 + sovQuery(uint64(l))
+ }
+ mapEntrySize := 1 + len(k) + sovQuery(uint64(len(k))) + l
+ n += mapEntrySize + 1 + sovQuery(uint64(mapEntrySize))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ExecuteOptions) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.IncludedFields != 0 {
+ n += 1 + sovQuery(uint64(m.IncludedFields))
+ }
+ if m.ClientFoundRows {
+ n += 2
+ }
+ if m.Workload != 0 {
+ n += 1 + sovQuery(uint64(m.Workload))
+ }
+ if m.SqlSelectLimit != 0 {
+ n += 1 + sovQuery(uint64(m.SqlSelectLimit))
+ }
+ if m.TransactionIsolation != 0 {
+ n += 1 + sovQuery(uint64(m.TransactionIsolation))
+ }
+ if m.SkipQueryPlanCache {
+ n += 2
+ }
+ if m.PlannerVersion != 0 {
+ n += 1 + sovQuery(uint64(m.PlannerVersion))
+ }
+ if m.HasCreatedTempTables {
+ n += 2
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Field) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Type != 0 {
+ n += 1 + sovQuery(uint64(m.Type))
+ }
+ l = len(m.Table)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ l = len(m.OrgTable)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ l = len(m.Database)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ l = len(m.OrgName)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.ColumnLength != 0 {
+ n += 1 + sovQuery(uint64(m.ColumnLength))
+ }
+ if m.Charset != 0 {
+ n += 1 + sovQuery(uint64(m.Charset))
+ }
+ if m.Decimals != 0 {
+ n += 1 + sovQuery(uint64(m.Decimals))
+ }
+ if m.Flags != 0 {
+ n += 1 + sovQuery(uint64(m.Flags))
+ }
+ l = len(m.ColumnType)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Row) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Lengths) > 0 {
+ l = 0
+ for _, e := range m.Lengths {
+ l += sozQuery(uint64(e))
+ }
+ n += 1 + sovQuery(uint64(l)) + l
+ }
+ l = len(m.Values)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *QueryResult) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Fields) > 0 {
+ for _, e := range m.Fields {
+ l = e.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ }
+ if m.RowsAffected != 0 {
+ n += 1 + sovQuery(uint64(m.RowsAffected))
+ }
+ if m.InsertId != 0 {
+ n += 1 + sovQuery(uint64(m.InsertId))
+ }
+ if len(m.Rows) > 0 {
+ for _, e := range m.Rows {
+ l = e.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *QueryWarning) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Code != 0 {
+ n += 1 + sovQuery(uint64(m.Code))
+ }
+ l = len(m.Message)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StreamEvent) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Statements) > 0 {
+ for _, e := range m.Statements {
+ l = e.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ }
+ if m.EventToken != nil {
+ l = m.EventToken.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StreamEvent_Statement) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Category != 0 {
+ n += 1 + sovQuery(uint64(m.Category))
+ }
+ l = len(m.TableName)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if len(m.PrimaryKeyFields) > 0 {
+ for _, e := range m.PrimaryKeyFields {
+ l = e.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ }
+ if len(m.PrimaryKeyValues) > 0 {
+ for _, e := range m.PrimaryKeyValues {
+ l = e.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ }
+ l = len(m.Sql)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ExecuteRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.EffectiveCallerId != nil {
+ l = m.EffectiveCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.ImmediateCallerId != nil {
+ l = m.ImmediateCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Target != nil {
+ l = m.Target.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Query != nil {
+ l = m.Query.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.TransactionId != 0 {
+ n += 1 + sovQuery(uint64(m.TransactionId))
+ }
+ if m.Options != nil {
+ l = m.Options.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.ReservedId != 0 {
+ n += 1 + sovQuery(uint64(m.ReservedId))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ExecuteResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Result != nil {
+ l = m.Result.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ResultWithError) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Error != nil {
+ l = m.Error.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Result != nil {
+ l = m.Result.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ExecuteBatchRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.EffectiveCallerId != nil {
+ l = m.EffectiveCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.ImmediateCallerId != nil {
+ l = m.ImmediateCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Target != nil {
+ l = m.Target.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if len(m.Queries) > 0 {
+ for _, e := range m.Queries {
+ l = e.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ }
+ if m.AsTransaction {
+ n += 2
+ }
+ if m.TransactionId != 0 {
+ n += 1 + sovQuery(uint64(m.TransactionId))
+ }
+ if m.Options != nil {
+ l = m.Options.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ExecuteBatchResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Results) > 0 {
+ for _, e := range m.Results {
+ l = e.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StreamExecuteRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.EffectiveCallerId != nil {
+ l = m.EffectiveCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.ImmediateCallerId != nil {
+ l = m.ImmediateCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Target != nil {
+ l = m.Target.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Query != nil {
+ l = m.Query.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Options != nil {
+ l = m.Options.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.TransactionId != 0 {
+ n += 1 + sovQuery(uint64(m.TransactionId))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StreamExecuteResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Result != nil {
+ l = m.Result.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *BeginRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.EffectiveCallerId != nil {
+ l = m.EffectiveCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.ImmediateCallerId != nil {
+ l = m.ImmediateCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Target != nil {
+ l = m.Target.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Options != nil {
+ l = m.Options.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *BeginResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.TransactionId != 0 {
+ n += 1 + sovQuery(uint64(m.TransactionId))
+ }
+ if m.TabletAlias != nil {
+ l = m.TabletAlias.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *CommitRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.EffectiveCallerId != nil {
+ l = m.EffectiveCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.ImmediateCallerId != nil {
+ l = m.ImmediateCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Target != nil {
+ l = m.Target.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.TransactionId != 0 {
+ n += 1 + sovQuery(uint64(m.TransactionId))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *CommitResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.ReservedId != 0 {
+ n += 1 + sovQuery(uint64(m.ReservedId))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RollbackRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.EffectiveCallerId != nil {
+ l = m.EffectiveCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.ImmediateCallerId != nil {
+ l = m.ImmediateCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Target != nil {
+ l = m.Target.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.TransactionId != 0 {
+ n += 1 + sovQuery(uint64(m.TransactionId))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RollbackResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.ReservedId != 0 {
+ n += 1 + sovQuery(uint64(m.ReservedId))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *PrepareRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.EffectiveCallerId != nil {
+ l = m.EffectiveCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.ImmediateCallerId != nil {
+ l = m.ImmediateCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Target != nil {
+ l = m.Target.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.TransactionId != 0 {
+ n += 1 + sovQuery(uint64(m.TransactionId))
+ }
+ l = len(m.Dtid)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *PrepareResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *CommitPreparedRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.EffectiveCallerId != nil {
+ l = m.EffectiveCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.ImmediateCallerId != nil {
+ l = m.ImmediateCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Target != nil {
+ l = m.Target.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ l = len(m.Dtid)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *CommitPreparedResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RollbackPreparedRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.EffectiveCallerId != nil {
+ l = m.EffectiveCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.ImmediateCallerId != nil {
+ l = m.ImmediateCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Target != nil {
+ l = m.Target.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.TransactionId != 0 {
+ n += 1 + sovQuery(uint64(m.TransactionId))
+ }
+ l = len(m.Dtid)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RollbackPreparedResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *CreateTransactionRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.EffectiveCallerId != nil {
+ l = m.EffectiveCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.ImmediateCallerId != nil {
+ l = m.ImmediateCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Target != nil {
+ l = m.Target.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ l = len(m.Dtid)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if len(m.Participants) > 0 {
+ for _, e := range m.Participants {
+ l = e.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *CreateTransactionResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StartCommitRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.EffectiveCallerId != nil {
+ l = m.EffectiveCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.ImmediateCallerId != nil {
+ l = m.ImmediateCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Target != nil {
+ l = m.Target.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.TransactionId != 0 {
+ n += 1 + sovQuery(uint64(m.TransactionId))
+ }
+ l = len(m.Dtid)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StartCommitResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *SetRollbackRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.EffectiveCallerId != nil {
+ l = m.EffectiveCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.ImmediateCallerId != nil {
+ l = m.ImmediateCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Target != nil {
+ l = m.Target.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.TransactionId != 0 {
+ n += 1 + sovQuery(uint64(m.TransactionId))
+ }
+ l = len(m.Dtid)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *SetRollbackResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ConcludeTransactionRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.EffectiveCallerId != nil {
+ l = m.EffectiveCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.ImmediateCallerId != nil {
+ l = m.ImmediateCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Target != nil {
+ l = m.Target.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ l = len(m.Dtid)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ConcludeTransactionResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ReadTransactionRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.EffectiveCallerId != nil {
+ l = m.EffectiveCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.ImmediateCallerId != nil {
+ l = m.ImmediateCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Target != nil {
+ l = m.Target.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ l = len(m.Dtid)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ReadTransactionResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Metadata != nil {
+ l = m.Metadata.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *BeginExecuteRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.EffectiveCallerId != nil {
+ l = m.EffectiveCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.ImmediateCallerId != nil {
+ l = m.ImmediateCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Target != nil {
+ l = m.Target.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Query != nil {
+ l = m.Query.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Options != nil {
+ l = m.Options.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.ReservedId != 0 {
+ n += 1 + sovQuery(uint64(m.ReservedId))
+ }
+ if len(m.PreQueries) > 0 {
+ for _, s := range m.PreQueries {
+ l = len(s)
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *BeginExecuteResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Error != nil {
+ l = m.Error.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Result != nil {
+ l = m.Result.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.TransactionId != 0 {
+ n += 1 + sovQuery(uint64(m.TransactionId))
+ }
+ if m.TabletAlias != nil {
+ l = m.TabletAlias.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *BeginExecuteBatchRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.EffectiveCallerId != nil {
+ l = m.EffectiveCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.ImmediateCallerId != nil {
+ l = m.ImmediateCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Target != nil {
+ l = m.Target.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if len(m.Queries) > 0 {
+ for _, e := range m.Queries {
+ l = e.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ }
+ if m.AsTransaction {
+ n += 2
+ }
+ if m.Options != nil {
+ l = m.Options.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *BeginExecuteBatchResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Error != nil {
+ l = m.Error.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if len(m.Results) > 0 {
+ for _, e := range m.Results {
+ l = e.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ }
+ if m.TransactionId != 0 {
+ n += 1 + sovQuery(uint64(m.TransactionId))
+ }
+ if m.TabletAlias != nil {
+ l = m.TabletAlias.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *MessageStreamRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.EffectiveCallerId != nil {
+ l = m.EffectiveCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.ImmediateCallerId != nil {
+ l = m.ImmediateCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Target != nil {
+ l = m.Target.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *MessageStreamResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Result != nil {
+ l = m.Result.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *MessageAckRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.EffectiveCallerId != nil {
+ l = m.EffectiveCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.ImmediateCallerId != nil {
+ l = m.ImmediateCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Target != nil {
+ l = m.Target.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if len(m.Ids) > 0 {
+ for _, e := range m.Ids {
+ l = e.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *MessageAckResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Result != nil {
+ l = m.Result.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ReserveExecuteRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.EffectiveCallerId != nil {
+ l = m.EffectiveCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.ImmediateCallerId != nil {
+ l = m.ImmediateCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Target != nil {
+ l = m.Target.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Query != nil {
+ l = m.Query.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.TransactionId != 0 {
+ n += 1 + sovQuery(uint64(m.TransactionId))
+ }
+ if m.Options != nil {
+ l = m.Options.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if len(m.PreQueries) > 0 {
+ for _, s := range m.PreQueries {
+ l = len(s)
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ReserveExecuteResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Error != nil {
+ l = m.Error.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Result != nil {
+ l = m.Result.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.ReservedId != 0 {
+ n += 1 + sovQuery(uint64(m.ReservedId))
+ }
+ if m.TabletAlias != nil {
+ l = m.TabletAlias.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ReserveBeginExecuteRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.EffectiveCallerId != nil {
+ l = m.EffectiveCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.ImmediateCallerId != nil {
+ l = m.ImmediateCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Target != nil {
+ l = m.Target.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Query != nil {
+ l = m.Query.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Options != nil {
+ l = m.Options.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if len(m.PreQueries) > 0 {
+ for _, s := range m.PreQueries {
+ l = len(s)
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ReserveBeginExecuteResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Error != nil {
+ l = m.Error.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Result != nil {
+ l = m.Result.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.TransactionId != 0 {
+ n += 1 + sovQuery(uint64(m.TransactionId))
+ }
+ if m.ReservedId != 0 {
+ n += 1 + sovQuery(uint64(m.ReservedId))
+ }
+ if m.TabletAlias != nil {
+ l = m.TabletAlias.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ReleaseRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.EffectiveCallerId != nil {
+ l = m.EffectiveCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.ImmediateCallerId != nil {
+ l = m.ImmediateCallerId.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Target != nil {
+ l = m.Target.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.TransactionId != 0 {
+ n += 1 + sovQuery(uint64(m.TransactionId))
+ }
+ if m.ReservedId != 0 {
+ n += 1 + sovQuery(uint64(m.ReservedId))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ReleaseResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StreamHealthRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RealtimeStats) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.HealthError)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.SecondsBehindMaster != 0 {
+ n += 1 + sovQuery(uint64(m.SecondsBehindMaster))
+ }
+ if m.BinlogPlayersCount != 0 {
+ n += 1 + sovQuery(uint64(m.BinlogPlayersCount))
+ }
+ if m.SecondsBehindMasterFilteredReplication != 0 {
+ n += 1 + sovQuery(uint64(m.SecondsBehindMasterFilteredReplication))
+ }
+ if m.CpuUsage != 0 {
+ n += 9
+ }
+ if m.Qps != 0 {
+ n += 9
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *AggregateStats) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.HealthyTabletCount != 0 {
+ n += 1 + sovQuery(uint64(m.HealthyTabletCount))
+ }
+ if m.UnhealthyTabletCount != 0 {
+ n += 1 + sovQuery(uint64(m.UnhealthyTabletCount))
+ }
+ if m.SecondsBehindMasterMin != 0 {
+ n += 1 + sovQuery(uint64(m.SecondsBehindMasterMin))
+ }
+ if m.SecondsBehindMasterMax != 0 {
+ n += 1 + sovQuery(uint64(m.SecondsBehindMasterMax))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StreamHealthResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Target != nil {
+ l = m.Target.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.Serving {
+ n += 2
+ }
+ if m.TabletExternallyReparentedTimestamp != 0 {
+ n += 1 + sovQuery(uint64(m.TabletExternallyReparentedTimestamp))
+ }
+ if m.RealtimeStats != nil {
+ l = m.RealtimeStats.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.TabletAlias != nil {
+ l = m.TabletAlias.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *TransactionMetadata) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Dtid)
+ if l > 0 {
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ if m.State != 0 {
+ n += 1 + sovQuery(uint64(m.State))
+ }
+ if m.TimeCreated != 0 {
+ n += 1 + sovQuery(uint64(m.TimeCreated))
+ }
+ if len(m.Participants) > 0 {
+ for _, e := range m.Participants {
+ l = e.Size()
+ n += 1 + l + sovQuery(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func sovQuery(x uint64) (n int) {
+ return (math_bits.Len64(x|1) + 6) / 7
+}
+func sozQuery(x uint64) (n int) {
+ return sovQuery(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+}
+func (m *Target) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Target: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Target: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Shard", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Shard = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletType", wireType)
+ }
+ m.TabletType = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TabletType |= topodata.TabletType(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cell", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Cell = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *VTGateCallerID) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: VTGateCallerID: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: VTGateCallerID: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Username", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Username = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Groups", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Groups = append(m.Groups, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *EventToken) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: EventToken: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: EventToken: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Timestamp", wireType)
+ }
+ m.Timestamp = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Timestamp |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Shard", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Shard = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Position", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Position = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Value) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Value: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Value: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
+ }
+ m.Type = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Type |= Type(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Value = append(m.Value[:0], dAtA[iNdEx:postIndex]...)
+ if m.Value == nil {
+ m.Value = []byte{}
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *BindVariable) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: BindVariable: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: BindVariable: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
+ }
+ m.Type = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Type |= Type(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Value = append(m.Value[:0], dAtA[iNdEx:postIndex]...)
+ if m.Value == nil {
+ m.Value = []byte{}
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Values", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Values = append(m.Values, &Value{})
+ if err := m.Values[len(m.Values)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *BoundQuery) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: BoundQuery: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: BoundQuery: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Sql", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Sql = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field BindVariables", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.BindVariables == nil {
+ m.BindVariables = make(map[string]*BindVariable)
+ }
+ var mapkey string
+ var mapvalue *BindVariable
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var mapmsglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ mapmsglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if mapmsglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postmsgIndex := iNdEx + mapmsglen
+ if postmsgIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postmsgIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = &BindVariable{}
+ if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
+ return err
+ }
+ iNdEx = postmsgIndex
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.BindVariables[mapkey] = mapvalue
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ExecuteOptions) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExecuteOptions: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExecuteOptions: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field IncludedFields", wireType)
+ }
+ m.IncludedFields = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.IncludedFields |= ExecuteOptions_IncludedFields(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 5:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ClientFoundRows", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.ClientFoundRows = bool(v != 0)
+ case 6:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Workload", wireType)
+ }
+ m.Workload = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Workload |= ExecuteOptions_Workload(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 8:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SqlSelectLimit", wireType)
+ }
+ m.SqlSelectLimit = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.SqlSelectLimit |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 9:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TransactionIsolation", wireType)
+ }
+ m.TransactionIsolation = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TransactionIsolation |= ExecuteOptions_TransactionIsolation(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 10:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SkipQueryPlanCache", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.SkipQueryPlanCache = bool(v != 0)
+ case 11:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PlannerVersion", wireType)
+ }
+ m.PlannerVersion = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.PlannerVersion |= ExecuteOptions_PlannerVersion(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 12:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field HasCreatedTempTables", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.HasCreatedTempTables = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Field) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Field: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Field: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
+ }
+ m.Type = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Type |= Type(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Table", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Table = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field OrgTable", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.OrgTable = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Database", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Database = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field OrgName", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.OrgName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 7:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ColumnLength", wireType)
+ }
+ m.ColumnLength = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.ColumnLength |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 8:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Charset", wireType)
+ }
+ m.Charset = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Charset |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 9:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Decimals", wireType)
+ }
+ m.Decimals = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Decimals |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 10:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Flags", wireType)
+ }
+ m.Flags = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Flags |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 11:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ColumnType", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ColumnType = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Row) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Row: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Row: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType == 0 {
+ var v uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ v = (v >> 1) ^ uint64((int64(v&1)<<63)>>63)
+ m.Lengths = append(m.Lengths, int64(v))
+ } else if wireType == 2 {
+ var packedLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ packedLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if packedLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + packedLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ var elementCount int
+ var count int
+ for _, integer := range dAtA[iNdEx:postIndex] {
+ if integer < 128 {
+ count++
+ }
+ }
+ elementCount = count
+ if elementCount != 0 && len(m.Lengths) == 0 {
+ m.Lengths = make([]int64, 0, elementCount)
+ }
+ for iNdEx < postIndex {
+ var v uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ v = (v >> 1) ^ uint64((int64(v&1)<<63)>>63)
+ m.Lengths = append(m.Lengths, int64(v))
+ }
+ } else {
+ return fmt.Errorf("proto: wrong wireType = %d for field Lengths", wireType)
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Values", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Values = append(m.Values[:0], dAtA[iNdEx:postIndex]...)
+ if m.Values == nil {
+ m.Values = []byte{}
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *QueryResult) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: QueryResult: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: QueryResult: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Fields", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Fields = append(m.Fields, &Field{})
+ if err := m.Fields[len(m.Fields)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RowsAffected", wireType)
+ }
+ m.RowsAffected = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.RowsAffected |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field InsertId", wireType)
+ }
+ m.InsertId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.InsertId |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Rows", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Rows = append(m.Rows, &Row{})
+ if err := m.Rows[len(m.Rows)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *QueryWarning) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: QueryWarning: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: QueryWarning: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType)
+ }
+ m.Code = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Code |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Message = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StreamEvent) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StreamEvent: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StreamEvent: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Statements", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Statements = append(m.Statements, &StreamEvent_Statement{})
+ if err := m.Statements[len(m.Statements)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EventToken", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.EventToken == nil {
+ m.EventToken = &EventToken{}
+ }
+ if err := m.EventToken.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StreamEvent_Statement) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Statement: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Statement: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Category", wireType)
+ }
+ m.Category = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Category |= StreamEvent_Statement_Category(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TableName", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.TableName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PrimaryKeyFields", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.PrimaryKeyFields = append(m.PrimaryKeyFields, &Field{})
+ if err := m.PrimaryKeyFields[len(m.PrimaryKeyFields)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PrimaryKeyValues", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.PrimaryKeyValues = append(m.PrimaryKeyValues, &Row{})
+ if err := m.PrimaryKeyValues[len(m.PrimaryKeyValues)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Sql", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Sql = append(m.Sql[:0], dAtA[iNdEx:postIndex]...)
+ if m.Sql == nil {
+ m.Sql = []byte{}
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ExecuteRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExecuteRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExecuteRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EffectiveCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.EffectiveCallerId == nil {
+ m.EffectiveCallerId = &vtrpc.CallerID{}
+ }
+ if err := m.EffectiveCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImmediateCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ImmediateCallerId == nil {
+ m.ImmediateCallerId = &VTGateCallerID{}
+ }
+ if err := m.ImmediateCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &Target{}
+ }
+ if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Query", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Query == nil {
+ m.Query = &BoundQuery{}
+ }
+ if err := m.Query.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 5:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TransactionId", wireType)
+ }
+ m.TransactionId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TransactionId |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Options == nil {
+ m.Options = &ExecuteOptions{}
+ }
+ if err := m.Options.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 7:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ReservedId", wireType)
+ }
+ m.ReservedId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.ReservedId |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ExecuteResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExecuteResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExecuteResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Result", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Result == nil {
+ m.Result = &QueryResult{}
+ }
+ if err := m.Result.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ResultWithError) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ResultWithError: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ResultWithError: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Error == nil {
+ m.Error = &vtrpc.RPCError{}
+ }
+ if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Result", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Result == nil {
+ m.Result = &QueryResult{}
+ }
+ if err := m.Result.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ExecuteBatchRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExecuteBatchRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExecuteBatchRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EffectiveCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.EffectiveCallerId == nil {
+ m.EffectiveCallerId = &vtrpc.CallerID{}
+ }
+ if err := m.EffectiveCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImmediateCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ImmediateCallerId == nil {
+ m.ImmediateCallerId = &VTGateCallerID{}
+ }
+ if err := m.ImmediateCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &Target{}
+ }
+ if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Queries", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Queries = append(m.Queries, &BoundQuery{})
+ if err := m.Queries[len(m.Queries)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 5:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field AsTransaction", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.AsTransaction = bool(v != 0)
+ case 6:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TransactionId", wireType)
+ }
+ m.TransactionId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TransactionId |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Options == nil {
+ m.Options = &ExecuteOptions{}
+ }
+ if err := m.Options.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ExecuteBatchResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExecuteBatchResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExecuteBatchResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Results", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Results = append(m.Results, &QueryResult{})
+ if err := m.Results[len(m.Results)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StreamExecuteRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StreamExecuteRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StreamExecuteRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EffectiveCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.EffectiveCallerId == nil {
+ m.EffectiveCallerId = &vtrpc.CallerID{}
+ }
+ if err := m.EffectiveCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImmediateCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ImmediateCallerId == nil {
+ m.ImmediateCallerId = &VTGateCallerID{}
+ }
+ if err := m.ImmediateCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &Target{}
+ }
+ if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Query", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Query == nil {
+ m.Query = &BoundQuery{}
+ }
+ if err := m.Query.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Options == nil {
+ m.Options = &ExecuteOptions{}
+ }
+ if err := m.Options.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 6:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TransactionId", wireType)
+ }
+ m.TransactionId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TransactionId |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StreamExecuteResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StreamExecuteResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StreamExecuteResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Result", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Result == nil {
+ m.Result = &QueryResult{}
+ }
+ if err := m.Result.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *BeginRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: BeginRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: BeginRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EffectiveCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.EffectiveCallerId == nil {
+ m.EffectiveCallerId = &vtrpc.CallerID{}
+ }
+ if err := m.EffectiveCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImmediateCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ImmediateCallerId == nil {
+ m.ImmediateCallerId = &VTGateCallerID{}
+ }
+ if err := m.ImmediateCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &Target{}
+ }
+ if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Options == nil {
+ m.Options = &ExecuteOptions{}
+ }
+ if err := m.Options.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *BeginResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: BeginResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: BeginResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TransactionId", wireType)
+ }
+ m.TransactionId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TransactionId |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletAlias", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.TabletAlias == nil {
+ m.TabletAlias = &topodata.TabletAlias{}
+ }
+ if err := m.TabletAlias.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *CommitRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: CommitRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: CommitRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EffectiveCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.EffectiveCallerId == nil {
+ m.EffectiveCallerId = &vtrpc.CallerID{}
+ }
+ if err := m.EffectiveCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImmediateCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ImmediateCallerId == nil {
+ m.ImmediateCallerId = &VTGateCallerID{}
+ }
+ if err := m.ImmediateCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &Target{}
+ }
+ if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TransactionId", wireType)
+ }
+ m.TransactionId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TransactionId |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *CommitResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: CommitResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: CommitResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ReservedId", wireType)
+ }
+ m.ReservedId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.ReservedId |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RollbackRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RollbackRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RollbackRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EffectiveCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.EffectiveCallerId == nil {
+ m.EffectiveCallerId = &vtrpc.CallerID{}
+ }
+ if err := m.EffectiveCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImmediateCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ImmediateCallerId == nil {
+ m.ImmediateCallerId = &VTGateCallerID{}
+ }
+ if err := m.ImmediateCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &Target{}
+ }
+ if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TransactionId", wireType)
+ }
+ m.TransactionId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TransactionId |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RollbackResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RollbackResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RollbackResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ReservedId", wireType)
+ }
+ m.ReservedId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.ReservedId |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PrepareRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PrepareRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PrepareRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EffectiveCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.EffectiveCallerId == nil {
+ m.EffectiveCallerId = &vtrpc.CallerID{}
+ }
+ if err := m.EffectiveCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImmediateCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ImmediateCallerId == nil {
+ m.ImmediateCallerId = &VTGateCallerID{}
+ }
+ if err := m.ImmediateCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &Target{}
+ }
+ if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TransactionId", wireType)
+ }
+ m.TransactionId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TransactionId |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Dtid", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Dtid = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PrepareResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PrepareResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PrepareResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *CommitPreparedRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: CommitPreparedRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: CommitPreparedRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EffectiveCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.EffectiveCallerId == nil {
+ m.EffectiveCallerId = &vtrpc.CallerID{}
+ }
+ if err := m.EffectiveCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImmediateCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ImmediateCallerId == nil {
+ m.ImmediateCallerId = &VTGateCallerID{}
+ }
+ if err := m.ImmediateCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &Target{}
+ }
+ if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Dtid", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Dtid = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *CommitPreparedResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: CommitPreparedResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: CommitPreparedResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RollbackPreparedRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RollbackPreparedRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RollbackPreparedRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EffectiveCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.EffectiveCallerId == nil {
+ m.EffectiveCallerId = &vtrpc.CallerID{}
+ }
+ if err := m.EffectiveCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImmediateCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ImmediateCallerId == nil {
+ m.ImmediateCallerId = &VTGateCallerID{}
+ }
+ if err := m.ImmediateCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &Target{}
+ }
+ if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TransactionId", wireType)
+ }
+ m.TransactionId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TransactionId |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Dtid", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Dtid = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RollbackPreparedResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RollbackPreparedResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RollbackPreparedResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *CreateTransactionRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: CreateTransactionRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: CreateTransactionRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EffectiveCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.EffectiveCallerId == nil {
+ m.EffectiveCallerId = &vtrpc.CallerID{}
+ }
+ if err := m.EffectiveCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImmediateCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ImmediateCallerId == nil {
+ m.ImmediateCallerId = &VTGateCallerID{}
+ }
+ if err := m.ImmediateCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &Target{}
+ }
+ if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Dtid", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Dtid = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Participants", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Participants = append(m.Participants, &Target{})
+ if err := m.Participants[len(m.Participants)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *CreateTransactionResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: CreateTransactionResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: CreateTransactionResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StartCommitRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StartCommitRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StartCommitRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EffectiveCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.EffectiveCallerId == nil {
+ m.EffectiveCallerId = &vtrpc.CallerID{}
+ }
+ if err := m.EffectiveCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImmediateCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ImmediateCallerId == nil {
+ m.ImmediateCallerId = &VTGateCallerID{}
+ }
+ if err := m.ImmediateCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &Target{}
+ }
+ if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TransactionId", wireType)
+ }
+ m.TransactionId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TransactionId |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Dtid", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Dtid = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StartCommitResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StartCommitResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StartCommitResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *SetRollbackRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SetRollbackRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SetRollbackRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EffectiveCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.EffectiveCallerId == nil {
+ m.EffectiveCallerId = &vtrpc.CallerID{}
+ }
+ if err := m.EffectiveCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImmediateCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ImmediateCallerId == nil {
+ m.ImmediateCallerId = &VTGateCallerID{}
+ }
+ if err := m.ImmediateCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &Target{}
+ }
+ if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TransactionId", wireType)
+ }
+ m.TransactionId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TransactionId |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Dtid", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Dtid = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *SetRollbackResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SetRollbackResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SetRollbackResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ConcludeTransactionRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ConcludeTransactionRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ConcludeTransactionRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EffectiveCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.EffectiveCallerId == nil {
+ m.EffectiveCallerId = &vtrpc.CallerID{}
+ }
+ if err := m.EffectiveCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImmediateCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ImmediateCallerId == nil {
+ m.ImmediateCallerId = &VTGateCallerID{}
+ }
+ if err := m.ImmediateCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &Target{}
+ }
+ if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Dtid", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Dtid = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ConcludeTransactionResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ConcludeTransactionResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ConcludeTransactionResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ReadTransactionRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ReadTransactionRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ReadTransactionRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EffectiveCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.EffectiveCallerId == nil {
+ m.EffectiveCallerId = &vtrpc.CallerID{}
+ }
+ if err := m.EffectiveCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImmediateCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ImmediateCallerId == nil {
+ m.ImmediateCallerId = &VTGateCallerID{}
+ }
+ if err := m.ImmediateCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &Target{}
+ }
+ if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Dtid", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Dtid = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ReadTransactionResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ReadTransactionResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ReadTransactionResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Metadata", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Metadata == nil {
+ m.Metadata = &TransactionMetadata{}
+ }
+ if err := m.Metadata.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *BeginExecuteRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: BeginExecuteRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: BeginExecuteRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EffectiveCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.EffectiveCallerId == nil {
+ m.EffectiveCallerId = &vtrpc.CallerID{}
+ }
+ if err := m.EffectiveCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImmediateCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ImmediateCallerId == nil {
+ m.ImmediateCallerId = &VTGateCallerID{}
+ }
+ if err := m.ImmediateCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &Target{}
+ }
+ if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Query", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Query == nil {
+ m.Query = &BoundQuery{}
+ }
+ if err := m.Query.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Options == nil {
+ m.Options = &ExecuteOptions{}
+ }
+ if err := m.Options.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 6:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ReservedId", wireType)
+ }
+ m.ReservedId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.ReservedId |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PreQueries", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.PreQueries = append(m.PreQueries, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *BeginExecuteResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: BeginExecuteResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: BeginExecuteResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Error == nil {
+ m.Error = &vtrpc.RPCError{}
+ }
+ if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Result", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Result == nil {
+ m.Result = &QueryResult{}
+ }
+ if err := m.Result.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TransactionId", wireType)
+ }
+ m.TransactionId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TransactionId |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletAlias", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.TabletAlias == nil {
+ m.TabletAlias = &topodata.TabletAlias{}
+ }
+ if err := m.TabletAlias.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *BeginExecuteBatchRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: BeginExecuteBatchRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: BeginExecuteBatchRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EffectiveCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.EffectiveCallerId == nil {
+ m.EffectiveCallerId = &vtrpc.CallerID{}
+ }
+ if err := m.EffectiveCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImmediateCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ImmediateCallerId == nil {
+ m.ImmediateCallerId = &VTGateCallerID{}
+ }
+ if err := m.ImmediateCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &Target{}
+ }
+ if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Queries", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Queries = append(m.Queries, &BoundQuery{})
+ if err := m.Queries[len(m.Queries)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 5:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field AsTransaction", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.AsTransaction = bool(v != 0)
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Options == nil {
+ m.Options = &ExecuteOptions{}
+ }
+ if err := m.Options.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *BeginExecuteBatchResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: BeginExecuteBatchResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: BeginExecuteBatchResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Error == nil {
+ m.Error = &vtrpc.RPCError{}
+ }
+ if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Results", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Results = append(m.Results, &QueryResult{})
+ if err := m.Results[len(m.Results)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TransactionId", wireType)
+ }
+ m.TransactionId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TransactionId |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletAlias", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.TabletAlias == nil {
+ m.TabletAlias = &topodata.TabletAlias{}
+ }
+ if err := m.TabletAlias.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MessageStreamRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MessageStreamRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MessageStreamRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EffectiveCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.EffectiveCallerId == nil {
+ m.EffectiveCallerId = &vtrpc.CallerID{}
+ }
+ if err := m.EffectiveCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImmediateCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ImmediateCallerId == nil {
+ m.ImmediateCallerId = &VTGateCallerID{}
+ }
+ if err := m.ImmediateCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &Target{}
+ }
+ if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MessageStreamResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MessageStreamResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MessageStreamResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Result", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Result == nil {
+ m.Result = &QueryResult{}
+ }
+ if err := m.Result.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MessageAckRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MessageAckRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MessageAckRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EffectiveCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.EffectiveCallerId == nil {
+ m.EffectiveCallerId = &vtrpc.CallerID{}
+ }
+ if err := m.EffectiveCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImmediateCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ImmediateCallerId == nil {
+ m.ImmediateCallerId = &VTGateCallerID{}
+ }
+ if err := m.ImmediateCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &Target{}
+ }
+ if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Ids", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Ids = append(m.Ids, &Value{})
+ if err := m.Ids[len(m.Ids)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MessageAckResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MessageAckResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MessageAckResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Result", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Result == nil {
+ m.Result = &QueryResult{}
+ }
+ if err := m.Result.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ReserveExecuteRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ReserveExecuteRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ReserveExecuteRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EffectiveCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.EffectiveCallerId == nil {
+ m.EffectiveCallerId = &vtrpc.CallerID{}
+ }
+ if err := m.EffectiveCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImmediateCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ImmediateCallerId == nil {
+ m.ImmediateCallerId = &VTGateCallerID{}
+ }
+ if err := m.ImmediateCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &Target{}
+ }
+ if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Query", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Query == nil {
+ m.Query = &BoundQuery{}
+ }
+ if err := m.Query.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 5:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TransactionId", wireType)
+ }
+ m.TransactionId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TransactionId |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Options == nil {
+ m.Options = &ExecuteOptions{}
+ }
+ if err := m.Options.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PreQueries", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.PreQueries = append(m.PreQueries, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ReserveExecuteResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ReserveExecuteResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ReserveExecuteResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Error == nil {
+ m.Error = &vtrpc.RPCError{}
+ }
+ if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Result", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Result == nil {
+ m.Result = &QueryResult{}
+ }
+ if err := m.Result.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ReservedId", wireType)
+ }
+ m.ReservedId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.ReservedId |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletAlias", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.TabletAlias == nil {
+ m.TabletAlias = &topodata.TabletAlias{}
+ }
+ if err := m.TabletAlias.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ReserveBeginExecuteRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ReserveBeginExecuteRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ReserveBeginExecuteRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EffectiveCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.EffectiveCallerId == nil {
+ m.EffectiveCallerId = &vtrpc.CallerID{}
+ }
+ if err := m.EffectiveCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImmediateCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ImmediateCallerId == nil {
+ m.ImmediateCallerId = &VTGateCallerID{}
+ }
+ if err := m.ImmediateCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &Target{}
+ }
+ if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Query", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Query == nil {
+ m.Query = &BoundQuery{}
+ }
+ if err := m.Query.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Options == nil {
+ m.Options = &ExecuteOptions{}
+ }
+ if err := m.Options.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PreQueries", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.PreQueries = append(m.PreQueries, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ReserveBeginExecuteResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ReserveBeginExecuteResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ReserveBeginExecuteResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Error == nil {
+ m.Error = &vtrpc.RPCError{}
+ }
+ if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Result", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Result == nil {
+ m.Result = &QueryResult{}
+ }
+ if err := m.Result.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TransactionId", wireType)
+ }
+ m.TransactionId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TransactionId |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ReservedId", wireType)
+ }
+ m.ReservedId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.ReservedId |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletAlias", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.TabletAlias == nil {
+ m.TabletAlias = &topodata.TabletAlias{}
+ }
+ if err := m.TabletAlias.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ReleaseRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ReleaseRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ReleaseRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EffectiveCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.EffectiveCallerId == nil {
+ m.EffectiveCallerId = &vtrpc.CallerID{}
+ }
+ if err := m.EffectiveCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ImmediateCallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ImmediateCallerId == nil {
+ m.ImmediateCallerId = &VTGateCallerID{}
+ }
+ if err := m.ImmediateCallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &Target{}
+ }
+ if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TransactionId", wireType)
+ }
+ m.TransactionId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TransactionId |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 5:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ReservedId", wireType)
+ }
+ m.ReservedId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.ReservedId |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ReleaseResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ReleaseResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ReleaseResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StreamHealthRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StreamHealthRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StreamHealthRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RealtimeStats) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RealtimeStats: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RealtimeStats: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field HealthError", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.HealthError = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SecondsBehindMaster", wireType)
+ }
+ m.SecondsBehindMaster = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.SecondsBehindMaster |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field BinlogPlayersCount", wireType)
+ }
+ m.BinlogPlayersCount = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.BinlogPlayersCount |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SecondsBehindMasterFilteredReplication", wireType)
+ }
+ m.SecondsBehindMasterFilteredReplication = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.SecondsBehindMasterFilteredReplication |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 5:
+ if wireType != 1 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CpuUsage", wireType)
+ }
+ var v uint64
+ if (iNdEx + 8) > l {
+ return io.ErrUnexpectedEOF
+ }
+ v = uint64(encoding_binary.LittleEndian.Uint64(dAtA[iNdEx:]))
+ iNdEx += 8
+ m.CpuUsage = float64(math.Float64frombits(v))
+ case 6:
+ if wireType != 1 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Qps", wireType)
+ }
+ var v uint64
+ if (iNdEx + 8) > l {
+ return io.ErrUnexpectedEOF
+ }
+ v = uint64(encoding_binary.LittleEndian.Uint64(dAtA[iNdEx:]))
+ iNdEx += 8
+ m.Qps = float64(math.Float64frombits(v))
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *AggregateStats) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AggregateStats: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AggregateStats: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field HealthyTabletCount", wireType)
+ }
+ m.HealthyTabletCount = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.HealthyTabletCount |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field UnhealthyTabletCount", wireType)
+ }
+ m.UnhealthyTabletCount = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.UnhealthyTabletCount |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SecondsBehindMasterMin", wireType)
+ }
+ m.SecondsBehindMasterMin = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.SecondsBehindMasterMin |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SecondsBehindMasterMax", wireType)
+ }
+ m.SecondsBehindMasterMax = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.SecondsBehindMasterMax |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StreamHealthResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StreamHealthResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StreamHealthResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &Target{}
+ }
+ if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Serving", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Serving = bool(v != 0)
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletExternallyReparentedTimestamp", wireType)
+ }
+ m.TabletExternallyReparentedTimestamp = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TabletExternallyReparentedTimestamp |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RealtimeStats", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.RealtimeStats == nil {
+ m.RealtimeStats = &RealtimeStats{}
+ }
+ if err := m.RealtimeStats.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletAlias", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.TabletAlias == nil {
+ m.TabletAlias = &topodata.TabletAlias{}
+ }
+ if err := m.TabletAlias.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *TransactionMetadata) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: TransactionMetadata: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: TransactionMetadata: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Dtid", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Dtid = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field State", wireType)
+ }
+ m.State = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.State |= TransactionState(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TimeCreated", wireType)
+ }
+ m.TimeCreated = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TimeCreated |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Participants", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthQuery
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Participants = append(m.Participants, &Target{})
+ if err := m.Participants[len(m.Participants)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipQuery(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthQuery
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func skipQuery(dAtA []byte) (n int, err error) {
+ l := len(dAtA)
+ iNdEx := 0
+ depth := 0
+ for iNdEx < l {
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ wireType := int(wire & 0x7)
+ switch wireType {
+ case 0:
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ iNdEx++
+ if dAtA[iNdEx-1] < 0x80 {
+ break
+ }
+ }
+ case 1:
+ iNdEx += 8
+ case 2:
+ var length int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowQuery
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ length |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if length < 0 {
+ return 0, ErrInvalidLengthQuery
+ }
+ iNdEx += length
+ case 3:
+ depth++
+ case 4:
+ if depth == 0 {
+ return 0, ErrUnexpectedEndOfGroupQuery
+ }
+ depth--
+ case 5:
+ iNdEx += 4
+ default:
+ return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
+ }
+ if iNdEx < 0 {
+ return 0, ErrInvalidLengthQuery
+ }
+ if depth == 0 {
+ return iNdEx, nil
+ }
+ }
+ return 0, io.ErrUnexpectedEOF
+}
+
+var (
+ ErrInvalidLengthQuery = fmt.Errorf("proto: negative length found during unmarshaling")
+ ErrIntOverflowQuery = fmt.Errorf("proto: integer overflow")
+ ErrUnexpectedEndOfGroupQuery = fmt.Errorf("proto: unexpected end of group")
+)
diff --git a/go/vt/proto/queryservice/queryservice.pb.go b/go/vt/proto/queryservice/queryservice.pb.go
index 7553788d1cc..f3ed3b94cd5 100644
--- a/go/vt/proto/queryservice/queryservice.pb.go
+++ b/go/vt/proto/queryservice/queryservice.pb.go
@@ -1,4 +1,4 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: queryservice.proto
package queryservice
@@ -12,7 +12,6 @@ import (
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
-
binlogdata "vitess.io/vitess/go/vt/proto/binlogdata"
query "vitess.io/vitess/go/vt/proto/query"
)
@@ -31,45 +30,46 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
func init() { proto.RegisterFile("queryservice.proto", fileDescriptor_4bd2dde8711f22e3) }
var fileDescriptor_4bd2dde8711f22e3 = []byte{
- // 598 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x55, 0x4d, 0x6f, 0xd3, 0x40,
- 0x10, 0x85, 0x43, 0x1b, 0xb4, 0x09, 0xa1, 0x6c, 0x29, 0x50, 0x27, 0xa4, 0x4d, 0x6e, 0x08, 0x29,
- 0x41, 0x80, 0x84, 0x54, 0x89, 0x43, 0x13, 0x51, 0x81, 0x10, 0x5f, 0x2e, 0x54, 0x08, 0x24, 0xa4,
- 0x8d, 0x33, 0x0a, 0x56, 0x1d, 0x6f, 0xea, 0x5d, 0xa7, 0xf0, 0xdb, 0xb9, 0x54, 0xb1, 0x3d, 0xe3,
- 0xdd, 0x8d, 0x9d, 0x5b, 0xe7, 0xbd, 0x99, 0xd7, 0xc9, 0x8c, 0xe7, 0x2d, 0xe3, 0x57, 0x29, 0x24,
- 0xff, 0x14, 0x24, 0xab, 0x30, 0x80, 0xe1, 0x32, 0x91, 0x5a, 0xf2, 0x96, 0x89, 0x79, 0xcd, 0x2c,
- 0xca, 0x29, 0x6f, 0x6f, 0x1a, 0xc6, 0x91, 0x9c, 0xcf, 0x84, 0x16, 0x39, 0xf2, 0xe2, 0x7f, 0x9b,
- 0xed, 0x7c, 0x5d, 0x67, 0xf0, 0x13, 0xd6, 0x78, 0xfb, 0x17, 0x82, 0x54, 0x03, 0x3f, 0x18, 0xe6,
- 0x45, 0x45, 0xec, 0xc3, 0x55, 0x0a, 0x4a, 0x7b, 0x0f, 0x5d, 0x58, 0x2d, 0x65, 0xac, 0x60, 0x70,
- 0x8b, 0xbf, 0x67, 0xad, 0x02, 0x1c, 0x0b, 0x1d, 0xfc, 0xe1, 0x9e, 0x9d, 0x99, 0x81, 0xa8, 0xd2,
- 0xa9, 0xe4, 0x48, 0xea, 0x13, 0xbb, 0x7b, 0xae, 0x13, 0x10, 0x0b, 0x6c, 0x06, 0xf3, 0x2d, 0x14,
- 0xc5, 0xba, 0xd5, 0x24, 0xaa, 0x3d, 0xbf, 0xcd, 0x5f, 0xb1, 0x9d, 0x31, 0xcc, 0xc3, 0x98, 0xef,
- 0x17, 0xa9, 0x59, 0x84, 0xf5, 0x0f, 0x6c, 0x90, 0xba, 0x78, 0xcd, 0x76, 0x27, 0x72, 0xb1, 0x08,
- 0x35, 0xc7, 0x8c, 0x3c, 0xc4, 0xba, 0x03, 0x07, 0xa5, 0xc2, 0x37, 0xec, 0x8e, 0x2f, 0xa3, 0x68,
- 0x2a, 0x82, 0x4b, 0x8e, 0xf3, 0x42, 0x00, 0x8b, 0x1f, 0x6d, 0xe0, 0x54, 0x7e, 0xc2, 0x1a, 0x5f,
- 0x12, 0x58, 0x8a, 0xa4, 0x5c, 0x42, 0x11, 0xbb, 0x4b, 0x20, 0x98, 0x6a, 0x3f, 0xb3, 0x76, 0xde,
- 0x4e, 0x41, 0xcd, 0x78, 0xd7, 0xea, 0x12, 0x61, 0x54, 0x7a, 0x52, 0xc3, 0x92, 0xe0, 0x77, 0xb6,
- 0x87, 0x2d, 0x92, 0x64, 0xcf, 0xe9, 0xdd, 0x15, 0x3d, 0xaa, 0xe5, 0x49, 0xf6, 0x07, 0xbb, 0x3f,
- 0x49, 0x40, 0x68, 0xf8, 0x96, 0x88, 0x58, 0x89, 0x40, 0x87, 0x32, 0xe6, 0x58, 0xb7, 0xc1, 0xa0,
- 0xf0, 0x71, 0x7d, 0x02, 0x29, 0x9f, 0xb1, 0xe6, 0xb9, 0x16, 0x89, 0x2e, 0x56, 0x77, 0x48, 0x1f,
- 0x07, 0x61, 0xa8, 0xe6, 0x55, 0x51, 0x96, 0x0e, 0x68, 0xda, 0x23, 0xe9, 0x94, 0xd8, 0x86, 0x8e,
- 0x49, 0x91, 0xce, 0x6f, 0xb6, 0x3f, 0x91, 0x71, 0x10, 0xa5, 0x33, 0xeb, 0xb7, 0xf6, 0x69, 0xf0,
- 0x1b, 0x1c, 0xea, 0x0e, 0xb6, 0xa5, 0x90, 0xbe, 0xcf, 0xee, 0xf9, 0x20, 0x66, 0xa6, 0x36, 0x2e,
- 0xd5, 0xc1, 0x51, 0xb7, 0x57, 0x47, 0x9b, 0xa7, 0x9c, 0x1d, 0x03, 0x9e, 0x9f, 0x67, 0x5e, 0x88,
- 0x73, 0x7d, 0x9d, 0x4a, 0xce, 0x5c, 0xb4, 0xc9, 0xe4, 0xd6, 0x70, 0x54, 0x51, 0x63, 0xf9, 0xc3,
- 0x71, 0x7d, 0x82, 0x69, 0x12, 0x1f, 0x41, 0x29, 0x31, 0x87, 0xfc, 0xf0, 0xc9, 0x24, 0x2c, 0xd4,
- 0x35, 0x09, 0x87, 0x34, 0x4c, 0x62, 0xc2, 0x58, 0x41, 0x9e, 0x06, 0x97, 0xfc, 0xb1, 0x9d, 0x7f,
- 0x5a, 0xae, 0xfb, 0xb0, 0x82, 0x31, 0xef, 0xcf, 0x87, 0xb5, 0xed, 0x02, 0xce, 0xae, 0x4b, 0xd3,
- 0x36, 0x61, 0xf7, 0xfe, 0x5c, 0xd6, 0xfc, 0x7c, 0x0a, 0xce, 0xda, 0x48, 0xdf, 0xae, 0xab, 0x5a,
- 0xcc, 0x60, 0x5b, 0x8a, 0x69, 0x36, 0x3e, 0x44, 0x20, 0x54, 0x69, 0x36, 0x45, 0xec, 0x9a, 0x0d,
- 0xc1, 0x54, 0xfb, 0x81, 0xb5, 0xf2, 0x39, 0xbe, 0x03, 0x11, 0xe9, 0xd2, 0xf1, 0x4d, 0xd0, 0xfd,
- 0x4c, 0x6c, 0xce, 0x18, 0xff, 0x19, 0x6b, 0x5c, 0x14, 0x8b, 0xf4, 0x86, 0xc6, 0x13, 0x75, 0x61,
- 0xef, 0xb1, 0x53, 0xc9, 0x19, 0x3a, 0x3e, 0x6b, 0x22, 0x2c, 0xaf, 0x15, 0xef, 0x55, 0xe5, 0xcb,
- 0x6b, 0x55, 0x7a, 0x55, 0x1d, 0x6f, 0x68, 0xfe, 0x62, 0xed, 0xf2, 0x5f, 0xa5, 0x91, 0x56, 0xbc,
- 0x5f, 0xdd, 0xc6, 0x9a, 0x2b, 0xe7, 0xbf, 0x25, 0xa5, 0x14, 0x1f, 0x3f, 0xfb, 0xf9, 0x74, 0x15,
- 0x6a, 0x50, 0x6a, 0x18, 0xca, 0x51, 0xfe, 0xd7, 0x68, 0x2e, 0x47, 0x2b, 0x3d, 0xca, 0x5e, 0xe7,
- 0x91, 0xf9, 0x92, 0x4f, 0x77, 0x33, 0xec, 0xe5, 0x4d, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe2, 0x30,
- 0x29, 0x02, 0xf4, 0x07, 0x00, 0x00,
+ // 622 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x55, 0xcd, 0x6e, 0xd3, 0x40,
+ 0x10, 0x6e, 0x0e, 0x6d, 0xd0, 0x26, 0x84, 0xb2, 0xa5, 0x40, 0x9d, 0xe0, 0x36, 0xb9, 0x71, 0x49,
+ 0x10, 0x20, 0x21, 0x15, 0x71, 0x68, 0x22, 0x2a, 0x10, 0xe2, 0xcf, 0x85, 0x0a, 0x81, 0x84, 0xb4,
+ 0x71, 0x46, 0xc1, 0xaa, 0xe3, 0x4d, 0xbd, 0xeb, 0x14, 0xde, 0x84, 0x47, 0xe2, 0xc8, 0x23, 0xa0,
+ 0xf0, 0x18, 0x5c, 0x50, 0x6c, 0xcf, 0x7a, 0x77, 0x63, 0xe7, 0xd6, 0xf9, 0xbe, 0x99, 0xaf, 0x93,
+ 0x19, 0xcf, 0xb7, 0x84, 0x5e, 0x26, 0x10, 0xff, 0x10, 0x10, 0x2f, 0x02, 0x1f, 0xfa, 0xf3, 0x98,
+ 0x4b, 0x4e, 0x9b, 0x3a, 0xe6, 0x34, 0xd2, 0x28, 0xa3, 0x9c, 0xdd, 0x71, 0x10, 0x85, 0x7c, 0x3a,
+ 0x61, 0x92, 0x65, 0xc8, 0xc3, 0x7f, 0x2d, 0xb2, 0xfd, 0x7e, 0x95, 0x41, 0x8f, 0x49, 0xfd, 0xf9,
+ 0x77, 0xf0, 0x13, 0x09, 0x74, 0xbf, 0x9f, 0x15, 0xe5, 0xb1, 0x07, 0x97, 0x09, 0x08, 0xe9, 0xdc,
+ 0xb6, 0x61, 0x31, 0xe7, 0x91, 0x80, 0xde, 0x16, 0x7d, 0x49, 0x9a, 0x39, 0x38, 0x64, 0xd2, 0xff,
+ 0x46, 0x1d, 0x33, 0x33, 0x05, 0x51, 0xa5, 0x5d, 0xca, 0x29, 0xa9, 0x37, 0xe4, 0xfa, 0x99, 0x8c,
+ 0x81, 0xcd, 0xb0, 0x19, 0xcc, 0x37, 0x50, 0x14, 0xeb, 0x94, 0x93, 0xa8, 0xf6, 0xa0, 0x46, 0x1f,
+ 0x93, 0xed, 0x21, 0x4c, 0x83, 0x88, 0xee, 0xe5, 0xa9, 0x69, 0x84, 0xf5, 0xb7, 0x4c, 0x50, 0x75,
+ 0xf1, 0x84, 0xec, 0x8c, 0xf8, 0x6c, 0x16, 0x48, 0x8a, 0x19, 0x59, 0x88, 0x75, 0xfb, 0x16, 0xaa,
+ 0x0a, 0x9f, 0x91, 0x6b, 0x1e, 0x0f, 0xc3, 0x31, 0xf3, 0x2f, 0x28, 0xce, 0x0b, 0x01, 0x2c, 0xbe,
+ 0xb3, 0x86, 0xab, 0xf2, 0x63, 0x52, 0x7f, 0x17, 0xc3, 0x9c, 0xc5, 0xc5, 0x12, 0xf2, 0xd8, 0x5e,
+ 0x82, 0x82, 0x55, 0xed, 0x5b, 0xd2, 0xca, 0xda, 0xc9, 0xa9, 0x09, 0xed, 0x18, 0x5d, 0x22, 0x8c,
+ 0x4a, 0xf7, 0x2a, 0x58, 0x25, 0xf8, 0x91, 0xec, 0x62, 0x8b, 0x4a, 0xd2, 0xb5, 0x7a, 0xb7, 0x45,
+ 0x0f, 0x2b, 0x79, 0x25, 0xfb, 0x89, 0xdc, 0x1c, 0xc5, 0xc0, 0x24, 0x7c, 0x88, 0x59, 0x24, 0x98,
+ 0x2f, 0x03, 0x1e, 0x51, 0xac, 0x5b, 0x63, 0x50, 0xf8, 0xa8, 0x3a, 0x41, 0x29, 0x9f, 0x92, 0xc6,
+ 0x99, 0x64, 0xb1, 0xcc, 0x57, 0x77, 0xa0, 0x3e, 0x0e, 0x85, 0xa1, 0x9a, 0x53, 0x46, 0x19, 0x3a,
+ 0x20, 0xd5, 0x1e, 0x95, 0x4e, 0x81, 0xad, 0xe9, 0xe8, 0x94, 0xd2, 0xf9, 0x4a, 0xf6, 0x46, 0x3c,
+ 0xf2, 0xc3, 0x64, 0x62, 0xfc, 0xd6, 0xae, 0x1a, 0xfc, 0x1a, 0x87, 0xba, 0xbd, 0x4d, 0x29, 0x4a,
+ 0xdf, 0x23, 0x37, 0x3c, 0x60, 0x13, 0x5d, 0x1b, 0x97, 0x6a, 0xe1, 0xa8, 0xeb, 0x56, 0xd1, 0xfa,
+ 0x29, 0xa7, 0xc7, 0x80, 0xe7, 0xe7, 0xe8, 0x17, 0x62, 0x5d, 0x5f, 0xbb, 0x94, 0xd3, 0x17, 0xad,
+ 0x33, 0x99, 0x35, 0x1c, 0x96, 0xd4, 0x18, 0xfe, 0x70, 0x54, 0x9d, 0xa0, 0x9b, 0xc4, 0x6b, 0x10,
+ 0x82, 0x4d, 0x21, 0x3b, 0x7c, 0x65, 0x12, 0x06, 0x6a, 0x9b, 0x84, 0x45, 0x6a, 0x26, 0x31, 0x22,
+ 0x24, 0x27, 0x4f, 0xfc, 0x0b, 0x7a, 0xd7, 0xcc, 0x3f, 0x29, 0xd6, 0x7d, 0x50, 0xc2, 0xe8, 0xf7,
+ 0xe7, 0xc1, 0xca, 0x76, 0x01, 0x67, 0xd7, 0x51, 0xd3, 0xd6, 0x61, 0xfb, 0xfe, 0x6c, 0x56, 0xff,
+ 0x7c, 0x72, 0xce, 0xd8, 0x48, 0xd7, 0xac, 0x2b, 0x5b, 0x4c, 0x6f, 0x53, 0x8a, 0x6e, 0x36, 0x1e,
+ 0x84, 0xc0, 0x44, 0x61, 0x36, 0x79, 0x6c, 0x9b, 0x8d, 0x82, 0x55, 0xed, 0x2b, 0xd2, 0xcc, 0xe6,
+ 0xf8, 0x02, 0x58, 0x28, 0x0b, 0xc7, 0xd7, 0x41, 0xfb, 0x33, 0x31, 0x39, 0x6d, 0xfc, 0xa7, 0xa4,
+ 0x7e, 0x9e, 0x2f, 0xd2, 0xe9, 0x6b, 0x4f, 0xd4, 0xb9, 0xb9, 0xc7, 0x76, 0x29, 0xa7, 0xe9, 0x78,
+ 0xa4, 0x81, 0x30, 0xbf, 0x12, 0xd4, 0x2d, 0xcb, 0xe7, 0x57, 0xa2, 0xf0, 0xaa, 0x2a, 0x5e, 0xd3,
+ 0xfc, 0x42, 0x5a, 0xc5, 0xbf, 0x4a, 0x42, 0x29, 0x68, 0xb7, 0xbc, 0x8d, 0x15, 0x57, 0xcc, 0x7f,
+ 0x43, 0x4a, 0x21, 0x3e, 0x7c, 0xfa, 0x6b, 0xe9, 0xd6, 0x7e, 0x2f, 0xdd, 0xda, 0x9f, 0xa5, 0x5b,
+ 0xfb, 0xf9, 0xd7, 0xdd, 0xfa, 0x7c, 0x7f, 0x11, 0x48, 0x10, 0xa2, 0x1f, 0xf0, 0x41, 0xf6, 0xd7,
+ 0x60, 0xca, 0x07, 0x0b, 0x39, 0x48, 0x5f, 0xeb, 0x81, 0xfe, 0xb2, 0x8f, 0x77, 0x52, 0xec, 0xd1,
+ 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x33, 0x99, 0xf7, 0xaa, 0x04, 0x08, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
diff --git a/go/vt/proto/replicationdata/replicationdata.pb.go b/go/vt/proto/replicationdata/replicationdata.pb.go
index ab6af754b31..71f3d05669b 100644
--- a/go/vt/proto/replicationdata/replicationdata.pb.go
+++ b/go/vt/proto/replicationdata/replicationdata.pb.go
@@ -1,11 +1,13 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: replicationdata.proto
package replicationdata
import (
fmt "fmt"
+ io "io"
math "math"
+ math_bits "math/bits"
proto "github.com/golang/protobuf/proto"
)
@@ -74,18 +76,26 @@ func (*Status) ProtoMessage() {}
func (*Status) Descriptor() ([]byte, []int) {
return fileDescriptor_ee8ee22b8c4b9d06, []int{0}
}
-
func (m *Status) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Status.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Status) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Status.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Status.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Status) XXX_Merge(src proto.Message) {
xxx_messageInfo_Status.Merge(m, src)
}
func (m *Status) XXX_Size() int {
- return xxx_messageInfo_Status.Size(m)
+ return m.Size()
}
func (m *Status) XXX_DiscardUnknown() {
xxx_messageInfo_Status.DiscardUnknown(m)
@@ -193,18 +203,26 @@ func (*StopReplicationStatus) ProtoMessage() {}
func (*StopReplicationStatus) Descriptor() ([]byte, []int) {
return fileDescriptor_ee8ee22b8c4b9d06, []int{1}
}
-
func (m *StopReplicationStatus) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StopReplicationStatus.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *StopReplicationStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StopReplicationStatus.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_StopReplicationStatus.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *StopReplicationStatus) XXX_Merge(src proto.Message) {
xxx_messageInfo_StopReplicationStatus.Merge(m, src)
}
func (m *StopReplicationStatus) XXX_Size() int {
- return xxx_messageInfo_StopReplicationStatus.Size(m)
+ return m.Size()
}
func (m *StopReplicationStatus) XXX_DiscardUnknown() {
xxx_messageInfo_StopReplicationStatus.DiscardUnknown(m)
@@ -241,18 +259,26 @@ func (*MasterStatus) ProtoMessage() {}
func (*MasterStatus) Descriptor() ([]byte, []int) {
return fileDescriptor_ee8ee22b8c4b9d06, []int{2}
}
-
func (m *MasterStatus) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_MasterStatus.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *MasterStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_MasterStatus.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_MasterStatus.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *MasterStatus) XXX_Merge(src proto.Message) {
xxx_messageInfo_MasterStatus.Merge(m, src)
}
func (m *MasterStatus) XXX_Size() int {
- return xxx_messageInfo_MasterStatus.Size(m)
+ return m.Size()
}
func (m *MasterStatus) XXX_DiscardUnknown() {
xxx_messageInfo_MasterStatus.DiscardUnknown(m)
@@ -284,34 +310,1039 @@ func init() {
func init() { proto.RegisterFile("replicationdata.proto", fileDescriptor_ee8ee22b8c4b9d06) }
var fileDescriptor_ee8ee22b8c4b9d06 = []byte{
- // 454 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0xc1, 0x6f, 0xd3, 0x30,
- 0x18, 0xc5, 0x49, 0x47, 0x4b, 0xf7, 0xb5, 0xdb, 0x82, 0xb7, 0x6a, 0x11, 0x17, 0xaa, 0x72, 0x89,
- 0xa6, 0xd1, 0xa0, 0x21, 0x4e, 0x9c, 0x36, 0x86, 0xb4, 0x4a, 0xdd, 0x3a, 0xdc, 0x71, 0x80, 0x8b,
- 0x95, 0xd6, 0x6e, 0x6a, 0x29, 0xe4, 0xcb, 0x6c, 0xa7, 0x68, 0x7f, 0x3b, 0x17, 0x14, 0x3b, 0xeb,
- 0x4a, 0x8a, 0x10, 0xb7, 0xf8, 0xbd, 0x9f, 0x1c, 0x7f, 0xcf, 0xcf, 0xd0, 0x53, 0x22, 0x4f, 0xe5,
- 0x3c, 0x36, 0x12, 0x33, 0x1e, 0x9b, 0x78, 0x98, 0x2b, 0x34, 0x48, 0x0e, 0x6a, 0xf2, 0xe0, 0xd7,
- 0x0e, 0xb4, 0xa6, 0x26, 0x36, 0x85, 0x26, 0xaf, 0xa0, 0x9d, 0xa3, 0x96, 0xa5, 0x15, 0x78, 0x7d,
- 0x2f, 0xdc, 0xa5, 0xeb, 0x35, 0x39, 0x81, 0x97, 0x12, 0x99, 0x59, 0x2a, 0x11, 0x73, 0xa6, 0x8a,
- 0x2c, 0x93, 0x59, 0x12, 0x34, 0xfa, 0x5e, 0xd8, 0xa6, 0x07, 0x12, 0xef, 0xac, 0x4e, 0x9d, 0x4c,
- 0x4e, 0x81, 0xe8, 0xfb, 0xb4, 0x0e, 0xef, 0x58, 0xd8, 0xd7, 0xf7, 0xe9, 0x9f, 0xf4, 0x19, 0xf4,
- 0xb4, 0x98, 0x63, 0xc6, 0x35, 0x9b, 0x89, 0xa5, 0xcc, 0x38, 0xfb, 0x11, 0x6b, 0x23, 0x54, 0xf0,
- 0xbc, 0xef, 0x85, 0x7b, 0xf4, 0xb0, 0x32, 0x2f, 0xac, 0x77, 0x6d, 0x2d, 0xf2, 0x1a, 0x3a, 0x0e,
- 0x62, 0x4b, 0xd4, 0x26, 0x68, 0xda, 0xc3, 0x82, 0x93, 0xae, 0x50, 0x9b, 0x0d, 0x20, 0x47, 0x65,
- 0x82, 0x56, 0xdf, 0x0b, 0x9b, 0x8f, 0xc0, 0x2d, 0x2a, 0x43, 0xde, 0xc1, 0x51, 0x05, 0xcc, 0x31,
- 0xcb, 0xc4, 0xdc, 0x30, 0x25, 0x8c, 0x7a, 0x08, 0x5e, 0x58, 0x92, 0x38, 0xef, 0x93, 0xb3, 0x68,
- 0xe9, 0x94, 0x53, 0x29, 0x91, 0xc6, 0x0f, 0x2c, 0xc5, 0x84, 0xad, 0x73, 0x6a, 0xdb, 0x5f, 0xfb,
- 0xd6, 0x19, 0x63, 0x72, 0xfb, 0x98, 0xd7, 0x1b, 0xd8, 0x5b, 0xc8, 0x54, 0x3c, 0x81, 0xbb, 0x16,
- 0xec, 0x96, 0xe2, 0x1a, 0xfa, 0x00, 0xc7, 0x16, 0xfa, 0xcb, 0xbe, 0x60, 0xf1, 0xa3, 0xd2, 0xa6,
- 0xf5, 0xbd, 0x43, 0xf0, 0xab, 0xb3, 0x6b, 0xa1, 0x56, 0x42, 0x31, 0xc9, 0x83, 0x8e, 0x0d, 0x6b,
- 0xdf, 0xe9, 0x53, 0x2b, 0x8f, 0xf8, 0x46, 0x0c, 0x45, 0x21, 0x79, 0xd0, 0xdd, 0xcc, 0xe9, 0x6b,
- 0x21, 0xf9, 0xe0, 0x27, 0xf4, 0xa6, 0x06, 0x73, 0xfa, 0x54, 0x8a, 0xaa, 0x0b, 0x11, 0xb4, 0x66,
- 0x62, 0x81, 0x4a, 0xd8, 0x26, 0x74, 0xce, 0x8e, 0x87, 0xf5, 0x3e, 0x39, 0x90, 0x56, 0x18, 0x79,
- 0x0b, 0xcd, 0x78, 0x51, 0x5e, 0x5b, 0xe3, 0xdf, 0xbc, 0xa3, 0x06, 0x13, 0xe8, 0xba, 0xbb, 0xfc,
- 0x8f, 0xee, 0x6d, 0x65, 0xd9, 0xd8, 0xce, 0xf2, 0xe4, 0x23, 0x1c, 0xd6, 0x26, 0xb9, 0x46, 0x2e,
- 0x08, 0x81, 0xfd, 0xd1, 0xe4, 0xfc, 0xe6, 0x72, 0xfa, 0x65, 0x7c, 0x77, 0x45, 0x3f, 0x9f, 0x5f,
- 0xfa, 0xcf, 0x88, 0x0f, 0xdd, 0xd1, 0xc4, 0xad, 0x26, 0x37, 0xe3, 0x6f, 0xbe, 0x77, 0x31, 0xfc,
- 0x7e, 0xba, 0x92, 0x46, 0x68, 0x3d, 0x94, 0x18, 0xb9, 0xaf, 0x28, 0xc1, 0x68, 0x65, 0x22, 0xfb,
- 0x6a, 0xa2, 0xda, 0x2c, 0xb3, 0x96, 0x95, 0xdf, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x14, 0xa4,
- 0xdd, 0xf6, 0x65, 0x03, 0x00, 0x00,
+ // 482 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x93, 0x41, 0x6f, 0xd3, 0x3e,
+ 0x18, 0xc6, 0x97, 0xee, 0xdf, 0xfe, 0xbb, 0xb7, 0xdd, 0x16, 0xbc, 0x55, 0x8b, 0x38, 0x94, 0xaa,
+ 0x5c, 0xa2, 0x69, 0x34, 0x68, 0x88, 0x13, 0x12, 0xd2, 0xc6, 0x90, 0x56, 0xa9, 0x5b, 0x47, 0x3a,
+ 0x0e, 0x70, 0xb1, 0xd2, 0xda, 0x6d, 0x2d, 0x85, 0xbc, 0x99, 0xed, 0x14, 0xed, 0x9b, 0xf0, 0x91,
+ 0x38, 0xf2, 0x11, 0x50, 0xf9, 0x18, 0x5c, 0x50, 0xec, 0xac, 0x2b, 0x19, 0x42, 0xdc, 0xe2, 0xe7,
+ 0xf9, 0xc9, 0xf1, 0xfb, 0xf8, 0x31, 0xb4, 0x24, 0x4f, 0x63, 0x31, 0x89, 0xb4, 0xc0, 0x84, 0x45,
+ 0x3a, 0xea, 0xa5, 0x12, 0x35, 0x92, 0xdd, 0x92, 0xdc, 0xfd, 0xb9, 0x09, 0xb5, 0x91, 0x8e, 0x74,
+ 0xa6, 0xc8, 0x63, 0xa8, 0xa7, 0xa8, 0x44, 0x6e, 0x79, 0x4e, 0xc7, 0xf1, 0xb7, 0xc2, 0xd5, 0x9a,
+ 0x1c, 0xc2, 0x23, 0x81, 0x54, 0xcf, 0x25, 0x8f, 0x18, 0x95, 0x59, 0x92, 0x88, 0x64, 0xe6, 0x55,
+ 0x3a, 0x8e, 0x5f, 0x0f, 0x77, 0x05, 0x5e, 0x1b, 0x3d, 0xb4, 0x32, 0x39, 0x02, 0xa2, 0x6e, 0xe2,
+ 0x32, 0xbc, 0x69, 0x60, 0x57, 0xdd, 0xc4, 0xbf, 0xd3, 0xc7, 0xd0, 0x52, 0x7c, 0x82, 0x09, 0x53,
+ 0x74, 0xcc, 0xe7, 0x22, 0x61, 0xf4, 0x53, 0xa4, 0x34, 0x97, 0xde, 0x7f, 0x1d, 0xc7, 0xdf, 0x0e,
+ 0xf7, 0x0a, 0xf3, 0xd4, 0x78, 0x17, 0xc6, 0x22, 0x4f, 0xa0, 0x61, 0x21, 0x3a, 0x47, 0xa5, 0xbd,
+ 0xaa, 0x39, 0x2c, 0x58, 0xe9, 0x1c, 0x95, 0x5e, 0x03, 0x52, 0x94, 0xda, 0xab, 0x75, 0x1c, 0xbf,
+ 0x7a, 0x07, 0x5c, 0xa1, 0xd4, 0xe4, 0x39, 0xec, 0x17, 0xc0, 0x04, 0x93, 0x84, 0x4f, 0x34, 0x95,
+ 0x5c, 0xcb, 0x5b, 0xef, 0x7f, 0x43, 0x12, 0xeb, 0xbd, 0xb1, 0x56, 0x98, 0x3b, 0xf9, 0x54, 0x92,
+ 0xc7, 0xd1, 0x2d, 0x8d, 0x71, 0x46, 0x57, 0x39, 0xd5, 0xcd, 0xaf, 0x5d, 0xe3, 0x0c, 0x70, 0x76,
+ 0x75, 0x97, 0xd7, 0x53, 0xd8, 0x9e, 0x8a, 0x98, 0xdf, 0x83, 0x5b, 0x06, 0x6c, 0xe6, 0xe2, 0x0a,
+ 0x7a, 0x09, 0x07, 0x06, 0xfa, 0xc3, 0xbe, 0x60, 0xf0, 0xfd, 0xdc, 0x0e, 0xcb, 0x7b, 0xfb, 0xe0,
+ 0x16, 0x67, 0x57, 0x5c, 0x2e, 0xb8, 0xa4, 0x82, 0x79, 0x0d, 0x13, 0xd6, 0x8e, 0xd5, 0x47, 0x46,
+ 0xee, 0xb3, 0xb5, 0x18, 0xb2, 0x4c, 0x30, 0xaf, 0xb9, 0x9e, 0xd3, 0xfb, 0x4c, 0xb0, 0xee, 0x67,
+ 0x68, 0x8d, 0x34, 0xa6, 0xe1, 0x7d, 0x29, 0x8a, 0x2e, 0x04, 0x50, 0x1b, 0xf3, 0x29, 0x4a, 0x6e,
+ 0x9a, 0xd0, 0x38, 0x3e, 0xe8, 0x95, 0xfb, 0x64, 0xc1, 0xb0, 0xc0, 0xc8, 0x33, 0xa8, 0x46, 0xd3,
+ 0xfc, 0xda, 0x2a, 0x7f, 0xe7, 0x2d, 0xd5, 0x1d, 0x42, 0xd3, 0xde, 0xe5, 0x3f, 0x74, 0xef, 0x41,
+ 0x96, 0x95, 0x87, 0x59, 0x1e, 0xbe, 0x82, 0xbd, 0xd2, 0x24, 0x17, 0xc8, 0x38, 0x21, 0xb0, 0xd3,
+ 0x1f, 0x9e, 0x5c, 0x9e, 0x8d, 0xde, 0x0d, 0xae, 0xcf, 0xc3, 0xb7, 0x27, 0x67, 0xee, 0x06, 0x71,
+ 0xa1, 0xd9, 0x1f, 0xda, 0xd5, 0xf0, 0x72, 0xf0, 0xc1, 0x75, 0x4e, 0x5f, 0x7f, 0x5d, 0xb6, 0x9d,
+ 0x6f, 0xcb, 0xb6, 0xf3, 0x7d, 0xd9, 0x76, 0xbe, 0xfc, 0x68, 0x6f, 0x7c, 0x3c, 0x5a, 0x08, 0xcd,
+ 0x95, 0xea, 0x09, 0x0c, 0xec, 0x57, 0x30, 0xc3, 0x60, 0xa1, 0x03, 0xf3, 0x8a, 0x82, 0xd2, 0x6c,
+ 0xe3, 0x9a, 0x91, 0x5f, 0xfc, 0x0a, 0x00, 0x00, 0xff, 0xff, 0x96, 0x76, 0xbc, 0xf8, 0x75, 0x03,
+ 0x00, 0x00,
+}
+
+func (m *Status) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Status) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Status) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.MasterUuid) > 0 {
+ i -= len(m.MasterUuid)
+ copy(dAtA[i:], m.MasterUuid)
+ i = encodeVarintReplicationdata(dAtA, i, uint64(len(m.MasterUuid)))
+ i--
+ dAtA[i] = 0x62
+ }
+ if m.MasterServerId != 0 {
+ i = encodeVarintReplicationdata(dAtA, i, uint64(m.MasterServerId))
+ i--
+ dAtA[i] = 0x58
+ }
+ if len(m.FileRelayLogPosition) > 0 {
+ i -= len(m.FileRelayLogPosition)
+ copy(dAtA[i:], m.FileRelayLogPosition)
+ i = encodeVarintReplicationdata(dAtA, i, uint64(len(m.FileRelayLogPosition)))
+ i--
+ dAtA[i] = 0x52
+ }
+ if len(m.FilePosition) > 0 {
+ i -= len(m.FilePosition)
+ copy(dAtA[i:], m.FilePosition)
+ i = encodeVarintReplicationdata(dAtA, i, uint64(len(m.FilePosition)))
+ i--
+ dAtA[i] = 0x4a
+ }
+ if len(m.RelayLogPosition) > 0 {
+ i -= len(m.RelayLogPosition)
+ copy(dAtA[i:], m.RelayLogPosition)
+ i = encodeVarintReplicationdata(dAtA, i, uint64(len(m.RelayLogPosition)))
+ i--
+ dAtA[i] = 0x42
+ }
+ if m.MasterConnectRetry != 0 {
+ i = encodeVarintReplicationdata(dAtA, i, uint64(m.MasterConnectRetry))
+ i--
+ dAtA[i] = 0x38
+ }
+ if m.MasterPort != 0 {
+ i = encodeVarintReplicationdata(dAtA, i, uint64(m.MasterPort))
+ i--
+ dAtA[i] = 0x30
+ }
+ if len(m.MasterHost) > 0 {
+ i -= len(m.MasterHost)
+ copy(dAtA[i:], m.MasterHost)
+ i = encodeVarintReplicationdata(dAtA, i, uint64(len(m.MasterHost)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if m.SecondsBehindMaster != 0 {
+ i = encodeVarintReplicationdata(dAtA, i, uint64(m.SecondsBehindMaster))
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.SqlThreadRunning {
+ i--
+ if m.SqlThreadRunning {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.IoThreadRunning {
+ i--
+ if m.IoThreadRunning {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.Position) > 0 {
+ i -= len(m.Position)
+ copy(dAtA[i:], m.Position)
+ i = encodeVarintReplicationdata(dAtA, i, uint64(len(m.Position)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *StopReplicationStatus) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StopReplicationStatus) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *StopReplicationStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.After != nil {
+ {
+ size, err := m.After.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintReplicationdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Before != nil {
+ {
+ size, err := m.Before.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintReplicationdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MasterStatus) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MasterStatus) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *MasterStatus) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.FilePosition) > 0 {
+ i -= len(m.FilePosition)
+ copy(dAtA[i:], m.FilePosition)
+ i = encodeVarintReplicationdata(dAtA, i, uint64(len(m.FilePosition)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Position) > 0 {
+ i -= len(m.Position)
+ copy(dAtA[i:], m.Position)
+ i = encodeVarintReplicationdata(dAtA, i, uint64(len(m.Position)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func encodeVarintReplicationdata(dAtA []byte, offset int, v uint64) int {
+ offset -= sovReplicationdata(v)
+ base := offset
+ for v >= 1<<7 {
+ dAtA[offset] = uint8(v&0x7f | 0x80)
+ v >>= 7
+ offset++
+ }
+ dAtA[offset] = uint8(v)
+ return base
}
+func (m *Status) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Position)
+ if l > 0 {
+ n += 1 + l + sovReplicationdata(uint64(l))
+ }
+ if m.IoThreadRunning {
+ n += 2
+ }
+ if m.SqlThreadRunning {
+ n += 2
+ }
+ if m.SecondsBehindMaster != 0 {
+ n += 1 + sovReplicationdata(uint64(m.SecondsBehindMaster))
+ }
+ l = len(m.MasterHost)
+ if l > 0 {
+ n += 1 + l + sovReplicationdata(uint64(l))
+ }
+ if m.MasterPort != 0 {
+ n += 1 + sovReplicationdata(uint64(m.MasterPort))
+ }
+ if m.MasterConnectRetry != 0 {
+ n += 1 + sovReplicationdata(uint64(m.MasterConnectRetry))
+ }
+ l = len(m.RelayLogPosition)
+ if l > 0 {
+ n += 1 + l + sovReplicationdata(uint64(l))
+ }
+ l = len(m.FilePosition)
+ if l > 0 {
+ n += 1 + l + sovReplicationdata(uint64(l))
+ }
+ l = len(m.FileRelayLogPosition)
+ if l > 0 {
+ n += 1 + l + sovReplicationdata(uint64(l))
+ }
+ if m.MasterServerId != 0 {
+ n += 1 + sovReplicationdata(uint64(m.MasterServerId))
+ }
+ l = len(m.MasterUuid)
+ if l > 0 {
+ n += 1 + l + sovReplicationdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StopReplicationStatus) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Before != nil {
+ l = m.Before.Size()
+ n += 1 + l + sovReplicationdata(uint64(l))
+ }
+ if m.After != nil {
+ l = m.After.Size()
+ n += 1 + l + sovReplicationdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *MasterStatus) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Position)
+ if l > 0 {
+ n += 1 + l + sovReplicationdata(uint64(l))
+ }
+ l = len(m.FilePosition)
+ if l > 0 {
+ n += 1 + l + sovReplicationdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func sovReplicationdata(x uint64) (n int) {
+ return (math_bits.Len64(x|1) + 6) / 7
+}
+func sozReplicationdata(x uint64) (n int) {
+ return sovReplicationdata(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+}
+func (m *Status) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowReplicationdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Status: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Status: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Position", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowReplicationdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthReplicationdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthReplicationdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Position = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field IoThreadRunning", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowReplicationdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.IoThreadRunning = bool(v != 0)
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SqlThreadRunning", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowReplicationdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.SqlThreadRunning = bool(v != 0)
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SecondsBehindMaster", wireType)
+ }
+ m.SecondsBehindMaster = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowReplicationdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.SecondsBehindMaster |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MasterHost", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowReplicationdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthReplicationdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthReplicationdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.MasterHost = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 6:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MasterPort", wireType)
+ }
+ m.MasterPort = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowReplicationdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.MasterPort |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 7:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MasterConnectRetry", wireType)
+ }
+ m.MasterConnectRetry = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowReplicationdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.MasterConnectRetry |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 8:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RelayLogPosition", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowReplicationdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthReplicationdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthReplicationdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.RelayLogPosition = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 9:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field FilePosition", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowReplicationdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthReplicationdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthReplicationdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.FilePosition = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 10:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field FileRelayLogPosition", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowReplicationdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthReplicationdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthReplicationdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.FileRelayLogPosition = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 11:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MasterServerId", wireType)
+ }
+ m.MasterServerId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowReplicationdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.MasterServerId |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 12:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MasterUuid", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowReplicationdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthReplicationdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthReplicationdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.MasterUuid = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipReplicationdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthReplicationdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthReplicationdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StopReplicationStatus) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowReplicationdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StopReplicationStatus: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StopReplicationStatus: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Before", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowReplicationdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthReplicationdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthReplicationdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Before == nil {
+ m.Before = &Status{}
+ }
+ if err := m.Before.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field After", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowReplicationdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthReplicationdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthReplicationdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.After == nil {
+ m.After = &Status{}
+ }
+ if err := m.After.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipReplicationdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthReplicationdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthReplicationdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MasterStatus) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowReplicationdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MasterStatus: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MasterStatus: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Position", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowReplicationdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthReplicationdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthReplicationdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Position = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field FilePosition", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowReplicationdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthReplicationdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthReplicationdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.FilePosition = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipReplicationdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthReplicationdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthReplicationdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func skipReplicationdata(dAtA []byte) (n int, err error) {
+ l := len(dAtA)
+ iNdEx := 0
+ depth := 0
+ for iNdEx < l {
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowReplicationdata
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ wireType := int(wire & 0x7)
+ switch wireType {
+ case 0:
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowReplicationdata
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ iNdEx++
+ if dAtA[iNdEx-1] < 0x80 {
+ break
+ }
+ }
+ case 1:
+ iNdEx += 8
+ case 2:
+ var length int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowReplicationdata
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ length |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if length < 0 {
+ return 0, ErrInvalidLengthReplicationdata
+ }
+ iNdEx += length
+ case 3:
+ depth++
+ case 4:
+ if depth == 0 {
+ return 0, ErrUnexpectedEndOfGroupReplicationdata
+ }
+ depth--
+ case 5:
+ iNdEx += 4
+ default:
+ return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
+ }
+ if iNdEx < 0 {
+ return 0, ErrInvalidLengthReplicationdata
+ }
+ if depth == 0 {
+ return iNdEx, nil
+ }
+ }
+ return 0, io.ErrUnexpectedEOF
+}
+
+var (
+ ErrInvalidLengthReplicationdata = fmt.Errorf("proto: negative length found during unmarshaling")
+ ErrIntOverflowReplicationdata = fmt.Errorf("proto: integer overflow")
+ ErrUnexpectedEndOfGroupReplicationdata = fmt.Errorf("proto: unexpected end of group")
+)
diff --git a/go/vt/proto/tableacl/tableacl.pb.go b/go/vt/proto/tableacl/tableacl.pb.go
index 5fbfc778baa..eab0daaa033 100644
--- a/go/vt/proto/tableacl/tableacl.pb.go
+++ b/go/vt/proto/tableacl/tableacl.pb.go
@@ -1,11 +1,13 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: tableacl.proto
package tableacl
import (
fmt "fmt"
+ io "io"
math "math"
+ math_bits "math/bits"
proto "github.com/golang/protobuf/proto"
)
@@ -40,18 +42,26 @@ func (*TableGroupSpec) ProtoMessage() {}
func (*TableGroupSpec) Descriptor() ([]byte, []int) {
return fileDescriptor_7d0bedb248a1632e, []int{0}
}
-
func (m *TableGroupSpec) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_TableGroupSpec.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *TableGroupSpec) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_TableGroupSpec.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_TableGroupSpec.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *TableGroupSpec) XXX_Merge(src proto.Message) {
xxx_messageInfo_TableGroupSpec.Merge(m, src)
}
func (m *TableGroupSpec) XXX_Size() int {
- return xxx_messageInfo_TableGroupSpec.Size(m)
+ return m.Size()
}
func (m *TableGroupSpec) XXX_DiscardUnknown() {
xxx_messageInfo_TableGroupSpec.DiscardUnknown(m)
@@ -107,18 +117,26 @@ func (*Config) ProtoMessage() {}
func (*Config) Descriptor() ([]byte, []int) {
return fileDescriptor_7d0bedb248a1632e, []int{1}
}
-
func (m *Config) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Config.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Config) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Config.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Config.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Config) XXX_Merge(src proto.Message) {
xxx_messageInfo_Config.Merge(m, src)
}
func (m *Config) XXX_Size() int {
- return xxx_messageInfo_Config.Size(m)
+ return m.Size()
}
func (m *Config) XXX_DiscardUnknown() {
xxx_messageInfo_Config.DiscardUnknown(m)
@@ -141,20 +159,594 @@ func init() {
func init() { proto.RegisterFile("tableacl.proto", fileDescriptor_7d0bedb248a1632e) }
var fileDescriptor_7d0bedb248a1632e = []byte{
- // 232 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x54, 0x90, 0xc1, 0x4b, 0xc3, 0x30,
- 0x14, 0xc6, 0x89, 0x9d, 0xd5, 0xbd, 0xc9, 0x0e, 0x41, 0x34, 0xc7, 0x32, 0x10, 0x7b, 0x6a, 0x40,
- 0xf1, 0xe4, 0x4d, 0x11, 0x6f, 0x2a, 0xd5, 0x93, 0x97, 0x92, 0x6d, 0x6f, 0x25, 0xb0, 0x35, 0xe1,
- 0xbd, 0x38, 0xfd, 0x8f, 0xfc, 0x37, 0x25, 0x69, 0x3b, 0xf0, 0xf6, 0xfd, 0xf8, 0x25, 0xe1, 0xfb,
- 0x02, 0xf3, 0x60, 0x96, 0x5b, 0x34, 0xab, 0x6d, 0xe5, 0xc9, 0x05, 0x27, 0x4f, 0x47, 0x5e, 0xfc,
- 0x0a, 0x98, 0x7f, 0x44, 0x78, 0x26, 0xf7, 0xe5, 0xdf, 0x3d, 0xae, 0xa4, 0x84, 0x49, 0x67, 0x76,
- 0xa8, 0x44, 0x21, 0xca, 0x69, 0x9d, 0xb2, 0xbc, 0x83, 0xcb, 0x74, 0xa5, 0x89, 0xc4, 0x8d, 0xa3,
- 0xc6, 0x13, 0x6e, 0xec, 0x0f, 0xb2, 0x3a, 0x2a, 0xb2, 0x72, 0x5a, 0x9f, 0x27, 0xfd, 0x12, 0xed,
- 0x2b, 0xbd, 0x0d, 0x4e, 0x2a, 0x38, 0x21, 0x34, 0x6b, 0x24, 0x56, 0x59, 0x3a, 0x36, 0x62, 0x34,
- 0xdf, 0x64, 0x43, 0x34, 0x93, 0xde, 0x0c, 0x28, 0x2f, 0x20, 0x37, 0xeb, 0x9d, 0xed, 0x58, 0x1d,
- 0x27, 0x31, 0xd0, 0xe2, 0x09, 0xf2, 0x47, 0xd7, 0x6d, 0x6c, 0x2b, 0xef, 0xe1, 0xac, 0x2f, 0xd3,
- 0xc6, 0xce, 0xac, 0x44, 0x91, 0x95, 0xb3, 0x1b, 0x55, 0x1d, 0x46, 0xfe, 0x1f, 0x54, 0xcf, 0xc2,
- 0x81, 0xf9, 0xe1, 0xfa, 0xf3, 0x6a, 0x6f, 0x03, 0x32, 0x57, 0xd6, 0xe9, 0x3e, 0xe9, 0xd6, 0xe9,
- 0x7d, 0xd0, 0xe9, 0x6b, 0xf4, 0xf8, 0xc8, 0x32, 0x4f, 0x7c, 0xfb, 0x17, 0x00, 0x00, 0xff, 0xff,
- 0x09, 0x82, 0xf5, 0x82, 0x3c, 0x01, 0x00, 0x00,
+ // 251 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x2b, 0x49, 0x4c, 0xca,
+ 0x49, 0x4d, 0x4c, 0xce, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x80, 0xf1, 0x95, 0x96,
+ 0x33, 0x72, 0xf1, 0x85, 0x80, 0x38, 0xee, 0x45, 0xf9, 0xa5, 0x05, 0xc1, 0x05, 0xa9, 0xc9, 0x42,
+ 0x42, 0x5c, 0x2c, 0x79, 0x89, 0xb9, 0xa9, 0x12, 0x8c, 0x0a, 0x8c, 0x1a, 0x9c, 0x41, 0x60, 0xb6,
+ 0x90, 0x29, 0x97, 0x38, 0x58, 0x4b, 0x3c, 0x88, 0x57, 0x1c, 0x9f, 0x5f, 0x14, 0x5f, 0x50, 0x94,
+ 0x9a, 0x96, 0x59, 0x91, 0x5a, 0x2c, 0xc1, 0xa4, 0xc0, 0xac, 0xc1, 0x19, 0x24, 0x02, 0x96, 0xf6,
+ 0x03, 0xc9, 0xfa, 0x17, 0x05, 0x40, 0xe5, 0x84, 0x24, 0xb8, 0xd8, 0x8b, 0x52, 0x13, 0x53, 0x52,
+ 0x8b, 0x8a, 0x25, 0x98, 0xc1, 0xca, 0x60, 0x5c, 0x90, 0x4c, 0x79, 0x51, 0x66, 0x09, 0x48, 0x86,
+ 0x05, 0x22, 0x03, 0xe5, 0x0a, 0x89, 0x71, 0xb1, 0x25, 0xa6, 0xe4, 0x66, 0xe6, 0x15, 0x4b, 0xb0,
+ 0x82, 0x25, 0xa0, 0x3c, 0x25, 0x57, 0x2e, 0x36, 0xe7, 0xfc, 0xbc, 0xb4, 0xcc, 0x74, 0x21, 0x6b,
+ 0x2e, 0x1e, 0x88, 0x63, 0xd2, 0x41, 0x6e, 0x2e, 0x96, 0x60, 0x54, 0x60, 0xd6, 0xe0, 0x36, 0x92,
+ 0xd0, 0x83, 0x7b, 0x12, 0xd5, 0x43, 0x41, 0xdc, 0x25, 0x70, 0x7e, 0xb1, 0x93, 0xf9, 0x89, 0x47,
+ 0x72, 0x8c, 0x17, 0x1e, 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe3, 0xb1, 0x1c, 0x43, 0x94,
+ 0x6a, 0x59, 0x66, 0x49, 0x6a, 0x71, 0xb1, 0x5e, 0x66, 0xbe, 0x3e, 0x84, 0xa5, 0x9f, 0x9e, 0xaf,
+ 0x5f, 0x56, 0xa2, 0x0f, 0x0e, 0x2a, 0x7d, 0x98, 0xa1, 0x49, 0x6c, 0x60, 0xbe, 0x31, 0x20, 0x00,
+ 0x00, 0xff, 0xff, 0xe5, 0x2a, 0xb5, 0x83, 0x4c, 0x01, 0x00, 0x00,
+}
+
+func (m *TableGroupSpec) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *TableGroupSpec) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *TableGroupSpec) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Admins) > 0 {
+ for iNdEx := len(m.Admins) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Admins[iNdEx])
+ copy(dAtA[i:], m.Admins[iNdEx])
+ i = encodeVarintTableacl(dAtA, i, uint64(len(m.Admins[iNdEx])))
+ i--
+ dAtA[i] = 0x2a
+ }
+ }
+ if len(m.Writers) > 0 {
+ for iNdEx := len(m.Writers) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Writers[iNdEx])
+ copy(dAtA[i:], m.Writers[iNdEx])
+ i = encodeVarintTableacl(dAtA, i, uint64(len(m.Writers[iNdEx])))
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if len(m.Readers) > 0 {
+ for iNdEx := len(m.Readers) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Readers[iNdEx])
+ copy(dAtA[i:], m.Readers[iNdEx])
+ i = encodeVarintTableacl(dAtA, i, uint64(len(m.Readers[iNdEx])))
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if len(m.TableNamesOrPrefixes) > 0 {
+ for iNdEx := len(m.TableNamesOrPrefixes) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.TableNamesOrPrefixes[iNdEx])
+ copy(dAtA[i:], m.TableNamesOrPrefixes[iNdEx])
+ i = encodeVarintTableacl(dAtA, i, uint64(len(m.TableNamesOrPrefixes[iNdEx])))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = encodeVarintTableacl(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Config) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Config) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
}
+
+func (m *Config) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.TableGroups) > 0 {
+ for iNdEx := len(m.TableGroups) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.TableGroups[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTableacl(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func encodeVarintTableacl(dAtA []byte, offset int, v uint64) int {
+ offset -= sovTableacl(v)
+ base := offset
+ for v >= 1<<7 {
+ dAtA[offset] = uint8(v&0x7f | 0x80)
+ v >>= 7
+ offset++
+ }
+ dAtA[offset] = uint8(v)
+ return base
+}
+func (m *TableGroupSpec) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovTableacl(uint64(l))
+ }
+ if len(m.TableNamesOrPrefixes) > 0 {
+ for _, s := range m.TableNamesOrPrefixes {
+ l = len(s)
+ n += 1 + l + sovTableacl(uint64(l))
+ }
+ }
+ if len(m.Readers) > 0 {
+ for _, s := range m.Readers {
+ l = len(s)
+ n += 1 + l + sovTableacl(uint64(l))
+ }
+ }
+ if len(m.Writers) > 0 {
+ for _, s := range m.Writers {
+ l = len(s)
+ n += 1 + l + sovTableacl(uint64(l))
+ }
+ }
+ if len(m.Admins) > 0 {
+ for _, s := range m.Admins {
+ l = len(s)
+ n += 1 + l + sovTableacl(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Config) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.TableGroups) > 0 {
+ for _, e := range m.TableGroups {
+ l = e.Size()
+ n += 1 + l + sovTableacl(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func sovTableacl(x uint64) (n int) {
+ return (math_bits.Len64(x|1) + 6) / 7
+}
+func sozTableacl(x uint64) (n int) {
+ return sovTableacl(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+}
+func (m *TableGroupSpec) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTableacl
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: TableGroupSpec: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: TableGroupSpec: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTableacl
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTableacl
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTableacl
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TableNamesOrPrefixes", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTableacl
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTableacl
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTableacl
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.TableNamesOrPrefixes = append(m.TableNamesOrPrefixes, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Readers", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTableacl
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTableacl
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTableacl
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Readers = append(m.Readers, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Writers", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTableacl
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTableacl
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTableacl
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Writers = append(m.Writers, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Admins", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTableacl
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTableacl
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTableacl
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Admins = append(m.Admins, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTableacl(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTableacl
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTableacl
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Config) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTableacl
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Config: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Config: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TableGroups", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTableacl
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTableacl
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTableacl
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.TableGroups = append(m.TableGroups, &TableGroupSpec{})
+ if err := m.TableGroups[len(m.TableGroups)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTableacl(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTableacl
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTableacl
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func skipTableacl(dAtA []byte) (n int, err error) {
+ l := len(dAtA)
+ iNdEx := 0
+ depth := 0
+ for iNdEx < l {
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowTableacl
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ wireType := int(wire & 0x7)
+ switch wireType {
+ case 0:
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowTableacl
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ iNdEx++
+ if dAtA[iNdEx-1] < 0x80 {
+ break
+ }
+ }
+ case 1:
+ iNdEx += 8
+ case 2:
+ var length int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowTableacl
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ length |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if length < 0 {
+ return 0, ErrInvalidLengthTableacl
+ }
+ iNdEx += length
+ case 3:
+ depth++
+ case 4:
+ if depth == 0 {
+ return 0, ErrUnexpectedEndOfGroupTableacl
+ }
+ depth--
+ case 5:
+ iNdEx += 4
+ default:
+ return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
+ }
+ if iNdEx < 0 {
+ return 0, ErrInvalidLengthTableacl
+ }
+ if depth == 0 {
+ return iNdEx, nil
+ }
+ }
+ return 0, io.ErrUnexpectedEOF
+}
+
+var (
+ ErrInvalidLengthTableacl = fmt.Errorf("proto: negative length found during unmarshaling")
+ ErrIntOverflowTableacl = fmt.Errorf("proto: integer overflow")
+ ErrUnexpectedEndOfGroupTableacl = fmt.Errorf("proto: unexpected end of group")
+)
diff --git a/go/vt/proto/tabletmanagerdata/tabletmanagerdata.pb.go b/go/vt/proto/tabletmanagerdata/tabletmanagerdata.pb.go
index d6dfc5f5160..b2da2486d5b 100644
--- a/go/vt/proto/tabletmanagerdata/tabletmanagerdata.pb.go
+++ b/go/vt/proto/tabletmanagerdata/tabletmanagerdata.pb.go
@@ -1,14 +1,15 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: tabletmanagerdata.proto
package tabletmanagerdata
import (
fmt "fmt"
+ io "io"
math "math"
+ math_bits "math/bits"
proto "github.com/golang/protobuf/proto"
-
logutil "vitess.io/vitess/go/vt/proto/logutil"
query "vitess.io/vitess/go/vt/proto/query"
replicationdata "vitess.io/vitess/go/vt/proto/replicationdata"
@@ -55,18 +56,26 @@ func (*TableDefinition) ProtoMessage() {}
func (*TableDefinition) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{0}
}
-
func (m *TableDefinition) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_TableDefinition.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *TableDefinition) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_TableDefinition.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_TableDefinition.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *TableDefinition) XXX_Merge(src proto.Message) {
xxx_messageInfo_TableDefinition.Merge(m, src)
}
func (m *TableDefinition) XXX_Size() int {
- return xxx_messageInfo_TableDefinition.Size(m)
+ return m.Size()
}
func (m *TableDefinition) XXX_DiscardUnknown() {
xxx_messageInfo_TableDefinition.DiscardUnknown(m)
@@ -145,18 +154,26 @@ func (*SchemaDefinition) ProtoMessage() {}
func (*SchemaDefinition) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{1}
}
-
func (m *SchemaDefinition) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_SchemaDefinition.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *SchemaDefinition) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_SchemaDefinition.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_SchemaDefinition.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *SchemaDefinition) XXX_Merge(src proto.Message) {
xxx_messageInfo_SchemaDefinition.Merge(m, src)
}
func (m *SchemaDefinition) XXX_Size() int {
- return xxx_messageInfo_SchemaDefinition.Size(m)
+ return m.Size()
}
func (m *SchemaDefinition) XXX_DiscardUnknown() {
xxx_messageInfo_SchemaDefinition.DiscardUnknown(m)
@@ -201,18 +218,26 @@ func (*SchemaChangeResult) ProtoMessage() {}
func (*SchemaChangeResult) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{2}
}
-
func (m *SchemaChangeResult) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_SchemaChangeResult.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *SchemaChangeResult) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_SchemaChangeResult.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_SchemaChangeResult.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *SchemaChangeResult) XXX_Merge(src proto.Message) {
xxx_messageInfo_SchemaChangeResult.Merge(m, src)
}
func (m *SchemaChangeResult) XXX_Size() int {
- return xxx_messageInfo_SchemaChangeResult.Size(m)
+ return m.Size()
}
func (m *SchemaChangeResult) XXX_DiscardUnknown() {
xxx_messageInfo_SchemaChangeResult.DiscardUnknown(m)
@@ -253,18 +278,26 @@ func (*UserPermission) ProtoMessage() {}
func (*UserPermission) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{3}
}
-
func (m *UserPermission) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_UserPermission.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *UserPermission) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_UserPermission.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_UserPermission.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *UserPermission) XXX_Merge(src proto.Message) {
xxx_messageInfo_UserPermission.Merge(m, src)
}
func (m *UserPermission) XXX_Size() int {
- return xxx_messageInfo_UserPermission.Size(m)
+ return m.Size()
}
func (m *UserPermission) XXX_DiscardUnknown() {
xxx_messageInfo_UserPermission.DiscardUnknown(m)
@@ -318,18 +351,26 @@ func (*DbPermission) ProtoMessage() {}
func (*DbPermission) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{4}
}
-
func (m *DbPermission) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_DbPermission.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *DbPermission) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_DbPermission.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_DbPermission.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *DbPermission) XXX_Merge(src proto.Message) {
xxx_messageInfo_DbPermission.Merge(m, src)
}
func (m *DbPermission) XXX_Size() int {
- return xxx_messageInfo_DbPermission.Size(m)
+ return m.Size()
}
func (m *DbPermission) XXX_DiscardUnknown() {
xxx_messageInfo_DbPermission.DiscardUnknown(m)
@@ -381,18 +422,26 @@ func (*Permissions) ProtoMessage() {}
func (*Permissions) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{5}
}
-
func (m *Permissions) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Permissions.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Permissions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Permissions.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Permissions.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Permissions) XXX_Merge(src proto.Message) {
xxx_messageInfo_Permissions.Merge(m, src)
}
func (m *Permissions) XXX_Size() int {
- return xxx_messageInfo_Permissions.Size(m)
+ return m.Size()
}
func (m *Permissions) XXX_DiscardUnknown() {
xxx_messageInfo_Permissions.DiscardUnknown(m)
@@ -427,18 +476,26 @@ func (*PingRequest) ProtoMessage() {}
func (*PingRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{6}
}
-
func (m *PingRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_PingRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *PingRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_PingRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_PingRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *PingRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_PingRequest.Merge(m, src)
}
func (m *PingRequest) XXX_Size() int {
- return xxx_messageInfo_PingRequest.Size(m)
+ return m.Size()
}
func (m *PingRequest) XXX_DiscardUnknown() {
xxx_messageInfo_PingRequest.DiscardUnknown(m)
@@ -466,18 +523,26 @@ func (*PingResponse) ProtoMessage() {}
func (*PingResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{7}
}
-
func (m *PingResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_PingResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *PingResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_PingResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_PingResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *PingResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_PingResponse.Merge(m, src)
}
func (m *PingResponse) XXX_Size() int {
- return xxx_messageInfo_PingResponse.Size(m)
+ return m.Size()
}
func (m *PingResponse) XXX_DiscardUnknown() {
xxx_messageInfo_PingResponse.DiscardUnknown(m)
@@ -506,18 +571,26 @@ func (*SleepRequest) ProtoMessage() {}
func (*SleepRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{8}
}
-
func (m *SleepRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_SleepRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *SleepRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_SleepRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_SleepRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *SleepRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_SleepRequest.Merge(m, src)
}
func (m *SleepRequest) XXX_Size() int {
- return xxx_messageInfo_SleepRequest.Size(m)
+ return m.Size()
}
func (m *SleepRequest) XXX_DiscardUnknown() {
xxx_messageInfo_SleepRequest.DiscardUnknown(m)
@@ -544,18 +617,26 @@ func (*SleepResponse) ProtoMessage() {}
func (*SleepResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{9}
}
-
func (m *SleepResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_SleepResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *SleepResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_SleepResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_SleepResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *SleepResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_SleepResponse.Merge(m, src)
}
func (m *SleepResponse) XXX_Size() int {
- return xxx_messageInfo_SleepResponse.Size(m)
+ return m.Size()
}
func (m *SleepResponse) XXX_DiscardUnknown() {
xxx_messageInfo_SleepResponse.DiscardUnknown(m)
@@ -578,18 +659,26 @@ func (*ExecuteHookRequest) ProtoMessage() {}
func (*ExecuteHookRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{10}
}
-
func (m *ExecuteHookRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ExecuteHookRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ExecuteHookRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ExecuteHookRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ExecuteHookRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ExecuteHookRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ExecuteHookRequest.Merge(m, src)
}
func (m *ExecuteHookRequest) XXX_Size() int {
- return xxx_messageInfo_ExecuteHookRequest.Size(m)
+ return m.Size()
}
func (m *ExecuteHookRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ExecuteHookRequest.DiscardUnknown(m)
@@ -633,18 +722,26 @@ func (*ExecuteHookResponse) ProtoMessage() {}
func (*ExecuteHookResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{11}
}
-
func (m *ExecuteHookResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ExecuteHookResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ExecuteHookResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ExecuteHookResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ExecuteHookResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ExecuteHookResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ExecuteHookResponse.Merge(m, src)
}
func (m *ExecuteHookResponse) XXX_Size() int {
- return xxx_messageInfo_ExecuteHookResponse.Size(m)
+ return m.Size()
}
func (m *ExecuteHookResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ExecuteHookResponse.DiscardUnknown(m)
@@ -688,18 +785,26 @@ func (*GetSchemaRequest) ProtoMessage() {}
func (*GetSchemaRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{12}
}
-
func (m *GetSchemaRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_GetSchemaRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *GetSchemaRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_GetSchemaRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_GetSchemaRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *GetSchemaRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetSchemaRequest.Merge(m, src)
}
func (m *GetSchemaRequest) XXX_Size() int {
- return xxx_messageInfo_GetSchemaRequest.Size(m)
+ return m.Size()
}
func (m *GetSchemaRequest) XXX_DiscardUnknown() {
xxx_messageInfo_GetSchemaRequest.DiscardUnknown(m)
@@ -741,18 +846,26 @@ func (*GetSchemaResponse) ProtoMessage() {}
func (*GetSchemaResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{13}
}
-
func (m *GetSchemaResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_GetSchemaResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *GetSchemaResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_GetSchemaResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_GetSchemaResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *GetSchemaResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetSchemaResponse.Merge(m, src)
}
func (m *GetSchemaResponse) XXX_Size() int {
- return xxx_messageInfo_GetSchemaResponse.Size(m)
+ return m.Size()
}
func (m *GetSchemaResponse) XXX_DiscardUnknown() {
xxx_messageInfo_GetSchemaResponse.DiscardUnknown(m)
@@ -779,18 +892,26 @@ func (*GetPermissionsRequest) ProtoMessage() {}
func (*GetPermissionsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{14}
}
-
func (m *GetPermissionsRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_GetPermissionsRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *GetPermissionsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_GetPermissionsRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_GetPermissionsRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *GetPermissionsRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetPermissionsRequest.Merge(m, src)
}
func (m *GetPermissionsRequest) XXX_Size() int {
- return xxx_messageInfo_GetPermissionsRequest.Size(m)
+ return m.Size()
}
func (m *GetPermissionsRequest) XXX_DiscardUnknown() {
xxx_messageInfo_GetPermissionsRequest.DiscardUnknown(m)
@@ -811,18 +932,26 @@ func (*GetPermissionsResponse) ProtoMessage() {}
func (*GetPermissionsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{15}
}
-
func (m *GetPermissionsResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_GetPermissionsResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *GetPermissionsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_GetPermissionsResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_GetPermissionsResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *GetPermissionsResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetPermissionsResponse.Merge(m, src)
}
func (m *GetPermissionsResponse) XXX_Size() int {
- return xxx_messageInfo_GetPermissionsResponse.Size(m)
+ return m.Size()
}
func (m *GetPermissionsResponse) XXX_DiscardUnknown() {
xxx_messageInfo_GetPermissionsResponse.DiscardUnknown(m)
@@ -849,18 +978,26 @@ func (*SetReadOnlyRequest) ProtoMessage() {}
func (*SetReadOnlyRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{16}
}
-
func (m *SetReadOnlyRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_SetReadOnlyRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *SetReadOnlyRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_SetReadOnlyRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_SetReadOnlyRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *SetReadOnlyRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_SetReadOnlyRequest.Merge(m, src)
}
func (m *SetReadOnlyRequest) XXX_Size() int {
- return xxx_messageInfo_SetReadOnlyRequest.Size(m)
+ return m.Size()
}
func (m *SetReadOnlyRequest) XXX_DiscardUnknown() {
xxx_messageInfo_SetReadOnlyRequest.DiscardUnknown(m)
@@ -880,18 +1017,26 @@ func (*SetReadOnlyResponse) ProtoMessage() {}
func (*SetReadOnlyResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{17}
}
-
func (m *SetReadOnlyResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_SetReadOnlyResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *SetReadOnlyResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_SetReadOnlyResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_SetReadOnlyResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *SetReadOnlyResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_SetReadOnlyResponse.Merge(m, src)
}
func (m *SetReadOnlyResponse) XXX_Size() int {
- return xxx_messageInfo_SetReadOnlyResponse.Size(m)
+ return m.Size()
}
func (m *SetReadOnlyResponse) XXX_DiscardUnknown() {
xxx_messageInfo_SetReadOnlyResponse.DiscardUnknown(m)
@@ -911,18 +1056,26 @@ func (*SetReadWriteRequest) ProtoMessage() {}
func (*SetReadWriteRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{18}
}
-
func (m *SetReadWriteRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_SetReadWriteRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *SetReadWriteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_SetReadWriteRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_SetReadWriteRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *SetReadWriteRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_SetReadWriteRequest.Merge(m, src)
}
func (m *SetReadWriteRequest) XXX_Size() int {
- return xxx_messageInfo_SetReadWriteRequest.Size(m)
+ return m.Size()
}
func (m *SetReadWriteRequest) XXX_DiscardUnknown() {
xxx_messageInfo_SetReadWriteRequest.DiscardUnknown(m)
@@ -942,18 +1095,26 @@ func (*SetReadWriteResponse) ProtoMessage() {}
func (*SetReadWriteResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{19}
}
-
func (m *SetReadWriteResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_SetReadWriteResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *SetReadWriteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_SetReadWriteResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_SetReadWriteResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *SetReadWriteResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_SetReadWriteResponse.Merge(m, src)
}
func (m *SetReadWriteResponse) XXX_Size() int {
- return xxx_messageInfo_SetReadWriteResponse.Size(m)
+ return m.Size()
}
func (m *SetReadWriteResponse) XXX_DiscardUnknown() {
xxx_messageInfo_SetReadWriteResponse.DiscardUnknown(m)
@@ -974,18 +1135,26 @@ func (*ChangeTypeRequest) ProtoMessage() {}
func (*ChangeTypeRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{20}
}
-
func (m *ChangeTypeRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ChangeTypeRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ChangeTypeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ChangeTypeRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ChangeTypeRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ChangeTypeRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ChangeTypeRequest.Merge(m, src)
}
func (m *ChangeTypeRequest) XXX_Size() int {
- return xxx_messageInfo_ChangeTypeRequest.Size(m)
+ return m.Size()
}
func (m *ChangeTypeRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ChangeTypeRequest.DiscardUnknown(m)
@@ -1012,18 +1181,26 @@ func (*ChangeTypeResponse) ProtoMessage() {}
func (*ChangeTypeResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{21}
}
-
func (m *ChangeTypeResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ChangeTypeResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ChangeTypeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ChangeTypeResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ChangeTypeResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ChangeTypeResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ChangeTypeResponse.Merge(m, src)
}
func (m *ChangeTypeResponse) XXX_Size() int {
- return xxx_messageInfo_ChangeTypeResponse.Size(m)
+ return m.Size()
}
func (m *ChangeTypeResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ChangeTypeResponse.DiscardUnknown(m)
@@ -1043,18 +1220,26 @@ func (*RefreshStateRequest) ProtoMessage() {}
func (*RefreshStateRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{22}
}
-
func (m *RefreshStateRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_RefreshStateRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *RefreshStateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_RefreshStateRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_RefreshStateRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *RefreshStateRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_RefreshStateRequest.Merge(m, src)
}
func (m *RefreshStateRequest) XXX_Size() int {
- return xxx_messageInfo_RefreshStateRequest.Size(m)
+ return m.Size()
}
func (m *RefreshStateRequest) XXX_DiscardUnknown() {
xxx_messageInfo_RefreshStateRequest.DiscardUnknown(m)
@@ -1074,18 +1259,26 @@ func (*RefreshStateResponse) ProtoMessage() {}
func (*RefreshStateResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{23}
}
-
func (m *RefreshStateResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_RefreshStateResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *RefreshStateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_RefreshStateResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_RefreshStateResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *RefreshStateResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_RefreshStateResponse.Merge(m, src)
}
func (m *RefreshStateResponse) XXX_Size() int {
- return xxx_messageInfo_RefreshStateResponse.Size(m)
+ return m.Size()
}
func (m *RefreshStateResponse) XXX_DiscardUnknown() {
xxx_messageInfo_RefreshStateResponse.DiscardUnknown(m)
@@ -1105,18 +1298,26 @@ func (*RunHealthCheckRequest) ProtoMessage() {}
func (*RunHealthCheckRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{24}
}
-
func (m *RunHealthCheckRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_RunHealthCheckRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *RunHealthCheckRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_RunHealthCheckRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_RunHealthCheckRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *RunHealthCheckRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_RunHealthCheckRequest.Merge(m, src)
}
func (m *RunHealthCheckRequest) XXX_Size() int {
- return xxx_messageInfo_RunHealthCheckRequest.Size(m)
+ return m.Size()
}
func (m *RunHealthCheckRequest) XXX_DiscardUnknown() {
xxx_messageInfo_RunHealthCheckRequest.DiscardUnknown(m)
@@ -1136,18 +1337,26 @@ func (*RunHealthCheckResponse) ProtoMessage() {}
func (*RunHealthCheckResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{25}
}
-
func (m *RunHealthCheckResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_RunHealthCheckResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *RunHealthCheckResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_RunHealthCheckResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_RunHealthCheckResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *RunHealthCheckResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_RunHealthCheckResponse.Merge(m, src)
}
func (m *RunHealthCheckResponse) XXX_Size() int {
- return xxx_messageInfo_RunHealthCheckResponse.Size(m)
+ return m.Size()
}
func (m *RunHealthCheckResponse) XXX_DiscardUnknown() {
xxx_messageInfo_RunHealthCheckResponse.DiscardUnknown(m)
@@ -1168,18 +1377,26 @@ func (*IgnoreHealthErrorRequest) ProtoMessage() {}
func (*IgnoreHealthErrorRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{26}
}
-
func (m *IgnoreHealthErrorRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_IgnoreHealthErrorRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *IgnoreHealthErrorRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_IgnoreHealthErrorRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_IgnoreHealthErrorRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *IgnoreHealthErrorRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_IgnoreHealthErrorRequest.Merge(m, src)
}
func (m *IgnoreHealthErrorRequest) XXX_Size() int {
- return xxx_messageInfo_IgnoreHealthErrorRequest.Size(m)
+ return m.Size()
}
func (m *IgnoreHealthErrorRequest) XXX_DiscardUnknown() {
xxx_messageInfo_IgnoreHealthErrorRequest.DiscardUnknown(m)
@@ -1206,18 +1423,26 @@ func (*IgnoreHealthErrorResponse) ProtoMessage() {}
func (*IgnoreHealthErrorResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{27}
}
-
func (m *IgnoreHealthErrorResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_IgnoreHealthErrorResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *IgnoreHealthErrorResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_IgnoreHealthErrorResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_IgnoreHealthErrorResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *IgnoreHealthErrorResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_IgnoreHealthErrorResponse.Merge(m, src)
}
func (m *IgnoreHealthErrorResponse) XXX_Size() int {
- return xxx_messageInfo_IgnoreHealthErrorResponse.Size(m)
+ return m.Size()
}
func (m *IgnoreHealthErrorResponse) XXX_DiscardUnknown() {
xxx_messageInfo_IgnoreHealthErrorResponse.DiscardUnknown(m)
@@ -1241,18 +1466,26 @@ func (*ReloadSchemaRequest) ProtoMessage() {}
func (*ReloadSchemaRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{28}
}
-
func (m *ReloadSchemaRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ReloadSchemaRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ReloadSchemaRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ReloadSchemaRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ReloadSchemaRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ReloadSchemaRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReloadSchemaRequest.Merge(m, src)
}
func (m *ReloadSchemaRequest) XXX_Size() int {
- return xxx_messageInfo_ReloadSchemaRequest.Size(m)
+ return m.Size()
}
func (m *ReloadSchemaRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ReloadSchemaRequest.DiscardUnknown(m)
@@ -1279,18 +1512,26 @@ func (*ReloadSchemaResponse) ProtoMessage() {}
func (*ReloadSchemaResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{29}
}
-
func (m *ReloadSchemaResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ReloadSchemaResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ReloadSchemaResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ReloadSchemaResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ReloadSchemaResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ReloadSchemaResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReloadSchemaResponse.Merge(m, src)
}
func (m *ReloadSchemaResponse) XXX_Size() int {
- return xxx_messageInfo_ReloadSchemaResponse.Size(m)
+ return m.Size()
}
func (m *ReloadSchemaResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ReloadSchemaResponse.DiscardUnknown(m)
@@ -1311,18 +1552,26 @@ func (*PreflightSchemaRequest) ProtoMessage() {}
func (*PreflightSchemaRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{30}
}
-
func (m *PreflightSchemaRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_PreflightSchemaRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *PreflightSchemaRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_PreflightSchemaRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_PreflightSchemaRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *PreflightSchemaRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_PreflightSchemaRequest.Merge(m, src)
}
func (m *PreflightSchemaRequest) XXX_Size() int {
- return xxx_messageInfo_PreflightSchemaRequest.Size(m)
+ return m.Size()
}
func (m *PreflightSchemaRequest) XXX_DiscardUnknown() {
xxx_messageInfo_PreflightSchemaRequest.DiscardUnknown(m)
@@ -1352,18 +1601,26 @@ func (*PreflightSchemaResponse) ProtoMessage() {}
func (*PreflightSchemaResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{31}
}
-
func (m *PreflightSchemaResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_PreflightSchemaResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *PreflightSchemaResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_PreflightSchemaResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_PreflightSchemaResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *PreflightSchemaResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_PreflightSchemaResponse.Merge(m, src)
}
func (m *PreflightSchemaResponse) XXX_Size() int {
- return xxx_messageInfo_PreflightSchemaResponse.Size(m)
+ return m.Size()
}
func (m *PreflightSchemaResponse) XXX_DiscardUnknown() {
xxx_messageInfo_PreflightSchemaResponse.DiscardUnknown(m)
@@ -1395,18 +1652,26 @@ func (*ApplySchemaRequest) ProtoMessage() {}
func (*ApplySchemaRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{32}
}
-
func (m *ApplySchemaRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ApplySchemaRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ApplySchemaRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ApplySchemaRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ApplySchemaRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ApplySchemaRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ApplySchemaRequest.Merge(m, src)
}
func (m *ApplySchemaRequest) XXX_Size() int {
- return xxx_messageInfo_ApplySchemaRequest.Size(m)
+ return m.Size()
}
func (m *ApplySchemaRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ApplySchemaRequest.DiscardUnknown(m)
@@ -1463,18 +1728,26 @@ func (*ApplySchemaResponse) ProtoMessage() {}
func (*ApplySchemaResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{33}
}
-
func (m *ApplySchemaResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ApplySchemaResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ApplySchemaResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ApplySchemaResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ApplySchemaResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ApplySchemaResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ApplySchemaResponse.Merge(m, src)
}
func (m *ApplySchemaResponse) XXX_Size() int {
- return xxx_messageInfo_ApplySchemaResponse.Size(m)
+ return m.Size()
}
func (m *ApplySchemaResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ApplySchemaResponse.DiscardUnknown(m)
@@ -1508,18 +1781,26 @@ func (*LockTablesRequest) ProtoMessage() {}
func (*LockTablesRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{34}
}
-
func (m *LockTablesRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_LockTablesRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *LockTablesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_LockTablesRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_LockTablesRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *LockTablesRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_LockTablesRequest.Merge(m, src)
}
func (m *LockTablesRequest) XXX_Size() int {
- return xxx_messageInfo_LockTablesRequest.Size(m)
+ return m.Size()
}
func (m *LockTablesRequest) XXX_DiscardUnknown() {
xxx_messageInfo_LockTablesRequest.DiscardUnknown(m)
@@ -1539,18 +1820,26 @@ func (*LockTablesResponse) ProtoMessage() {}
func (*LockTablesResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{35}
}
-
func (m *LockTablesResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_LockTablesResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *LockTablesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_LockTablesResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_LockTablesResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *LockTablesResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_LockTablesResponse.Merge(m, src)
}
func (m *LockTablesResponse) XXX_Size() int {
- return xxx_messageInfo_LockTablesResponse.Size(m)
+ return m.Size()
}
func (m *LockTablesResponse) XXX_DiscardUnknown() {
xxx_messageInfo_LockTablesResponse.DiscardUnknown(m)
@@ -1570,18 +1859,26 @@ func (*UnlockTablesRequest) ProtoMessage() {}
func (*UnlockTablesRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{36}
}
-
func (m *UnlockTablesRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_UnlockTablesRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *UnlockTablesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_UnlockTablesRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_UnlockTablesRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *UnlockTablesRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_UnlockTablesRequest.Merge(m, src)
}
func (m *UnlockTablesRequest) XXX_Size() int {
- return xxx_messageInfo_UnlockTablesRequest.Size(m)
+ return m.Size()
}
func (m *UnlockTablesRequest) XXX_DiscardUnknown() {
xxx_messageInfo_UnlockTablesRequest.DiscardUnknown(m)
@@ -1601,18 +1898,26 @@ func (*UnlockTablesResponse) ProtoMessage() {}
func (*UnlockTablesResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{37}
}
-
func (m *UnlockTablesResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_UnlockTablesResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *UnlockTablesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_UnlockTablesResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_UnlockTablesResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *UnlockTablesResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_UnlockTablesResponse.Merge(m, src)
}
func (m *UnlockTablesResponse) XXX_Size() int {
- return xxx_messageInfo_UnlockTablesResponse.Size(m)
+ return m.Size()
}
func (m *UnlockTablesResponse) XXX_DiscardUnknown() {
xxx_messageInfo_UnlockTablesResponse.DiscardUnknown(m)
@@ -1637,18 +1942,26 @@ func (*ExecuteFetchAsDbaRequest) ProtoMessage() {}
func (*ExecuteFetchAsDbaRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{38}
}
-
func (m *ExecuteFetchAsDbaRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ExecuteFetchAsDbaRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ExecuteFetchAsDbaRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ExecuteFetchAsDbaRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ExecuteFetchAsDbaRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ExecuteFetchAsDbaRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ExecuteFetchAsDbaRequest.Merge(m, src)
}
func (m *ExecuteFetchAsDbaRequest) XXX_Size() int {
- return xxx_messageInfo_ExecuteFetchAsDbaRequest.Size(m)
+ return m.Size()
}
func (m *ExecuteFetchAsDbaRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ExecuteFetchAsDbaRequest.DiscardUnknown(m)
@@ -1704,18 +2017,26 @@ func (*ExecuteFetchAsDbaResponse) ProtoMessage() {}
func (*ExecuteFetchAsDbaResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{39}
}
-
func (m *ExecuteFetchAsDbaResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ExecuteFetchAsDbaResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ExecuteFetchAsDbaResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ExecuteFetchAsDbaResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ExecuteFetchAsDbaResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ExecuteFetchAsDbaResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ExecuteFetchAsDbaResponse.Merge(m, src)
}
func (m *ExecuteFetchAsDbaResponse) XXX_Size() int {
- return xxx_messageInfo_ExecuteFetchAsDbaResponse.Size(m)
+ return m.Size()
}
func (m *ExecuteFetchAsDbaResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ExecuteFetchAsDbaResponse.DiscardUnknown(m)
@@ -1746,18 +2067,26 @@ func (*ExecuteFetchAsAllPrivsRequest) ProtoMessage() {}
func (*ExecuteFetchAsAllPrivsRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{40}
}
-
func (m *ExecuteFetchAsAllPrivsRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ExecuteFetchAsAllPrivsRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ExecuteFetchAsAllPrivsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ExecuteFetchAsAllPrivsRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ExecuteFetchAsAllPrivsRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ExecuteFetchAsAllPrivsRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ExecuteFetchAsAllPrivsRequest.Merge(m, src)
}
func (m *ExecuteFetchAsAllPrivsRequest) XXX_Size() int {
- return xxx_messageInfo_ExecuteFetchAsAllPrivsRequest.Size(m)
+ return m.Size()
}
func (m *ExecuteFetchAsAllPrivsRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ExecuteFetchAsAllPrivsRequest.DiscardUnknown(m)
@@ -1806,18 +2135,26 @@ func (*ExecuteFetchAsAllPrivsResponse) ProtoMessage() {}
func (*ExecuteFetchAsAllPrivsResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{41}
}
-
func (m *ExecuteFetchAsAllPrivsResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ExecuteFetchAsAllPrivsResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ExecuteFetchAsAllPrivsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ExecuteFetchAsAllPrivsResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ExecuteFetchAsAllPrivsResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ExecuteFetchAsAllPrivsResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ExecuteFetchAsAllPrivsResponse.Merge(m, src)
}
func (m *ExecuteFetchAsAllPrivsResponse) XXX_Size() int {
- return xxx_messageInfo_ExecuteFetchAsAllPrivsResponse.Size(m)
+ return m.Size()
}
func (m *ExecuteFetchAsAllPrivsResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ExecuteFetchAsAllPrivsResponse.DiscardUnknown(m)
@@ -1846,18 +2183,26 @@ func (*ExecuteFetchAsAppRequest) ProtoMessage() {}
func (*ExecuteFetchAsAppRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{42}
}
-
func (m *ExecuteFetchAsAppRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ExecuteFetchAsAppRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ExecuteFetchAsAppRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ExecuteFetchAsAppRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ExecuteFetchAsAppRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ExecuteFetchAsAppRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ExecuteFetchAsAppRequest.Merge(m, src)
}
func (m *ExecuteFetchAsAppRequest) XXX_Size() int {
- return xxx_messageInfo_ExecuteFetchAsAppRequest.Size(m)
+ return m.Size()
}
func (m *ExecuteFetchAsAppRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ExecuteFetchAsAppRequest.DiscardUnknown(m)
@@ -1892,18 +2237,26 @@ func (*ExecuteFetchAsAppResponse) ProtoMessage() {}
func (*ExecuteFetchAsAppResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{43}
}
-
func (m *ExecuteFetchAsAppResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ExecuteFetchAsAppResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ExecuteFetchAsAppResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ExecuteFetchAsAppResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ExecuteFetchAsAppResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ExecuteFetchAsAppResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ExecuteFetchAsAppResponse.Merge(m, src)
}
func (m *ExecuteFetchAsAppResponse) XXX_Size() int {
- return xxx_messageInfo_ExecuteFetchAsAppResponse.Size(m)
+ return m.Size()
}
func (m *ExecuteFetchAsAppResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ExecuteFetchAsAppResponse.DiscardUnknown(m)
@@ -1930,18 +2283,26 @@ func (*ReplicationStatusRequest) ProtoMessage() {}
func (*ReplicationStatusRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{44}
}
-
func (m *ReplicationStatusRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ReplicationStatusRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ReplicationStatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ReplicationStatusRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ReplicationStatusRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ReplicationStatusRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReplicationStatusRequest.Merge(m, src)
}
func (m *ReplicationStatusRequest) XXX_Size() int {
- return xxx_messageInfo_ReplicationStatusRequest.Size(m)
+ return m.Size()
}
func (m *ReplicationStatusRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ReplicationStatusRequest.DiscardUnknown(m)
@@ -1962,18 +2323,26 @@ func (*ReplicationStatusResponse) ProtoMessage() {}
func (*ReplicationStatusResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{45}
}
-
func (m *ReplicationStatusResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ReplicationStatusResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ReplicationStatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ReplicationStatusResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ReplicationStatusResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ReplicationStatusResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReplicationStatusResponse.Merge(m, src)
}
func (m *ReplicationStatusResponse) XXX_Size() int {
- return xxx_messageInfo_ReplicationStatusResponse.Size(m)
+ return m.Size()
}
func (m *ReplicationStatusResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ReplicationStatusResponse.DiscardUnknown(m)
@@ -2000,18 +2369,26 @@ func (*MasterStatusRequest) ProtoMessage() {}
func (*MasterStatusRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{46}
}
-
func (m *MasterStatusRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_MasterStatusRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *MasterStatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_MasterStatusRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_MasterStatusRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *MasterStatusRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_MasterStatusRequest.Merge(m, src)
}
func (m *MasterStatusRequest) XXX_Size() int {
- return xxx_messageInfo_MasterStatusRequest.Size(m)
+ return m.Size()
}
func (m *MasterStatusRequest) XXX_DiscardUnknown() {
xxx_messageInfo_MasterStatusRequest.DiscardUnknown(m)
@@ -2032,18 +2409,26 @@ func (*MasterStatusResponse) ProtoMessage() {}
func (*MasterStatusResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{47}
}
-
func (m *MasterStatusResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_MasterStatusResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *MasterStatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_MasterStatusResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_MasterStatusResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *MasterStatusResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_MasterStatusResponse.Merge(m, src)
}
func (m *MasterStatusResponse) XXX_Size() int {
- return xxx_messageInfo_MasterStatusResponse.Size(m)
+ return m.Size()
}
func (m *MasterStatusResponse) XXX_DiscardUnknown() {
xxx_messageInfo_MasterStatusResponse.DiscardUnknown(m)
@@ -2070,18 +2455,26 @@ func (*MasterPositionRequest) ProtoMessage() {}
func (*MasterPositionRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{48}
}
-
func (m *MasterPositionRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_MasterPositionRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *MasterPositionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_MasterPositionRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_MasterPositionRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *MasterPositionRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_MasterPositionRequest.Merge(m, src)
}
func (m *MasterPositionRequest) XXX_Size() int {
- return xxx_messageInfo_MasterPositionRequest.Size(m)
+ return m.Size()
}
func (m *MasterPositionRequest) XXX_DiscardUnknown() {
xxx_messageInfo_MasterPositionRequest.DiscardUnknown(m)
@@ -2102,18 +2495,26 @@ func (*MasterPositionResponse) ProtoMessage() {}
func (*MasterPositionResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{49}
}
-
func (m *MasterPositionResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_MasterPositionResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *MasterPositionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_MasterPositionResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_MasterPositionResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *MasterPositionResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_MasterPositionResponse.Merge(m, src)
}
func (m *MasterPositionResponse) XXX_Size() int {
- return xxx_messageInfo_MasterPositionResponse.Size(m)
+ return m.Size()
}
func (m *MasterPositionResponse) XXX_DiscardUnknown() {
xxx_messageInfo_MasterPositionResponse.DiscardUnknown(m)
@@ -2141,18 +2542,26 @@ func (*WaitForPositionRequest) ProtoMessage() {}
func (*WaitForPositionRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{50}
}
-
func (m *WaitForPositionRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_WaitForPositionRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *WaitForPositionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_WaitForPositionRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_WaitForPositionRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *WaitForPositionRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_WaitForPositionRequest.Merge(m, src)
}
func (m *WaitForPositionRequest) XXX_Size() int {
- return xxx_messageInfo_WaitForPositionRequest.Size(m)
+ return m.Size()
}
func (m *WaitForPositionRequest) XXX_DiscardUnknown() {
xxx_messageInfo_WaitForPositionRequest.DiscardUnknown(m)
@@ -2179,18 +2588,26 @@ func (*WaitForPositionResponse) ProtoMessage() {}
func (*WaitForPositionResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{51}
}
-
func (m *WaitForPositionResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_WaitForPositionResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *WaitForPositionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_WaitForPositionResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_WaitForPositionResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *WaitForPositionResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_WaitForPositionResponse.Merge(m, src)
}
func (m *WaitForPositionResponse) XXX_Size() int {
- return xxx_messageInfo_WaitForPositionResponse.Size(m)
+ return m.Size()
}
func (m *WaitForPositionResponse) XXX_DiscardUnknown() {
xxx_messageInfo_WaitForPositionResponse.DiscardUnknown(m)
@@ -2210,18 +2627,26 @@ func (*StopReplicationRequest) ProtoMessage() {}
func (*StopReplicationRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{52}
}
-
func (m *StopReplicationRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StopReplicationRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *StopReplicationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StopReplicationRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_StopReplicationRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *StopReplicationRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_StopReplicationRequest.Merge(m, src)
}
func (m *StopReplicationRequest) XXX_Size() int {
- return xxx_messageInfo_StopReplicationRequest.Size(m)
+ return m.Size()
}
func (m *StopReplicationRequest) XXX_DiscardUnknown() {
xxx_messageInfo_StopReplicationRequest.DiscardUnknown(m)
@@ -2241,18 +2666,26 @@ func (*StopReplicationResponse) ProtoMessage() {}
func (*StopReplicationResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{53}
}
-
func (m *StopReplicationResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StopReplicationResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *StopReplicationResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StopReplicationResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_StopReplicationResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *StopReplicationResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_StopReplicationResponse.Merge(m, src)
}
func (m *StopReplicationResponse) XXX_Size() int {
- return xxx_messageInfo_StopReplicationResponse.Size(m)
+ return m.Size()
}
func (m *StopReplicationResponse) XXX_DiscardUnknown() {
xxx_messageInfo_StopReplicationResponse.DiscardUnknown(m)
@@ -2274,18 +2707,26 @@ func (*StopReplicationMinimumRequest) ProtoMessage() {}
func (*StopReplicationMinimumRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{54}
}
-
func (m *StopReplicationMinimumRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StopReplicationMinimumRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *StopReplicationMinimumRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StopReplicationMinimumRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_StopReplicationMinimumRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *StopReplicationMinimumRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_StopReplicationMinimumRequest.Merge(m, src)
}
func (m *StopReplicationMinimumRequest) XXX_Size() int {
- return xxx_messageInfo_StopReplicationMinimumRequest.Size(m)
+ return m.Size()
}
func (m *StopReplicationMinimumRequest) XXX_DiscardUnknown() {
xxx_messageInfo_StopReplicationMinimumRequest.DiscardUnknown(m)
@@ -2320,18 +2761,26 @@ func (*StopReplicationMinimumResponse) ProtoMessage() {}
func (*StopReplicationMinimumResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{55}
}
-
func (m *StopReplicationMinimumResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StopReplicationMinimumResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *StopReplicationMinimumResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StopReplicationMinimumResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_StopReplicationMinimumResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *StopReplicationMinimumResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_StopReplicationMinimumResponse.Merge(m, src)
}
func (m *StopReplicationMinimumResponse) XXX_Size() int {
- return xxx_messageInfo_StopReplicationMinimumResponse.Size(m)
+ return m.Size()
}
func (m *StopReplicationMinimumResponse) XXX_DiscardUnknown() {
xxx_messageInfo_StopReplicationMinimumResponse.DiscardUnknown(m)
@@ -2358,18 +2807,26 @@ func (*StartReplicationRequest) ProtoMessage() {}
func (*StartReplicationRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{56}
}
-
func (m *StartReplicationRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StartReplicationRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *StartReplicationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StartReplicationRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_StartReplicationRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *StartReplicationRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_StartReplicationRequest.Merge(m, src)
}
func (m *StartReplicationRequest) XXX_Size() int {
- return xxx_messageInfo_StartReplicationRequest.Size(m)
+ return m.Size()
}
func (m *StartReplicationRequest) XXX_DiscardUnknown() {
xxx_messageInfo_StartReplicationRequest.DiscardUnknown(m)
@@ -2389,18 +2846,26 @@ func (*StartReplicationResponse) ProtoMessage() {}
func (*StartReplicationResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{57}
}
-
func (m *StartReplicationResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StartReplicationResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *StartReplicationResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StartReplicationResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_StartReplicationResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *StartReplicationResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_StartReplicationResponse.Merge(m, src)
}
func (m *StartReplicationResponse) XXX_Size() int {
- return xxx_messageInfo_StartReplicationResponse.Size(m)
+ return m.Size()
}
func (m *StartReplicationResponse) XXX_DiscardUnknown() {
xxx_messageInfo_StartReplicationResponse.DiscardUnknown(m)
@@ -2422,18 +2887,26 @@ func (*StartReplicationUntilAfterRequest) ProtoMessage() {}
func (*StartReplicationUntilAfterRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{58}
}
-
func (m *StartReplicationUntilAfterRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StartReplicationUntilAfterRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *StartReplicationUntilAfterRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StartReplicationUntilAfterRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_StartReplicationUntilAfterRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *StartReplicationUntilAfterRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_StartReplicationUntilAfterRequest.Merge(m, src)
}
func (m *StartReplicationUntilAfterRequest) XXX_Size() int {
- return xxx_messageInfo_StartReplicationUntilAfterRequest.Size(m)
+ return m.Size()
}
func (m *StartReplicationUntilAfterRequest) XXX_DiscardUnknown() {
xxx_messageInfo_StartReplicationUntilAfterRequest.DiscardUnknown(m)
@@ -2467,18 +2940,26 @@ func (*StartReplicationUntilAfterResponse) ProtoMessage() {}
func (*StartReplicationUntilAfterResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{59}
}
-
func (m *StartReplicationUntilAfterResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StartReplicationUntilAfterResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *StartReplicationUntilAfterResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StartReplicationUntilAfterResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_StartReplicationUntilAfterResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *StartReplicationUntilAfterResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_StartReplicationUntilAfterResponse.Merge(m, src)
}
func (m *StartReplicationUntilAfterResponse) XXX_Size() int {
- return xxx_messageInfo_StartReplicationUntilAfterResponse.Size(m)
+ return m.Size()
}
func (m *StartReplicationUntilAfterResponse) XXX_DiscardUnknown() {
xxx_messageInfo_StartReplicationUntilAfterResponse.DiscardUnknown(m)
@@ -2498,18 +2979,26 @@ func (*GetReplicasRequest) ProtoMessage() {}
func (*GetReplicasRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{60}
}
-
func (m *GetReplicasRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_GetReplicasRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *GetReplicasRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_GetReplicasRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_GetReplicasRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *GetReplicasRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetReplicasRequest.Merge(m, src)
}
func (m *GetReplicasRequest) XXX_Size() int {
- return xxx_messageInfo_GetReplicasRequest.Size(m)
+ return m.Size()
}
func (m *GetReplicasRequest) XXX_DiscardUnknown() {
xxx_messageInfo_GetReplicasRequest.DiscardUnknown(m)
@@ -2530,18 +3019,26 @@ func (*GetReplicasResponse) ProtoMessage() {}
func (*GetReplicasResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{61}
}
-
func (m *GetReplicasResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_GetReplicasResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *GetReplicasResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_GetReplicasResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_GetReplicasResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *GetReplicasResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetReplicasResponse.Merge(m, src)
}
func (m *GetReplicasResponse) XXX_Size() int {
- return xxx_messageInfo_GetReplicasResponse.Size(m)
+ return m.Size()
}
func (m *GetReplicasResponse) XXX_DiscardUnknown() {
xxx_messageInfo_GetReplicasResponse.DiscardUnknown(m)
@@ -2568,18 +3065,26 @@ func (*ResetReplicationRequest) ProtoMessage() {}
func (*ResetReplicationRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{62}
}
-
func (m *ResetReplicationRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ResetReplicationRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ResetReplicationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ResetReplicationRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ResetReplicationRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ResetReplicationRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ResetReplicationRequest.Merge(m, src)
}
func (m *ResetReplicationRequest) XXX_Size() int {
- return xxx_messageInfo_ResetReplicationRequest.Size(m)
+ return m.Size()
}
func (m *ResetReplicationRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ResetReplicationRequest.DiscardUnknown(m)
@@ -2599,18 +3104,26 @@ func (*ResetReplicationResponse) ProtoMessage() {}
func (*ResetReplicationResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{63}
}
-
func (m *ResetReplicationResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ResetReplicationResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ResetReplicationResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ResetReplicationResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ResetReplicationResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ResetReplicationResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ResetReplicationResponse.Merge(m, src)
}
func (m *ResetReplicationResponse) XXX_Size() int {
- return xxx_messageInfo_ResetReplicationResponse.Size(m)
+ return m.Size()
}
func (m *ResetReplicationResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ResetReplicationResponse.DiscardUnknown(m)
@@ -2631,18 +3144,26 @@ func (*VReplicationExecRequest) ProtoMessage() {}
func (*VReplicationExecRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{64}
}
-
func (m *VReplicationExecRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_VReplicationExecRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *VReplicationExecRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_VReplicationExecRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_VReplicationExecRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *VReplicationExecRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_VReplicationExecRequest.Merge(m, src)
}
func (m *VReplicationExecRequest) XXX_Size() int {
- return xxx_messageInfo_VReplicationExecRequest.Size(m)
+ return m.Size()
}
func (m *VReplicationExecRequest) XXX_DiscardUnknown() {
xxx_messageInfo_VReplicationExecRequest.DiscardUnknown(m)
@@ -2670,18 +3191,26 @@ func (*VReplicationExecResponse) ProtoMessage() {}
func (*VReplicationExecResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{65}
}
-
func (m *VReplicationExecResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_VReplicationExecResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *VReplicationExecResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_VReplicationExecResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_VReplicationExecResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *VReplicationExecResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_VReplicationExecResponse.Merge(m, src)
}
func (m *VReplicationExecResponse) XXX_Size() int {
- return xxx_messageInfo_VReplicationExecResponse.Size(m)
+ return m.Size()
}
func (m *VReplicationExecResponse) XXX_DiscardUnknown() {
xxx_messageInfo_VReplicationExecResponse.DiscardUnknown(m)
@@ -2710,18 +3239,26 @@ func (*VReplicationWaitForPosRequest) ProtoMessage() {}
func (*VReplicationWaitForPosRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{66}
}
-
func (m *VReplicationWaitForPosRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_VReplicationWaitForPosRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *VReplicationWaitForPosRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_VReplicationWaitForPosRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_VReplicationWaitForPosRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *VReplicationWaitForPosRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_VReplicationWaitForPosRequest.Merge(m, src)
}
func (m *VReplicationWaitForPosRequest) XXX_Size() int {
- return xxx_messageInfo_VReplicationWaitForPosRequest.Size(m)
+ return m.Size()
}
func (m *VReplicationWaitForPosRequest) XXX_DiscardUnknown() {
xxx_messageInfo_VReplicationWaitForPosRequest.DiscardUnknown(m)
@@ -2755,18 +3292,26 @@ func (*VReplicationWaitForPosResponse) ProtoMessage() {}
func (*VReplicationWaitForPosResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{67}
}
-
func (m *VReplicationWaitForPosResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_VReplicationWaitForPosResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *VReplicationWaitForPosResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_VReplicationWaitForPosResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_VReplicationWaitForPosResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *VReplicationWaitForPosResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_VReplicationWaitForPosResponse.Merge(m, src)
}
func (m *VReplicationWaitForPosResponse) XXX_Size() int {
- return xxx_messageInfo_VReplicationWaitForPosResponse.Size(m)
+ return m.Size()
}
func (m *VReplicationWaitForPosResponse) XXX_DiscardUnknown() {
xxx_messageInfo_VReplicationWaitForPosResponse.DiscardUnknown(m)
@@ -2786,18 +3331,26 @@ func (*InitMasterRequest) ProtoMessage() {}
func (*InitMasterRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{68}
}
-
func (m *InitMasterRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_InitMasterRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *InitMasterRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_InitMasterRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_InitMasterRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *InitMasterRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_InitMasterRequest.Merge(m, src)
}
func (m *InitMasterRequest) XXX_Size() int {
- return xxx_messageInfo_InitMasterRequest.Size(m)
+ return m.Size()
}
func (m *InitMasterRequest) XXX_DiscardUnknown() {
xxx_messageInfo_InitMasterRequest.DiscardUnknown(m)
@@ -2818,18 +3371,26 @@ func (*InitMasterResponse) ProtoMessage() {}
func (*InitMasterResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{69}
}
-
func (m *InitMasterResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_InitMasterResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *InitMasterResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_InitMasterResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_InitMasterResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *InitMasterResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_InitMasterResponse.Merge(m, src)
}
func (m *InitMasterResponse) XXX_Size() int {
- return xxx_messageInfo_InitMasterResponse.Size(m)
+ return m.Size()
}
func (m *InitMasterResponse) XXX_DiscardUnknown() {
xxx_messageInfo_InitMasterResponse.DiscardUnknown(m)
@@ -2860,18 +3421,26 @@ func (*PopulateReparentJournalRequest) ProtoMessage() {}
func (*PopulateReparentJournalRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{70}
}
-
func (m *PopulateReparentJournalRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_PopulateReparentJournalRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *PopulateReparentJournalRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_PopulateReparentJournalRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_PopulateReparentJournalRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *PopulateReparentJournalRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_PopulateReparentJournalRequest.Merge(m, src)
}
func (m *PopulateReparentJournalRequest) XXX_Size() int {
- return xxx_messageInfo_PopulateReparentJournalRequest.Size(m)
+ return m.Size()
}
func (m *PopulateReparentJournalRequest) XXX_DiscardUnknown() {
xxx_messageInfo_PopulateReparentJournalRequest.DiscardUnknown(m)
@@ -2919,18 +3488,26 @@ func (*PopulateReparentJournalResponse) ProtoMessage() {}
func (*PopulateReparentJournalResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{71}
}
-
func (m *PopulateReparentJournalResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_PopulateReparentJournalResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *PopulateReparentJournalResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_PopulateReparentJournalResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_PopulateReparentJournalResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *PopulateReparentJournalResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_PopulateReparentJournalResponse.Merge(m, src)
}
func (m *PopulateReparentJournalResponse) XXX_Size() int {
- return xxx_messageInfo_PopulateReparentJournalResponse.Size(m)
+ return m.Size()
}
func (m *PopulateReparentJournalResponse) XXX_DiscardUnknown() {
xxx_messageInfo_PopulateReparentJournalResponse.DiscardUnknown(m)
@@ -2953,18 +3530,26 @@ func (*InitReplicaRequest) ProtoMessage() {}
func (*InitReplicaRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{72}
}
-
func (m *InitReplicaRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_InitReplicaRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *InitReplicaRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_InitReplicaRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_InitReplicaRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *InitReplicaRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_InitReplicaRequest.Merge(m, src)
}
func (m *InitReplicaRequest) XXX_Size() int {
- return xxx_messageInfo_InitReplicaRequest.Size(m)
+ return m.Size()
}
func (m *InitReplicaRequest) XXX_DiscardUnknown() {
xxx_messageInfo_InitReplicaRequest.DiscardUnknown(m)
@@ -3005,18 +3590,26 @@ func (*InitReplicaResponse) ProtoMessage() {}
func (*InitReplicaResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{73}
}
-
func (m *InitReplicaResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_InitReplicaResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *InitReplicaResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_InitReplicaResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_InitReplicaResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *InitReplicaResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_InitReplicaResponse.Merge(m, src)
}
func (m *InitReplicaResponse) XXX_Size() int {
- return xxx_messageInfo_InitReplicaResponse.Size(m)
+ return m.Size()
}
func (m *InitReplicaResponse) XXX_DiscardUnknown() {
xxx_messageInfo_InitReplicaResponse.DiscardUnknown(m)
@@ -3036,18 +3629,26 @@ func (*DemoteMasterRequest) ProtoMessage() {}
func (*DemoteMasterRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{74}
}
-
func (m *DemoteMasterRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_DemoteMasterRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *DemoteMasterRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_DemoteMasterRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_DemoteMasterRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *DemoteMasterRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_DemoteMasterRequest.Merge(m, src)
}
func (m *DemoteMasterRequest) XXX_Size() int {
- return xxx_messageInfo_DemoteMasterRequest.Size(m)
+ return m.Size()
}
func (m *DemoteMasterRequest) XXX_DiscardUnknown() {
xxx_messageInfo_DemoteMasterRequest.DiscardUnknown(m)
@@ -3071,18 +3672,26 @@ func (*DemoteMasterResponse) ProtoMessage() {}
func (*DemoteMasterResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{75}
}
-
func (m *DemoteMasterResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_DemoteMasterResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *DemoteMasterResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_DemoteMasterResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_DemoteMasterResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *DemoteMasterResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_DemoteMasterResponse.Merge(m, src)
}
func (m *DemoteMasterResponse) XXX_Size() int {
- return xxx_messageInfo_DemoteMasterResponse.Size(m)
+ return m.Size()
}
func (m *DemoteMasterResponse) XXX_DiscardUnknown() {
xxx_messageInfo_DemoteMasterResponse.DiscardUnknown(m)
@@ -3117,18 +3726,26 @@ func (*UndoDemoteMasterRequest) ProtoMessage() {}
func (*UndoDemoteMasterRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{76}
}
-
func (m *UndoDemoteMasterRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_UndoDemoteMasterRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *UndoDemoteMasterRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_UndoDemoteMasterRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_UndoDemoteMasterRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *UndoDemoteMasterRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_UndoDemoteMasterRequest.Merge(m, src)
}
func (m *UndoDemoteMasterRequest) XXX_Size() int {
- return xxx_messageInfo_UndoDemoteMasterRequest.Size(m)
+ return m.Size()
}
func (m *UndoDemoteMasterRequest) XXX_DiscardUnknown() {
xxx_messageInfo_UndoDemoteMasterRequest.DiscardUnknown(m)
@@ -3148,18 +3765,26 @@ func (*UndoDemoteMasterResponse) ProtoMessage() {}
func (*UndoDemoteMasterResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{77}
}
-
func (m *UndoDemoteMasterResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_UndoDemoteMasterResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *UndoDemoteMasterResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_UndoDemoteMasterResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_UndoDemoteMasterResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *UndoDemoteMasterResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_UndoDemoteMasterResponse.Merge(m, src)
}
func (m *UndoDemoteMasterResponse) XXX_Size() int {
- return xxx_messageInfo_UndoDemoteMasterResponse.Size(m)
+ return m.Size()
}
func (m *UndoDemoteMasterResponse) XXX_DiscardUnknown() {
xxx_messageInfo_UndoDemoteMasterResponse.DiscardUnknown(m)
@@ -3179,18 +3804,26 @@ func (*ReplicaWasPromotedRequest) ProtoMessage() {}
func (*ReplicaWasPromotedRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{78}
}
-
func (m *ReplicaWasPromotedRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ReplicaWasPromotedRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ReplicaWasPromotedRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ReplicaWasPromotedRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ReplicaWasPromotedRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ReplicaWasPromotedRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReplicaWasPromotedRequest.Merge(m, src)
}
func (m *ReplicaWasPromotedRequest) XXX_Size() int {
- return xxx_messageInfo_ReplicaWasPromotedRequest.Size(m)
+ return m.Size()
}
func (m *ReplicaWasPromotedRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ReplicaWasPromotedRequest.DiscardUnknown(m)
@@ -3210,18 +3843,26 @@ func (*ReplicaWasPromotedResponse) ProtoMessage() {}
func (*ReplicaWasPromotedResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{79}
}
-
func (m *ReplicaWasPromotedResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ReplicaWasPromotedResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ReplicaWasPromotedResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ReplicaWasPromotedResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ReplicaWasPromotedResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ReplicaWasPromotedResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReplicaWasPromotedResponse.Merge(m, src)
}
func (m *ReplicaWasPromotedResponse) XXX_Size() int {
- return xxx_messageInfo_ReplicaWasPromotedResponse.Size(m)
+ return m.Size()
}
func (m *ReplicaWasPromotedResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ReplicaWasPromotedResponse.DiscardUnknown(m)
@@ -3245,18 +3886,26 @@ func (*SetMasterRequest) ProtoMessage() {}
func (*SetMasterRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{80}
}
-
func (m *SetMasterRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_SetMasterRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *SetMasterRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_SetMasterRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_SetMasterRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *SetMasterRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_SetMasterRequest.Merge(m, src)
}
func (m *SetMasterRequest) XXX_Size() int {
- return xxx_messageInfo_SetMasterRequest.Size(m)
+ return m.Size()
}
func (m *SetMasterRequest) XXX_DiscardUnknown() {
xxx_messageInfo_SetMasterRequest.DiscardUnknown(m)
@@ -3304,18 +3953,26 @@ func (*SetMasterResponse) ProtoMessage() {}
func (*SetMasterResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{81}
}
-
func (m *SetMasterResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_SetMasterResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *SetMasterResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_SetMasterResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_SetMasterResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *SetMasterResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_SetMasterResponse.Merge(m, src)
}
func (m *SetMasterResponse) XXX_Size() int {
- return xxx_messageInfo_SetMasterResponse.Size(m)
+ return m.Size()
}
func (m *SetMasterResponse) XXX_DiscardUnknown() {
xxx_messageInfo_SetMasterResponse.DiscardUnknown(m)
@@ -3337,18 +3994,26 @@ func (*ReplicaWasRestartedRequest) ProtoMessage() {}
func (*ReplicaWasRestartedRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{82}
}
-
func (m *ReplicaWasRestartedRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ReplicaWasRestartedRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ReplicaWasRestartedRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ReplicaWasRestartedRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ReplicaWasRestartedRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ReplicaWasRestartedRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReplicaWasRestartedRequest.Merge(m, src)
}
func (m *ReplicaWasRestartedRequest) XXX_Size() int {
- return xxx_messageInfo_ReplicaWasRestartedRequest.Size(m)
+ return m.Size()
}
func (m *ReplicaWasRestartedRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ReplicaWasRestartedRequest.DiscardUnknown(m)
@@ -3375,18 +4040,26 @@ func (*ReplicaWasRestartedResponse) ProtoMessage() {}
func (*ReplicaWasRestartedResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{83}
}
-
func (m *ReplicaWasRestartedResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ReplicaWasRestartedResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ReplicaWasRestartedResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ReplicaWasRestartedResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ReplicaWasRestartedResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ReplicaWasRestartedResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReplicaWasRestartedResponse.Merge(m, src)
}
func (m *ReplicaWasRestartedResponse) XXX_Size() int {
- return xxx_messageInfo_ReplicaWasRestartedResponse.Size(m)
+ return m.Size()
}
func (m *ReplicaWasRestartedResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ReplicaWasRestartedResponse.DiscardUnknown(m)
@@ -3407,18 +4080,26 @@ func (*StopReplicationAndGetStatusRequest) ProtoMessage() {}
func (*StopReplicationAndGetStatusRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{84}
}
-
func (m *StopReplicationAndGetStatusRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StopReplicationAndGetStatusRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *StopReplicationAndGetStatusRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StopReplicationAndGetStatusRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_StopReplicationAndGetStatusRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *StopReplicationAndGetStatusRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_StopReplicationAndGetStatusRequest.Merge(m, src)
}
func (m *StopReplicationAndGetStatusRequest) XXX_Size() int {
- return xxx_messageInfo_StopReplicationAndGetStatusRequest.Size(m)
+ return m.Size()
}
func (m *StopReplicationAndGetStatusRequest) XXX_DiscardUnknown() {
xxx_messageInfo_StopReplicationAndGetStatusRequest.DiscardUnknown(m)
@@ -3451,18 +4132,26 @@ func (*StopReplicationAndGetStatusResponse) ProtoMessage() {}
func (*StopReplicationAndGetStatusResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{85}
}
-
func (m *StopReplicationAndGetStatusResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StopReplicationAndGetStatusResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *StopReplicationAndGetStatusResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StopReplicationAndGetStatusResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_StopReplicationAndGetStatusResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *StopReplicationAndGetStatusResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_StopReplicationAndGetStatusResponse.Merge(m, src)
}
func (m *StopReplicationAndGetStatusResponse) XXX_Size() int {
- return xxx_messageInfo_StopReplicationAndGetStatusResponse.Size(m)
+ return m.Size()
}
func (m *StopReplicationAndGetStatusResponse) XXX_DiscardUnknown() {
xxx_messageInfo_StopReplicationAndGetStatusResponse.DiscardUnknown(m)
@@ -3497,18 +4186,26 @@ func (*PromoteReplicaRequest) ProtoMessage() {}
func (*PromoteReplicaRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{86}
}
-
func (m *PromoteReplicaRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_PromoteReplicaRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *PromoteReplicaRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_PromoteReplicaRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_PromoteReplicaRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *PromoteReplicaRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_PromoteReplicaRequest.Merge(m, src)
}
func (m *PromoteReplicaRequest) XXX_Size() int {
- return xxx_messageInfo_PromoteReplicaRequest.Size(m)
+ return m.Size()
}
func (m *PromoteReplicaRequest) XXX_DiscardUnknown() {
xxx_messageInfo_PromoteReplicaRequest.DiscardUnknown(m)
@@ -3529,18 +4226,26 @@ func (*PromoteReplicaResponse) ProtoMessage() {}
func (*PromoteReplicaResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{87}
}
-
func (m *PromoteReplicaResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_PromoteReplicaResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *PromoteReplicaResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_PromoteReplicaResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_PromoteReplicaResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *PromoteReplicaResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_PromoteReplicaResponse.Merge(m, src)
}
func (m *PromoteReplicaResponse) XXX_Size() int {
- return xxx_messageInfo_PromoteReplicaResponse.Size(m)
+ return m.Size()
}
func (m *PromoteReplicaResponse) XXX_DiscardUnknown() {
xxx_messageInfo_PromoteReplicaResponse.DiscardUnknown(m)
@@ -3569,18 +4274,26 @@ func (*BackupRequest) ProtoMessage() {}
func (*BackupRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{88}
}
-
func (m *BackupRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_BackupRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *BackupRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_BackupRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_BackupRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *BackupRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_BackupRequest.Merge(m, src)
}
func (m *BackupRequest) XXX_Size() int {
- return xxx_messageInfo_BackupRequest.Size(m)
+ return m.Size()
}
func (m *BackupRequest) XXX_DiscardUnknown() {
xxx_messageInfo_BackupRequest.DiscardUnknown(m)
@@ -3615,18 +4328,26 @@ func (*BackupResponse) ProtoMessage() {}
func (*BackupResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{89}
}
-
func (m *BackupResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_BackupResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *BackupResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_BackupResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_BackupResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *BackupResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_BackupResponse.Merge(m, src)
}
func (m *BackupResponse) XXX_Size() int {
- return xxx_messageInfo_BackupResponse.Size(m)
+ return m.Size()
}
func (m *BackupResponse) XXX_DiscardUnknown() {
xxx_messageInfo_BackupResponse.DiscardUnknown(m)
@@ -3653,18 +4374,26 @@ func (*RestoreFromBackupRequest) ProtoMessage() {}
func (*RestoreFromBackupRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{90}
}
-
func (m *RestoreFromBackupRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_RestoreFromBackupRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *RestoreFromBackupRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_RestoreFromBackupRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_RestoreFromBackupRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *RestoreFromBackupRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_RestoreFromBackupRequest.Merge(m, src)
}
func (m *RestoreFromBackupRequest) XXX_Size() int {
- return xxx_messageInfo_RestoreFromBackupRequest.Size(m)
+ return m.Size()
}
func (m *RestoreFromBackupRequest) XXX_DiscardUnknown() {
xxx_messageInfo_RestoreFromBackupRequest.DiscardUnknown(m)
@@ -3685,18 +4414,26 @@ func (*RestoreFromBackupResponse) ProtoMessage() {}
func (*RestoreFromBackupResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{91}
}
-
func (m *RestoreFromBackupResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_RestoreFromBackupResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *RestoreFromBackupResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_RestoreFromBackupResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_RestoreFromBackupResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *RestoreFromBackupResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_RestoreFromBackupResponse.Merge(m, src)
}
func (m *RestoreFromBackupResponse) XXX_Size() int {
- return xxx_messageInfo_RestoreFromBackupResponse.Size(m)
+ return m.Size()
}
func (m *RestoreFromBackupResponse) XXX_DiscardUnknown() {
xxx_messageInfo_RestoreFromBackupResponse.DiscardUnknown(m)
@@ -3726,18 +4463,26 @@ func (*VExecRequest) ProtoMessage() {}
func (*VExecRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{92}
}
-
func (m *VExecRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_VExecRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *VExecRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_VExecRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_VExecRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *VExecRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_VExecRequest.Merge(m, src)
}
func (m *VExecRequest) XXX_Size() int {
- return xxx_messageInfo_VExecRequest.Size(m)
+ return m.Size()
}
func (m *VExecRequest) XXX_DiscardUnknown() {
xxx_messageInfo_VExecRequest.DiscardUnknown(m)
@@ -3779,18 +4524,26 @@ func (*VExecResponse) ProtoMessage() {}
func (*VExecResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_ff9ac4f89e61ffa4, []int{93}
}
-
func (m *VExecResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_VExecResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *VExecResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_VExecResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_VExecResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *VExecResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_VExecResponse.Merge(m, src)
}
func (m *VExecResponse) XXX_Size() int {
- return xxx_messageInfo_VExecResponse.Size(m)
+ return m.Size()
}
func (m *VExecResponse) XXX_DiscardUnknown() {
xxx_messageInfo_VExecResponse.DiscardUnknown(m)
@@ -3908,142 +4661,13745 @@ func init() {
func init() { proto.RegisterFile("tabletmanagerdata.proto", fileDescriptor_ff9ac4f89e61ffa4) }
var fileDescriptor_ff9ac4f89e61ffa4 = []byte{
- // 2181 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x19, 0xdb, 0x72, 0xdb, 0xc6,
- 0x75, 0x40, 0x4a, 0x32, 0x75, 0x78, 0x11, 0x05, 0x52, 0x22, 0x44, 0xd7, 0xb2, 0x0c, 0x3b, 0x89,
- 0x27, 0x99, 0x52, 0x89, 0x9c, 0x64, 0x32, 0x49, 0xdb, 0xa9, 0x6c, 0x4b, 0x76, 0x62, 0x39, 0x56,
- 0x20, 0x5f, 0x3a, 0x99, 0x4e, 0x31, 0x20, 0xb0, 0x22, 0x31, 0x02, 0xb1, 0xf0, 0xee, 0x82, 0x14,
- 0x5f, 0xfa, 0x09, 0xed, 0x1f, 0xf4, 0xa5, 0x33, 0xed, 0x7b, 0x3f, 0xa2, 0x9f, 0x90, 0x7e, 0x4a,
- 0x1f, 0xfa, 0xd0, 0xce, 0x5e, 0x40, 0x02, 0x04, 0x64, 0xcb, 0x1a, 0x77, 0x26, 0x2f, 0x1a, 0x9c,
- 0xfb, 0x65, 0xcf, 0x9e, 0x73, 0x96, 0x82, 0x0e, 0x73, 0xfa, 0x01, 0x62, 0x23, 0x27, 0x74, 0x06,
- 0x88, 0x78, 0x0e, 0x73, 0x7a, 0x11, 0xc1, 0x0c, 0xeb, 0xeb, 0x39, 0x42, 0xb7, 0xfa, 0x3a, 0x46,
- 0x64, 0x2a, 0xe9, 0xdd, 0x06, 0xc3, 0x11, 0x9e, 0xf3, 0x77, 0x37, 0x08, 0x8a, 0x02, 0xdf, 0x75,
- 0x98, 0x8f, 0xc3, 0x14, 0xba, 0x1e, 0xe0, 0x41, 0xcc, 0xfc, 0x40, 0x82, 0xe6, 0x7f, 0x35, 0x58,
- 0x7b, 0xce, 0x15, 0x3f, 0x44, 0xa7, 0x7e, 0xe8, 0x73, 0x66, 0x5d, 0x87, 0xa5, 0xd0, 0x19, 0x21,
- 0x43, 0xdb, 0xd1, 0xee, 0xae, 0x5a, 0xe2, 0x5b, 0xdf, 0x84, 0x15, 0xea, 0x0e, 0xd1, 0xc8, 0x31,
- 0x4a, 0x02, 0xab, 0x20, 0xdd, 0x80, 0x6b, 0x2e, 0x0e, 0xe2, 0x51, 0x48, 0x8d, 0xf2, 0x4e, 0xf9,
- 0xee, 0xaa, 0x95, 0x80, 0x7a, 0x0f, 0x5a, 0x11, 0xf1, 0x47, 0x0e, 0x99, 0xda, 0x67, 0x68, 0x6a,
- 0x27, 0x5c, 0x4b, 0x82, 0x6b, 0x5d, 0x91, 0x9e, 0xa0, 0xe9, 0x03, 0xc5, 0xaf, 0xc3, 0x12, 0x9b,
- 0x46, 0xc8, 0x58, 0x96, 0x56, 0xf9, 0xb7, 0x7e, 0x13, 0xaa, 0xdc, 0x75, 0x3b, 0x40, 0xe1, 0x80,
- 0x0d, 0x8d, 0x95, 0x1d, 0xed, 0xee, 0x92, 0x05, 0x1c, 0x75, 0x24, 0x30, 0xfa, 0x75, 0x58, 0x25,
- 0x78, 0x62, 0xbb, 0x38, 0x0e, 0x99, 0x71, 0x4d, 0x90, 0x2b, 0x04, 0x4f, 0x1e, 0x70, 0x58, 0xbf,
- 0x03, 0x2b, 0xa7, 0x3e, 0x0a, 0x3c, 0x6a, 0x54, 0x76, 0xca, 0x77, 0xab, 0x7b, 0xb5, 0x9e, 0xcc,
- 0xd7, 0x21, 0x47, 0x5a, 0x8a, 0x66, 0xfe, 0x4d, 0x83, 0xe6, 0x89, 0x08, 0x26, 0x95, 0x82, 0x8f,
- 0x60, 0x8d, 0x5b, 0xe9, 0x3b, 0x14, 0xd9, 0x2a, 0x6e, 0x99, 0x8d, 0x46, 0x82, 0x96, 0x22, 0xfa,
- 0x33, 0x90, 0xe7, 0x62, 0x7b, 0x33, 0x61, 0x6a, 0x94, 0x84, 0x39, 0xb3, 0x97, 0x3f, 0xca, 0x85,
- 0x54, 0x5b, 0x4d, 0x96, 0x45, 0x50, 0x9e, 0xd0, 0x31, 0x22, 0xd4, 0xc7, 0xa1, 0x51, 0x16, 0x16,
- 0x13, 0x90, 0x3b, 0xaa, 0x4b, 0xab, 0x0f, 0x86, 0x4e, 0x38, 0x40, 0x16, 0xa2, 0x71, 0xc0, 0xf4,
- 0xc7, 0x50, 0xef, 0xa3, 0x53, 0x4c, 0x32, 0x8e, 0x56, 0xf7, 0x6e, 0x17, 0x58, 0x5f, 0x0c, 0xd3,
- 0xaa, 0x49, 0x49, 0x15, 0xcb, 0x21, 0xd4, 0x9c, 0x53, 0x86, 0x88, 0x9d, 0x3a, 0xe9, 0x4b, 0x2a,
- 0xaa, 0x0a, 0x41, 0x89, 0x36, 0xff, 0xad, 0x41, 0xe3, 0x05, 0x45, 0xe4, 0x18, 0x91, 0x91, 0x4f,
- 0xa9, 0x2a, 0xa9, 0x21, 0xa6, 0x2c, 0x29, 0x29, 0xfe, 0xcd, 0x71, 0x31, 0x45, 0x44, 0x15, 0x94,
- 0xf8, 0xd6, 0x3f, 0x81, 0xf5, 0xc8, 0xa1, 0x74, 0x82, 0x89, 0x67, 0xbb, 0x43, 0xe4, 0x9e, 0xd1,
- 0x78, 0x24, 0xf2, 0xb0, 0x64, 0x35, 0x13, 0xc2, 0x03, 0x85, 0xd7, 0x7f, 0x00, 0x88, 0x88, 0x3f,
- 0xf6, 0x03, 0x34, 0x40, 0xb2, 0xb0, 0xaa, 0x7b, 0x9f, 0x15, 0x78, 0x9b, 0xf5, 0xa5, 0x77, 0x3c,
- 0x93, 0x39, 0x08, 0x19, 0x99, 0x5a, 0x29, 0x25, 0xdd, 0x5f, 0xc3, 0xda, 0x02, 0x59, 0x6f, 0x42,
- 0xf9, 0x0c, 0x4d, 0x95, 0xe7, 0xfc, 0x53, 0x6f, 0xc3, 0xf2, 0xd8, 0x09, 0x62, 0xa4, 0x3c, 0x97,
- 0xc0, 0xd7, 0xa5, 0xaf, 0x34, 0xf3, 0x27, 0x0d, 0x6a, 0x0f, 0xfb, 0x6f, 0x89, 0xbb, 0x01, 0x25,
- 0xaf, 0xaf, 0x64, 0x4b, 0x5e, 0x7f, 0x96, 0x87, 0x72, 0x2a, 0x0f, 0xcf, 0x0a, 0x42, 0xdb, 0x2d,
- 0x08, 0x2d, 0x6d, 0xec, 0xff, 0x19, 0xd8, 0x5f, 0x35, 0xa8, 0xce, 0x2d, 0x51, 0xfd, 0x08, 0x9a,
- 0xdc, 0x4f, 0x3b, 0x9a, 0xe3, 0x0c, 0x4d, 0x78, 0x79, 0xeb, 0xad, 0x07, 0x60, 0xad, 0xc5, 0x19,
- 0x98, 0xea, 0x87, 0xd0, 0xf0, 0xfa, 0x19, 0x5d, 0xf2, 0x06, 0xdd, 0x7c, 0x4b, 0xc4, 0x56, 0xdd,
- 0x4b, 0x41, 0xd4, 0xfc, 0x08, 0xaa, 0xc7, 0x7e, 0x38, 0xb0, 0xd0, 0xeb, 0x18, 0x51, 0xc6, 0xaf,
- 0x52, 0xe4, 0x4c, 0x03, 0xec, 0x78, 0x2a, 0xc8, 0x04, 0x34, 0xef, 0x42, 0x4d, 0x32, 0xd2, 0x08,
- 0x87, 0x14, 0xbd, 0x81, 0xf3, 0x63, 0xa8, 0x9d, 0x04, 0x08, 0x45, 0x89, 0xce, 0x2e, 0x54, 0xbc,
- 0x98, 0x88, 0xa6, 0x2a, 0x58, 0xcb, 0xd6, 0x0c, 0x36, 0xd7, 0xa0, 0xae, 0x78, 0xa5, 0x5a, 0xf3,
- 0x5f, 0x1a, 0xe8, 0x07, 0xe7, 0xc8, 0x8d, 0x19, 0x7a, 0x8c, 0xf1, 0x59, 0xa2, 0xa3, 0xa8, 0xbf,
- 0x6e, 0x03, 0x44, 0x0e, 0x71, 0x46, 0x88, 0x21, 0x22, 0xc3, 0x5f, 0xb5, 0x52, 0x18, 0xfd, 0x18,
- 0x56, 0xd1, 0x39, 0x23, 0x8e, 0x8d, 0xc2, 0xb1, 0xe8, 0xb4, 0xd5, 0xbd, 0x7b, 0x05, 0xd9, 0xc9,
- 0x5b, 0xeb, 0x1d, 0x70, 0xb1, 0x83, 0x70, 0x2c, 0x6b, 0xa2, 0x82, 0x14, 0xd8, 0xfd, 0x06, 0xea,
- 0x19, 0xd2, 0x3b, 0xd5, 0xc3, 0x29, 0xb4, 0x32, 0xa6, 0x54, 0x1e, 0x6f, 0x42, 0x15, 0x9d, 0xfb,
- 0xcc, 0xa6, 0xcc, 0x61, 0x31, 0x55, 0x09, 0x02, 0x8e, 0x3a, 0x11, 0x18, 0x31, 0x46, 0x98, 0x87,
- 0x63, 0x36, 0x1b, 0x23, 0x02, 0x52, 0x78, 0x44, 0x92, 0x5b, 0xa0, 0x20, 0x73, 0x0c, 0xcd, 0x47,
- 0x88, 0xc9, 0xbe, 0x92, 0xa4, 0x6f, 0x13, 0x56, 0x44, 0xe0, 0xb2, 0xe2, 0x56, 0x2d, 0x05, 0xe9,
- 0xb7, 0xa1, 0xee, 0x87, 0x6e, 0x10, 0x7b, 0xc8, 0x1e, 0xfb, 0x68, 0x42, 0x85, 0x89, 0x8a, 0x55,
- 0x53, 0xc8, 0x97, 0x1c, 0xa7, 0x7f, 0x00, 0x0d, 0x74, 0x2e, 0x99, 0x94, 0x12, 0x39, 0xb6, 0xea,
- 0x0a, 0x2b, 0x1a, 0x34, 0x35, 0x11, 0xac, 0xa7, 0xec, 0xaa, 0xe8, 0x8e, 0x61, 0x5d, 0x76, 0xc6,
- 0x54, 0xb3, 0x7f, 0x97, 0x6e, 0xdb, 0xa4, 0x0b, 0x18, 0xb3, 0x03, 0x1b, 0x8f, 0x10, 0x4b, 0x95,
- 0xb0, 0x8a, 0xd1, 0xfc, 0x11, 0x36, 0x17, 0x09, 0xca, 0x89, 0xdf, 0x42, 0x35, 0x7b, 0xe9, 0xb8,
- 0xf9, 0xed, 0x02, 0xf3, 0x69, 0xe1, 0xb4, 0x88, 0xd9, 0x06, 0xfd, 0x04, 0x31, 0x0b, 0x39, 0xde,
- 0xb3, 0x30, 0x98, 0x26, 0x16, 0x37, 0xa0, 0x95, 0xc1, 0xaa, 0x12, 0x9e, 0xa3, 0x5f, 0x11, 0x9f,
- 0xa1, 0x84, 0x7b, 0x13, 0xda, 0x59, 0xb4, 0x62, 0xff, 0x0e, 0xd6, 0xe5, 0x70, 0x7a, 0x3e, 0x8d,
- 0x12, 0x66, 0xfd, 0x0b, 0xa8, 0x4a, 0xf7, 0x6c, 0x31, 0xe0, 0xb9, 0xcb, 0x8d, 0xbd, 0x76, 0x6f,
- 0xb6, 0xaf, 0x88, 0x9c, 0x33, 0x21, 0x01, 0x6c, 0xf6, 0xcd, 0xfd, 0x4c, 0xeb, 0x9a, 0x3b, 0x64,
- 0xa1, 0x53, 0x82, 0xe8, 0x90, 0x97, 0x54, 0xda, 0xa1, 0x2c, 0x5a, 0xb1, 0x77, 0x60, 0xc3, 0x8a,
- 0xc3, 0xc7, 0xc8, 0x09, 0xd8, 0x50, 0x0c, 0x8e, 0x44, 0xc0, 0x80, 0xcd, 0x45, 0x82, 0x12, 0xf9,
- 0x1c, 0x8c, 0x6f, 0x07, 0x21, 0x26, 0x48, 0x12, 0x0f, 0x08, 0xc1, 0x24, 0xd3, 0x52, 0x18, 0x43,
- 0x24, 0x9c, 0x37, 0x0a, 0x01, 0x9a, 0xd7, 0x61, 0xab, 0x40, 0x4a, 0xa9, 0xfc, 0x9a, 0x3b, 0xcd,
- 0xfb, 0x49, 0xb6, 0x92, 0x6f, 0x43, 0x7d, 0xe2, 0xf8, 0xcc, 0x8e, 0x30, 0x9d, 0x17, 0xd3, 0xaa,
- 0x55, 0xe3, 0xc8, 0x63, 0x85, 0x93, 0x91, 0xa5, 0x65, 0x95, 0xce, 0x3d, 0xd8, 0x3c, 0x26, 0xe8,
- 0x34, 0xf0, 0x07, 0xc3, 0x85, 0x0b, 0xc2, 0x77, 0x32, 0x91, 0xb8, 0xe4, 0x86, 0x24, 0xa0, 0x39,
- 0x80, 0x4e, 0x4e, 0x46, 0xd5, 0xd5, 0x11, 0x34, 0x24, 0x97, 0x4d, 0xc4, 0x5e, 0x91, 0xf4, 0xf3,
- 0x0f, 0x2e, 0xac, 0xec, 0xf4, 0x16, 0x62, 0xd5, 0xdd, 0x14, 0x44, 0xcd, 0xff, 0x68, 0xa0, 0xef,
- 0x47, 0x51, 0x30, 0xcd, 0x7a, 0xd6, 0x84, 0x32, 0x7d, 0x1d, 0x24, 0x2d, 0x86, 0xbe, 0x0e, 0x78,
- 0x8b, 0x39, 0xc5, 0xc4, 0x45, 0xea, 0xb2, 0x4a, 0x80, 0xaf, 0x01, 0x4e, 0x10, 0xe0, 0x89, 0x9d,
- 0xda, 0x61, 0x45, 0x67, 0xa8, 0x58, 0x4d, 0x41, 0xb0, 0xe6, 0xf8, 0xfc, 0x02, 0xb4, 0xf4, 0xbe,
- 0x16, 0xa0, 0xe5, 0x2b, 0x2e, 0x40, 0x7f, 0xd7, 0xa0, 0x95, 0x89, 0x5e, 0xe5, 0xf8, 0xe7, 0xb7,
- 0xaa, 0xb5, 0x60, 0xfd, 0x08, 0xbb, 0x67, 0xb2, 0xeb, 0x25, 0x57, 0xa3, 0x0d, 0x7a, 0x1a, 0x39,
- 0xbf, 0x78, 0x2f, 0xc2, 0x20, 0xc7, 0xbc, 0x09, 0xed, 0x2c, 0x5a, 0xb1, 0xff, 0x43, 0x03, 0x43,
- 0x8d, 0x88, 0x43, 0xc4, 0xdc, 0xe1, 0x3e, 0x7d, 0xd8, 0x9f, 0xd5, 0x41, 0x1b, 0x96, 0xc5, 0x2a,
- 0x2e, 0x12, 0x50, 0xb3, 0x24, 0xa0, 0x77, 0xe0, 0x9a, 0xd7, 0xb7, 0xc5, 0x68, 0x54, 0xd3, 0xc1,
- 0xeb, 0x7f, 0xcf, 0x87, 0xe3, 0x16, 0x54, 0x46, 0xce, 0xb9, 0x4d, 0xf0, 0x84, 0xaa, 0x65, 0xf0,
- 0xda, 0xc8, 0x39, 0xb7, 0xf0, 0x84, 0x8a, 0x45, 0xdd, 0xa7, 0x62, 0x03, 0xef, 0xfb, 0x61, 0x80,
- 0x07, 0x54, 0x1c, 0x7f, 0xc5, 0x6a, 0x28, 0xf4, 0x7d, 0x89, 0xe5, 0x77, 0x8d, 0x88, 0x6b, 0x94,
- 0x3e, 0xdc, 0x8a, 0x55, 0x23, 0xa9, 0xbb, 0x65, 0x3e, 0x82, 0xad, 0x02, 0x9f, 0xd5, 0xe9, 0x7d,
- 0x0c, 0x2b, 0xf2, 0x6a, 0xa8, 0x63, 0xd3, 0xd5, 0x73, 0xe2, 0x07, 0xfe, 0x57, 0x5d, 0x03, 0xc5,
- 0x61, 0xfe, 0x49, 0x83, 0x1b, 0x59, 0x4d, 0xfb, 0x41, 0xc0, 0x17, 0x30, 0xfa, 0xfe, 0x53, 0x90,
- 0x8b, 0x6c, 0xa9, 0x20, 0xb2, 0x23, 0xd8, 0xbe, 0xc8, 0x9f, 0x2b, 0x84, 0xf7, 0x64, 0xf1, 0x6c,
- 0xf7, 0xa3, 0xe8, 0xcd, 0x81, 0xa5, 0xfd, 0x2f, 0x65, 0xfc, 0xcf, 0x27, 0x5d, 0x28, 0xbb, 0x82,
- 0x57, 0x5d, 0x30, 0x52, 0x7d, 0x41, 0x6e, 0x1c, 0x49, 0x99, 0x1e, 0xc1, 0x56, 0x01, 0x4d, 0x19,
- 0xd9, 0xe5, 0xdb, 0xc7, 0x6c, 0x63, 0xa9, 0xee, 0x75, 0x7a, 0x8b, 0x6f, 0x67, 0x25, 0xa0, 0xd8,
- 0xf8, 0x5d, 0x78, 0xea, 0x50, 0x7e, 0x8d, 0x32, 0x46, 0x9e, 0x42, 0x3b, 0x8b, 0x56, 0xfa, 0xbf,
- 0x58, 0xd0, 0x7f, 0x23, 0xa7, 0x3f, 0x23, 0x96, 0x58, 0xe9, 0xc0, 0x86, 0xc4, 0x27, 0xb3, 0x20,
- 0xb1, 0xf3, 0x39, 0x6c, 0x2e, 0x12, 0x94, 0xa5, 0x2e, 0x54, 0x16, 0x86, 0xc9, 0x0c, 0xe6, 0x52,
- 0xaf, 0x1c, 0x9f, 0x1d, 0xe2, 0x45, 0x7d, 0x6f, 0x94, 0xda, 0x82, 0x4e, 0x4e, 0x4a, 0x5d, 0x71,
- 0x03, 0x36, 0x4f, 0x18, 0x8e, 0x52, 0x79, 0x4d, 0x1c, 0xdc, 0x82, 0x4e, 0x8e, 0xa2, 0x84, 0xfe,
- 0x00, 0x37, 0x16, 0x48, 0x4f, 0xfd, 0xd0, 0x1f, 0xc5, 0xa3, 0x4b, 0x38, 0xa3, 0xdf, 0x02, 0x31,
- 0x1b, 0x6d, 0xe6, 0x8f, 0x50, 0xb2, 0x44, 0x96, 0xad, 0x2a, 0xc7, 0x3d, 0x97, 0x28, 0xf3, 0x57,
- 0xb0, 0x7d, 0x91, 0xfe, 0x4b, 0xe4, 0x48, 0x38, 0xee, 0x10, 0x56, 0x10, 0x53, 0x17, 0x8c, 0x3c,
- 0x49, 0x05, 0xd5, 0x87, 0x5b, 0x8b, 0xb4, 0x17, 0x21, 0xf3, 0x83, 0x7d, 0xde, 0x6a, 0xdf, 0x53,
- 0x60, 0x77, 0xc0, 0x7c, 0x93, 0x0d, 0xe5, 0x49, 0x1b, 0xf4, 0x47, 0x28, 0xe1, 0x99, 0x15, 0xe6,
- 0x27, 0xd0, 0xca, 0x60, 0x55, 0x26, 0xda, 0xb0, 0xec, 0x78, 0x1e, 0x49, 0xd6, 0x04, 0x09, 0xf0,
- 0x1c, 0x58, 0x88, 0xa2, 0x0b, 0x72, 0x90, 0x27, 0x29, 0xcb, 0xbb, 0xd0, 0x79, 0x99, 0xc2, 0xf3,
- 0x2b, 0x5d, 0xd8, 0x12, 0x56, 0x55, 0x4b, 0x30, 0x0f, 0xc1, 0xc8, 0x0b, 0x5c, 0xa9, 0x19, 0xdd,
- 0x48, 0xeb, 0x99, 0x57, 0x6b, 0x62, 0xbe, 0x01, 0x25, 0xdf, 0x53, 0x8f, 0x91, 0x92, 0xef, 0x65,
- 0x0e, 0xa2, 0xb4, 0x50, 0x00, 0x3b, 0xb0, 0x7d, 0x91, 0x32, 0x15, 0x67, 0x0b, 0xd6, 0xbf, 0x0d,
- 0x7d, 0x26, 0x2f, 0x60, 0x92, 0x98, 0x4f, 0x41, 0x4f, 0x23, 0x2f, 0x51, 0x69, 0x3f, 0x69, 0xb0,
- 0x7d, 0x8c, 0xa3, 0x38, 0x10, 0xdb, 0x6a, 0xe4, 0x10, 0x14, 0xb2, 0xef, 0x70, 0x4c, 0x42, 0x27,
- 0x48, 0xfc, 0xfe, 0x10, 0xd6, 0x78, 0x3d, 0xd8, 0x2e, 0x41, 0x0e, 0x43, 0x9e, 0x1d, 0x26, 0x2f,
- 0xaa, 0x3a, 0x47, 0x3f, 0x90, 0xd8, 0xef, 0x29, 0x7f, 0x75, 0x39, 0x2e, 0x57, 0x9a, 0x1e, 0x1c,
- 0x20, 0x51, 0x62, 0x78, 0x7c, 0x05, 0xb5, 0x91, 0xf0, 0xcc, 0x76, 0x02, 0xdf, 0x91, 0x03, 0xa4,
- 0xba, 0xb7, 0xb1, 0xb8, 0x81, 0xef, 0x73, 0xa2, 0x55, 0x95, 0xac, 0x02, 0xd0, 0x3f, 0x83, 0x76,
- 0xaa, 0x55, 0xcd, 0x17, 0xd5, 0x25, 0x61, 0xa3, 0x95, 0xa2, 0xcd, 0xf6, 0xd5, 0x5b, 0x70, 0xf3,
- 0xc2, 0xb8, 0x54, 0x0a, 0xff, 0xa2, 0xc9, 0x74, 0xa9, 0x44, 0x27, 0xf1, 0xfe, 0x12, 0x56, 0x24,
- 0xbf, 0x3a, 0xf4, 0x0b, 0x1c, 0x54, 0x4c, 0x17, 0xfa, 0x56, 0xba, 0xd0, 0xb7, 0xa2, 0x8c, 0x96,
- 0x0b, 0x32, 0xca, 0xfb, 0x7b, 0xc6, 0xbf, 0xf9, 0x0a, 0xf4, 0x10, 0x8d, 0x30, 0x43, 0xd9, 0xc3,
- 0xff, 0xb3, 0x06, 0xed, 0x2c, 0x5e, 0x9d, 0xff, 0x3d, 0x68, 0x79, 0x28, 0x22, 0xc8, 0x15, 0xc6,
- 0xb2, 0xa5, 0x70, 0xbf, 0x64, 0x68, 0x96, 0x3e, 0x27, 0xcf, 0x7c, 0xbc, 0x0f, 0x75, 0x75, 0x58,
- 0x6a, 0x66, 0x94, 0x2e, 0x33, 0x33, 0xd4, 0x01, 0x4b, 0x88, 0x5f, 0xe1, 0x17, 0xa1, 0x87, 0x8b,
- 0x9c, 0xed, 0x82, 0x91, 0x27, 0xa9, 0xf8, 0xae, 0xcf, 0x86, 0xe4, 0x2b, 0x87, 0x1e, 0x13, 0xcc,
- 0x59, 0xbc, 0x44, 0xf0, 0x17, 0xd0, 0x2d, 0x22, 0x2a, 0xd1, 0x7f, 0x6a, 0xd0, 0x3c, 0x41, 0xd9,
- 0x5b, 0xf1, 0xae, 0x07, 0x5a, 0x70, 0x3a, 0xa5, 0xa2, 0x7a, 0xff, 0x12, 0x3a, 0xe2, 0x99, 0xc0,
- 0x13, 0x44, 0x58, 0xc1, 0x1b, 0x61, 0x43, 0x90, 0x17, 0xbb, 0x65, 0xfe, 0xb9, 0xb5, 0x54, 0xf0,
- 0xdc, 0x6a, 0xc1, 0x7a, 0x2a, 0x0e, 0x15, 0xdd, 0x93, 0x74, 0xec, 0x16, 0x12, 0x76, 0x67, 0x99,
- 0x79, 0xc7, 0x30, 0xcd, 0x1b, 0x70, 0xbd, 0x50, 0x99, 0xb2, 0xf5, 0x47, 0xde, 0xe7, 0x33, 0x03,
- 0x6c, 0x3f, 0xf4, 0x1e, 0x21, 0x96, 0x59, 0x35, 0xf4, 0xdf, 0xc1, 0x06, 0x65, 0x38, 0x4a, 0x07,
- 0x6f, 0x8f, 0xb0, 0x97, 0xbc, 0xae, 0xef, 0x14, 0x6c, 0x30, 0xd9, 0xa1, 0x88, 0x3d, 0x64, 0xb5,
- 0x68, 0x1e, 0xc9, 0x1f, 0x2f, 0xb7, 0xdf, 0xe8, 0xc0, 0xec, 0x87, 0x88, 0xfa, 0x70, 0xda, 0x27,
- 0xbe, 0x67, 0x5f, 0x6a, 0x77, 0x12, 0xf5, 0x5e, 0x93, 0x12, 0xea, 0xc7, 0xa0, 0xdf, 0xcc, 0xd6,
- 0x22, 0x59, 0xe2, 0x1f, 0xbe, 0xcd, 0xe9, 0xfc, 0x7e, 0xa4, 0xea, 0x30, 0xdb, 0x48, 0xf8, 0xa6,
- 0xb3, 0x48, 0xb8, 0x44, 0x47, 0x3e, 0x81, 0xfa, 0x7d, 0xc7, 0x3d, 0x8b, 0x67, 0x9b, 0xec, 0x0e,
- 0x54, 0x5d, 0x1c, 0xba, 0x31, 0x21, 0x28, 0x74, 0xa7, 0xaa, 0xf7, 0xa6, 0x51, 0x9c, 0x43, 0x3c,
- 0x47, 0x65, 0xb9, 0xa8, 0x37, 0x6c, 0x1a, 0x65, 0x7e, 0x09, 0x8d, 0x44, 0xa9, 0x72, 0xe1, 0x0e,
- 0x2c, 0xa3, 0xf1, 0xbc, 0x58, 0x1a, 0xbd, 0xe4, 0x1f, 0x32, 0x07, 0x1c, 0x6b, 0x49, 0xa2, 0x9a,
- 0xb4, 0x0c, 0x13, 0x74, 0x48, 0xf0, 0x28, 0xe3, 0x97, 0xb9, 0xcf, 0xaf, 0x69, 0x8e, 0xf6, 0x4e,
- 0xea, 0x7f, 0x0f, 0xb5, 0x97, 0x6f, 0x9d, 0xd0, 0x3c, 0x5b, 0x13, 0x4c, 0xce, 0x4e, 0x03, 0x3c,
- 0x49, 0x06, 0x65, 0x02, 0x73, 0xda, 0x19, 0x9a, 0xd2, 0xc8, 0x71, 0x91, 0xfa, 0xcd, 0x6e, 0x06,
- 0x9b, 0xdf, 0x40, 0xfd, 0xe5, 0x55, 0xc7, 0xf9, 0xfd, 0x4f, 0x7f, 0xec, 0x8d, 0x7d, 0x86, 0x28,
- 0xed, 0xf9, 0x78, 0x57, 0x7e, 0xed, 0x0e, 0xf0, 0xee, 0x98, 0xed, 0x8a, 0xff, 0x58, 0xed, 0xe6,
- 0x9e, 0xb8, 0xfd, 0x15, 0x41, 0xb8, 0xf7, 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe2, 0x46, 0xf8,
- 0x40, 0x3b, 0x1b, 0x00, 0x00,
+ // 2206 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x39, 0x4b, 0x73, 0xdb, 0xd6,
+ 0xd5, 0x1f, 0xa8, 0x87, 0xa5, 0xc3, 0x87, 0x28, 0x90, 0x12, 0x21, 0xfa, 0x33, 0x2d, 0xc3, 0x4e,
+ 0xe2, 0x49, 0xa6, 0x54, 0x23, 0x27, 0x99, 0x4c, 0xd2, 0x76, 0x22, 0xdb, 0x92, 0x9d, 0x58, 0x8e,
+ 0x15, 0xc8, 0x8f, 0x4e, 0xa6, 0x53, 0x0c, 0x08, 0x5c, 0x91, 0x18, 0x81, 0xb8, 0xf0, 0xbd, 0x17,
+ 0xa4, 0xb8, 0xe9, 0x4f, 0x68, 0xb7, 0x5d, 0x75, 0xd3, 0x99, 0x76, 0xdf, 0x1f, 0xd1, 0xe9, 0xb2,
+ 0xab, 0x74, 0xdb, 0x71, 0x7f, 0x44, 0x17, 0x5d, 0xb4, 0x73, 0x1f, 0x20, 0x01, 0x02, 0xb2, 0x65,
+ 0x8d, 0x3b, 0xd3, 0x8d, 0x06, 0xe7, 0xfd, 0xb8, 0xe7, 0x9e, 0x73, 0x2e, 0x05, 0x2d, 0xe6, 0xf4,
+ 0x02, 0xc4, 0x86, 0x4e, 0xe8, 0xf4, 0x11, 0xf1, 0x1c, 0xe6, 0x74, 0x23, 0x82, 0x19, 0xd6, 0xd7,
+ 0x73, 0x84, 0x76, 0xf9, 0x65, 0x8c, 0xc8, 0x44, 0xd2, 0xdb, 0x35, 0x86, 0x23, 0x3c, 0xe3, 0x6f,
+ 0x6f, 0x10, 0x14, 0x05, 0xbe, 0xeb, 0x30, 0x1f, 0x87, 0x29, 0x74, 0x35, 0xc0, 0xfd, 0x98, 0xf9,
+ 0x81, 0x04, 0xcd, 0x7f, 0x6b, 0xb0, 0xf6, 0x94, 0x2b, 0xbe, 0x8f, 0x4e, 0xfc, 0xd0, 0xe7, 0xcc,
+ 0xba, 0x0e, 0x8b, 0xa1, 0x33, 0x44, 0x86, 0xb6, 0xad, 0xdd, 0x5e, 0xb5, 0xc4, 0xb7, 0xbe, 0x09,
+ 0xcb, 0xd4, 0x1d, 0xa0, 0xa1, 0x63, 0x94, 0x04, 0x56, 0x41, 0xba, 0x01, 0x57, 0x5c, 0x1c, 0xc4,
+ 0xc3, 0x90, 0x1a, 0x0b, 0xdb, 0x0b, 0xb7, 0x57, 0xad, 0x04, 0xd4, 0xbb, 0xd0, 0x88, 0x88, 0x3f,
+ 0x74, 0xc8, 0xc4, 0x3e, 0x45, 0x13, 0x3b, 0xe1, 0x5a, 0x14, 0x5c, 0xeb, 0x8a, 0xf4, 0x08, 0x4d,
+ 0xee, 0x29, 0x7e, 0x1d, 0x16, 0xd9, 0x24, 0x42, 0xc6, 0x92, 0xb4, 0xca, 0xbf, 0xf5, 0xeb, 0x50,
+ 0xe6, 0xae, 0xdb, 0x01, 0x0a, 0xfb, 0x6c, 0x60, 0x2c, 0x6f, 0x6b, 0xb7, 0x17, 0x2d, 0xe0, 0xa8,
+ 0x43, 0x81, 0xd1, 0xaf, 0xc2, 0x2a, 0xc1, 0x63, 0xdb, 0xc5, 0x71, 0xc8, 0x8c, 0x2b, 0x82, 0xbc,
+ 0x42, 0xf0, 0xf8, 0x1e, 0x87, 0xf5, 0x5b, 0xb0, 0x7c, 0xe2, 0xa3, 0xc0, 0xa3, 0xc6, 0xca, 0xf6,
+ 0xc2, 0xed, 0xf2, 0x6e, 0xa5, 0x2b, 0xf3, 0x75, 0xc0, 0x91, 0x96, 0xa2, 0x99, 0x7f, 0xd0, 0xa0,
+ 0x7e, 0x2c, 0x82, 0x49, 0xa5, 0xe0, 0x03, 0x58, 0xe3, 0x56, 0x7a, 0x0e, 0x45, 0xb6, 0x8a, 0x5b,
+ 0x66, 0xa3, 0x96, 0xa0, 0xa5, 0x88, 0xfe, 0x04, 0xe4, 0xb9, 0xd8, 0xde, 0x54, 0x98, 0x1a, 0x25,
+ 0x61, 0xce, 0xec, 0xe6, 0x8f, 0x72, 0x2e, 0xd5, 0x56, 0x9d, 0x65, 0x11, 0x94, 0x27, 0x74, 0x84,
+ 0x08, 0xf5, 0x71, 0x68, 0x2c, 0x08, 0x8b, 0x09, 0xc8, 0x1d, 0xd5, 0xa5, 0xd5, 0x7b, 0x03, 0x27,
+ 0xec, 0x23, 0x0b, 0xd1, 0x38, 0x60, 0xfa, 0x43, 0xa8, 0xf6, 0xd0, 0x09, 0x26, 0x19, 0x47, 0xcb,
+ 0xbb, 0x37, 0x0b, 0xac, 0xcf, 0x87, 0x69, 0x55, 0xa4, 0xa4, 0x8a, 0xe5, 0x00, 0x2a, 0xce, 0x09,
+ 0x43, 0xc4, 0x4e, 0x9d, 0xf4, 0x05, 0x15, 0x95, 0x85, 0xa0, 0x44, 0x9b, 0xff, 0xd4, 0xa0, 0xf6,
+ 0x8c, 0x22, 0x72, 0x84, 0xc8, 0xd0, 0xa7, 0x54, 0x95, 0xd4, 0x00, 0x53, 0x96, 0x94, 0x14, 0xff,
+ 0xe6, 0xb8, 0x98, 0x22, 0xa2, 0x0a, 0x4a, 0x7c, 0xeb, 0x1f, 0xc1, 0x7a, 0xe4, 0x50, 0x3a, 0xc6,
+ 0xc4, 0xb3, 0xdd, 0x01, 0x72, 0x4f, 0x69, 0x3c, 0x14, 0x79, 0x58, 0xb4, 0xea, 0x09, 0xe1, 0x9e,
+ 0xc2, 0xeb, 0xdf, 0x01, 0x44, 0xc4, 0x1f, 0xf9, 0x01, 0xea, 0x23, 0x59, 0x58, 0xe5, 0xdd, 0x8f,
+ 0x0b, 0xbc, 0xcd, 0xfa, 0xd2, 0x3d, 0x9a, 0xca, 0xec, 0x87, 0x8c, 0x4c, 0xac, 0x94, 0x92, 0xf6,
+ 0x4f, 0x61, 0x6d, 0x8e, 0xac, 0xd7, 0x61, 0xe1, 0x14, 0x4d, 0x94, 0xe7, 0xfc, 0x53, 0x6f, 0xc2,
+ 0xd2, 0xc8, 0x09, 0x62, 0xa4, 0x3c, 0x97, 0xc0, 0x17, 0xa5, 0xcf, 0x35, 0xf3, 0x07, 0x0d, 0x2a,
+ 0xf7, 0x7b, 0x6f, 0x88, 0xbb, 0x06, 0x25, 0xaf, 0xa7, 0x64, 0x4b, 0x5e, 0x6f, 0x9a, 0x87, 0x85,
+ 0x54, 0x1e, 0x9e, 0x14, 0x84, 0xb6, 0x53, 0x10, 0x5a, 0xda, 0xd8, 0x7f, 0x33, 0xb0, 0xdf, 0x6b,
+ 0x50, 0x9e, 0x59, 0xa2, 0xfa, 0x21, 0xd4, 0xb9, 0x9f, 0x76, 0x34, 0xc3, 0x19, 0x9a, 0xf0, 0xf2,
+ 0xc6, 0x1b, 0x0f, 0xc0, 0x5a, 0x8b, 0x33, 0x30, 0xd5, 0x0f, 0xa0, 0xe6, 0xf5, 0x32, 0xba, 0xe4,
+ 0x0d, 0xba, 0xfe, 0x86, 0x88, 0xad, 0xaa, 0x97, 0x82, 0xa8, 0xf9, 0x01, 0x94, 0x8f, 0xfc, 0xb0,
+ 0x6f, 0xa1, 0x97, 0x31, 0xa2, 0x8c, 0x5f, 0xa5, 0xc8, 0x99, 0x04, 0xd8, 0xf1, 0x54, 0x90, 0x09,
+ 0x68, 0xde, 0x86, 0x8a, 0x64, 0xa4, 0x11, 0x0e, 0x29, 0x7a, 0x0d, 0xe7, 0x87, 0x50, 0x39, 0x0e,
+ 0x10, 0x8a, 0x12, 0x9d, 0x6d, 0x58, 0xf1, 0x62, 0x22, 0x9a, 0xaa, 0x60, 0x5d, 0xb0, 0xa6, 0xb0,
+ 0xb9, 0x06, 0x55, 0xc5, 0x2b, 0xd5, 0x9a, 0x7f, 0xd3, 0x40, 0xdf, 0x3f, 0x43, 0x6e, 0xcc, 0xd0,
+ 0x43, 0x8c, 0x4f, 0x13, 0x1d, 0x45, 0xfd, 0xb5, 0x03, 0x10, 0x39, 0xc4, 0x19, 0x22, 0x86, 0x88,
+ 0x0c, 0x7f, 0xd5, 0x4a, 0x61, 0xf4, 0x23, 0x58, 0x45, 0x67, 0x8c, 0x38, 0x36, 0x0a, 0x47, 0xa2,
+ 0xd3, 0x96, 0x77, 0xef, 0x14, 0x64, 0x27, 0x6f, 0xad, 0xbb, 0xcf, 0xc5, 0xf6, 0xc3, 0x91, 0xac,
+ 0x89, 0x15, 0xa4, 0xc0, 0xf6, 0x97, 0x50, 0xcd, 0x90, 0xde, 0xaa, 0x1e, 0x4e, 0xa0, 0x91, 0x31,
+ 0xa5, 0xf2, 0x78, 0x1d, 0xca, 0xe8, 0xcc, 0x67, 0x36, 0x65, 0x0e, 0x8b, 0xa9, 0x4a, 0x10, 0x70,
+ 0xd4, 0xb1, 0xc0, 0x88, 0x31, 0xc2, 0x3c, 0x1c, 0xb3, 0xe9, 0x18, 0x11, 0x90, 0xc2, 0x23, 0x92,
+ 0xdc, 0x02, 0x05, 0x99, 0x23, 0xa8, 0x3f, 0x40, 0x4c, 0xf6, 0x95, 0x24, 0x7d, 0x9b, 0xb0, 0x2c,
+ 0x02, 0x97, 0x15, 0xb7, 0x6a, 0x29, 0x48, 0xbf, 0x09, 0x55, 0x3f, 0x74, 0x83, 0xd8, 0x43, 0xf6,
+ 0xc8, 0x47, 0x63, 0x2a, 0x4c, 0xac, 0x58, 0x15, 0x85, 0x7c, 0xce, 0x71, 0xfa, 0x7b, 0x50, 0x43,
+ 0x67, 0x92, 0x49, 0x29, 0x91, 0x63, 0xab, 0xaa, 0xb0, 0xa2, 0x41, 0x53, 0x13, 0xc1, 0x7a, 0xca,
+ 0xae, 0x8a, 0xee, 0x08, 0xd6, 0x65, 0x67, 0x4c, 0x35, 0xfb, 0xb7, 0xe9, 0xb6, 0x75, 0x3a, 0x87,
+ 0x31, 0x5b, 0xb0, 0xf1, 0x00, 0xb1, 0x54, 0x09, 0xab, 0x18, 0xcd, 0xef, 0x61, 0x73, 0x9e, 0xa0,
+ 0x9c, 0xf8, 0x0a, 0xca, 0xd9, 0x4b, 0xc7, 0xcd, 0x77, 0x0a, 0xcc, 0xa7, 0x85, 0xd3, 0x22, 0x66,
+ 0x13, 0xf4, 0x63, 0xc4, 0x2c, 0xe4, 0x78, 0x4f, 0xc2, 0x60, 0x92, 0x58, 0xdc, 0x80, 0x46, 0x06,
+ 0xab, 0x4a, 0x78, 0x86, 0x7e, 0x41, 0x7c, 0x86, 0x12, 0xee, 0x4d, 0x68, 0x66, 0xd1, 0x8a, 0xfd,
+ 0x1b, 0x58, 0x97, 0xc3, 0xe9, 0xe9, 0x24, 0x4a, 0x98, 0xf5, 0x4f, 0xa1, 0x2c, 0xdd, 0xb3, 0xc5,
+ 0x80, 0xe7, 0x2e, 0xd7, 0x76, 0x9b, 0xdd, 0xe9, 0xbe, 0x22, 0x72, 0xce, 0x84, 0x04, 0xb0, 0xe9,
+ 0x37, 0xf7, 0x33, 0xad, 0x6b, 0xe6, 0x90, 0x85, 0x4e, 0x08, 0xa2, 0x03, 0x5e, 0x52, 0x69, 0x87,
+ 0xb2, 0x68, 0xc5, 0xde, 0x82, 0x0d, 0x2b, 0x0e, 0x1f, 0x22, 0x27, 0x60, 0x03, 0x31, 0x38, 0x12,
+ 0x01, 0x03, 0x36, 0xe7, 0x09, 0x4a, 0xe4, 0x13, 0x30, 0xbe, 0xee, 0x87, 0x98, 0x20, 0x49, 0xdc,
+ 0x27, 0x04, 0x93, 0x4c, 0x4b, 0x61, 0x0c, 0x91, 0x70, 0xd6, 0x28, 0x04, 0x68, 0x5e, 0x85, 0xad,
+ 0x02, 0x29, 0xa5, 0xf2, 0x0b, 0xee, 0x34, 0xef, 0x27, 0xd9, 0x4a, 0xbe, 0x09, 0xd5, 0xb1, 0xe3,
+ 0x33, 0x3b, 0xc2, 0x74, 0x56, 0x4c, 0xab, 0x56, 0x85, 0x23, 0x8f, 0x14, 0x4e, 0x46, 0x96, 0x96,
+ 0x55, 0x3a, 0x77, 0x61, 0xf3, 0x88, 0xa0, 0x93, 0xc0, 0xef, 0x0f, 0xe6, 0x2e, 0x08, 0xdf, 0xc9,
+ 0x44, 0xe2, 0x92, 0x1b, 0x92, 0x80, 0x66, 0x1f, 0x5a, 0x39, 0x19, 0x55, 0x57, 0x87, 0x50, 0x93,
+ 0x5c, 0x36, 0x11, 0x7b, 0x45, 0xd2, 0xcf, 0xdf, 0x3b, 0xb7, 0xb2, 0xd3, 0x5b, 0x88, 0x55, 0x75,
+ 0x53, 0x10, 0x35, 0xff, 0xa5, 0x81, 0xbe, 0x17, 0x45, 0xc1, 0x24, 0xeb, 0x59, 0x1d, 0x16, 0xe8,
+ 0xcb, 0x20, 0x69, 0x31, 0xf4, 0x65, 0xc0, 0x5b, 0xcc, 0x09, 0x26, 0x2e, 0x52, 0x97, 0x55, 0x02,
+ 0x7c, 0x0d, 0x70, 0x82, 0x00, 0x8f, 0xed, 0xd4, 0x0e, 0x2b, 0x3a, 0xc3, 0x8a, 0x55, 0x17, 0x04,
+ 0x6b, 0x86, 0xcf, 0x2f, 0x40, 0x8b, 0xef, 0x6a, 0x01, 0x5a, 0xba, 0xe4, 0x02, 0xf4, 0x47, 0x0d,
+ 0x1a, 0x99, 0xe8, 0x55, 0x8e, 0xff, 0xf7, 0x56, 0xb5, 0x06, 0xac, 0x1f, 0x62, 0xf7, 0x54, 0x76,
+ 0xbd, 0xe4, 0x6a, 0x34, 0x41, 0x4f, 0x23, 0x67, 0x17, 0xef, 0x59, 0x18, 0xe4, 0x98, 0x37, 0xa1,
+ 0x99, 0x45, 0x2b, 0xf6, 0x3f, 0x69, 0x60, 0xa8, 0x11, 0x71, 0x80, 0x98, 0x3b, 0xd8, 0xa3, 0xf7,
+ 0x7b, 0xd3, 0x3a, 0x68, 0xc2, 0x92, 0x58, 0xc5, 0x45, 0x02, 0x2a, 0x96, 0x04, 0xf4, 0x16, 0x5c,
+ 0xf1, 0x7a, 0xb6, 0x18, 0x8d, 0x6a, 0x3a, 0x78, 0xbd, 0x6f, 0xf9, 0x70, 0xdc, 0x82, 0x95, 0xa1,
+ 0x73, 0x66, 0x13, 0x3c, 0xa6, 0x6a, 0x19, 0xbc, 0x32, 0x74, 0xce, 0x2c, 0x3c, 0xa6, 0x62, 0x51,
+ 0xf7, 0xa9, 0xd8, 0xc0, 0x7b, 0x7e, 0x18, 0xe0, 0x3e, 0x15, 0xc7, 0xbf, 0x62, 0xd5, 0x14, 0xfa,
+ 0xae, 0xc4, 0xf2, 0xbb, 0x46, 0xc4, 0x35, 0x4a, 0x1f, 0xee, 0x8a, 0x55, 0x21, 0xa9, 0xbb, 0x65,
+ 0x3e, 0x80, 0xad, 0x02, 0x9f, 0xd5, 0xe9, 0x7d, 0x08, 0xcb, 0xf2, 0x6a, 0xa8, 0x63, 0xd3, 0xd5,
+ 0x73, 0xe2, 0x3b, 0xfe, 0x57, 0x5d, 0x03, 0xc5, 0x61, 0xfe, 0x5a, 0x83, 0x6b, 0x59, 0x4d, 0x7b,
+ 0x41, 0xc0, 0x17, 0x30, 0xfa, 0xee, 0x53, 0x90, 0x8b, 0x6c, 0xb1, 0x20, 0xb2, 0x43, 0xe8, 0x9c,
+ 0xe7, 0xcf, 0x25, 0xc2, 0x7b, 0x34, 0x7f, 0xb6, 0x7b, 0x51, 0xf4, 0xfa, 0xc0, 0xd2, 0xfe, 0x97,
+ 0x32, 0xfe, 0xe7, 0x93, 0x2e, 0x94, 0x5d, 0xc2, 0xab, 0x36, 0x18, 0xa9, 0xbe, 0x20, 0x37, 0x8e,
+ 0xa4, 0x4c, 0x0f, 0x61, 0xab, 0x80, 0xa6, 0x8c, 0xec, 0xf0, 0xed, 0x63, 0xba, 0xb1, 0x94, 0x77,
+ 0x5b, 0xdd, 0xf9, 0xb7, 0xb3, 0x12, 0x50, 0x6c, 0xfc, 0x2e, 0x3c, 0x76, 0x28, 0xbf, 0x46, 0x19,
+ 0x23, 0x8f, 0xa1, 0x99, 0x45, 0x2b, 0xfd, 0x9f, 0xce, 0xe9, 0xbf, 0x96, 0xd3, 0x9f, 0x11, 0x4b,
+ 0xac, 0xb4, 0x60, 0x43, 0xe2, 0x93, 0x59, 0x90, 0xd8, 0xf9, 0x04, 0x36, 0xe7, 0x09, 0xca, 0x52,
+ 0x1b, 0x56, 0xe6, 0x86, 0xc9, 0x14, 0xe6, 0x52, 0x2f, 0x1c, 0x9f, 0x1d, 0xe0, 0x79, 0x7d, 0xaf,
+ 0x95, 0xda, 0x82, 0x56, 0x4e, 0x4a, 0x5d, 0x71, 0x03, 0x36, 0x8f, 0x19, 0x8e, 0x52, 0x79, 0x4d,
+ 0x1c, 0xdc, 0x82, 0x56, 0x8e, 0xa2, 0x84, 0x7e, 0x09, 0xd7, 0xe6, 0x48, 0x8f, 0xfd, 0xd0, 0x1f,
+ 0xc6, 0xc3, 0x0b, 0x38, 0xa3, 0xdf, 0x00, 0x31, 0x1b, 0x6d, 0xe6, 0x0f, 0x51, 0xb2, 0x44, 0x2e,
+ 0x58, 0x65, 0x8e, 0x7b, 0x2a, 0x51, 0xe6, 0x4f, 0xa0, 0x73, 0x9e, 0xfe, 0x0b, 0xe4, 0x48, 0x38,
+ 0xee, 0x10, 0x56, 0x10, 0x53, 0x1b, 0x8c, 0x3c, 0x49, 0x05, 0xd5, 0x83, 0x1b, 0xf3, 0xb4, 0x67,
+ 0x21, 0xf3, 0x83, 0x3d, 0xde, 0x6a, 0xdf, 0x51, 0x60, 0xb7, 0xc0, 0x7c, 0x9d, 0x0d, 0xe5, 0x49,
+ 0x13, 0xf4, 0x07, 0x28, 0xe1, 0x99, 0x16, 0xe6, 0x47, 0xd0, 0xc8, 0x60, 0x55, 0x26, 0x9a, 0xb0,
+ 0xe4, 0x78, 0x1e, 0x49, 0xd6, 0x04, 0x09, 0xf0, 0x1c, 0x58, 0x88, 0xa2, 0x73, 0x72, 0x90, 0x27,
+ 0x29, 0xcb, 0x3b, 0xd0, 0x7a, 0x9e, 0xc2, 0xf3, 0x2b, 0x5d, 0xd8, 0x12, 0x56, 0x55, 0x4b, 0x30,
+ 0x0f, 0xc0, 0xc8, 0x0b, 0x5c, 0xaa, 0x19, 0x5d, 0x4b, 0xeb, 0x99, 0x55, 0x6b, 0x62, 0xbe, 0x06,
+ 0x25, 0xdf, 0x53, 0x8f, 0x91, 0x92, 0xef, 0x65, 0x0e, 0xa2, 0x34, 0x57, 0x00, 0xdb, 0xd0, 0x39,
+ 0x4f, 0x99, 0x8a, 0xb3, 0x01, 0xeb, 0x5f, 0x87, 0x3e, 0x93, 0x17, 0x30, 0x49, 0xcc, 0x8f, 0x41,
+ 0x4f, 0x23, 0x2f, 0x50, 0x69, 0x3f, 0x68, 0xd0, 0x39, 0xc2, 0x51, 0x1c, 0x88, 0x6d, 0x35, 0x72,
+ 0x08, 0x0a, 0xd9, 0x37, 0x38, 0x26, 0xa1, 0x13, 0x24, 0x7e, 0xbf, 0x0f, 0x6b, 0xbc, 0x1e, 0x6c,
+ 0x97, 0x20, 0x87, 0x21, 0xcf, 0x0e, 0x93, 0x17, 0x55, 0x95, 0xa3, 0xef, 0x49, 0xec, 0xb7, 0x94,
+ 0xbf, 0xba, 0x1c, 0x97, 0x2b, 0x4d, 0x0f, 0x0e, 0x90, 0x28, 0x31, 0x3c, 0x3e, 0x87, 0xca, 0x50,
+ 0x78, 0x66, 0x3b, 0x81, 0xef, 0xc8, 0x01, 0x52, 0xde, 0xdd, 0x98, 0xdf, 0xc0, 0xf7, 0x38, 0xd1,
+ 0x2a, 0x4b, 0x56, 0x01, 0xe8, 0x1f, 0x43, 0x33, 0xd5, 0xaa, 0x66, 0x8b, 0xea, 0xa2, 0xb0, 0xd1,
+ 0x48, 0xd1, 0xa6, 0xfb, 0xea, 0x0d, 0xb8, 0x7e, 0x6e, 0x5c, 0x2a, 0x85, 0xbf, 0xd3, 0x64, 0xba,
+ 0x54, 0xa2, 0x93, 0x78, 0x7f, 0x04, 0xcb, 0x92, 0x5f, 0x1d, 0xfa, 0x39, 0x0e, 0x2a, 0xa6, 0x73,
+ 0x7d, 0x2b, 0x9d, 0xeb, 0x5b, 0x51, 0x46, 0x17, 0x0a, 0x32, 0xca, 0xfb, 0x7b, 0xc6, 0xbf, 0xd9,
+ 0x0a, 0x74, 0x1f, 0x0d, 0x31, 0x43, 0xd9, 0xc3, 0xff, 0x8d, 0x06, 0xcd, 0x2c, 0x5e, 0x9d, 0xff,
+ 0x1d, 0x68, 0x78, 0x28, 0x22, 0xc8, 0x15, 0xc6, 0xb2, 0xa5, 0x70, 0xb7, 0x64, 0x68, 0x96, 0x3e,
+ 0x23, 0x4f, 0x7d, 0xbc, 0x0b, 0x55, 0x75, 0x58, 0x6a, 0x66, 0x94, 0x2e, 0x32, 0x33, 0xd4, 0x01,
+ 0x4b, 0x88, 0x5f, 0xe1, 0x67, 0xa1, 0x87, 0x8b, 0x9c, 0x6d, 0x83, 0x91, 0x27, 0xa9, 0xf8, 0xae,
+ 0x4e, 0x87, 0xe4, 0x0b, 0x87, 0x1e, 0x11, 0xcc, 0x59, 0xbc, 0x44, 0xf0, 0xff, 0xa1, 0x5d, 0x44,
+ 0x54, 0xa2, 0x7f, 0xd6, 0xa0, 0x7e, 0x8c, 0xb2, 0xb7, 0xe2, 0x6d, 0x0f, 0xb4, 0xe0, 0x74, 0x4a,
+ 0x45, 0xf5, 0xfe, 0x19, 0xb4, 0xc4, 0x33, 0x81, 0x27, 0x88, 0xb0, 0x82, 0x37, 0xc2, 0x86, 0x20,
+ 0xcf, 0x77, 0xcb, 0xfc, 0x73, 0x6b, 0xb1, 0xe0, 0xb9, 0xd5, 0x80, 0xf5, 0x54, 0x1c, 0x2a, 0xba,
+ 0x47, 0xe9, 0xd8, 0x2d, 0x24, 0xec, 0x4e, 0x33, 0xf3, 0x96, 0x61, 0x9a, 0xd7, 0xe0, 0x6a, 0xa1,
+ 0x32, 0x65, 0xeb, 0x57, 0xbc, 0xcf, 0x67, 0x06, 0xd8, 0x5e, 0xe8, 0x3d, 0x40, 0x2c, 0xb3, 0x6a,
+ 0xe8, 0x3f, 0x87, 0x0d, 0xca, 0x70, 0x94, 0x0e, 0xde, 0x1e, 0x62, 0x2f, 0x79, 0x5d, 0xdf, 0x2a,
+ 0xd8, 0x60, 0xb2, 0x43, 0x11, 0x7b, 0xc8, 0x6a, 0xd0, 0x3c, 0x92, 0x3f, 0x5e, 0x6e, 0xbe, 0xd6,
+ 0x81, 0xe9, 0x0f, 0x11, 0xd5, 0xc1, 0xa4, 0x47, 0x7c, 0xcf, 0xbe, 0xd0, 0xee, 0x24, 0xea, 0xbd,
+ 0x22, 0x25, 0xd4, 0x8f, 0x41, 0x3f, 0x9b, 0xae, 0x45, 0xb2, 0xc4, 0xdf, 0x7f, 0x93, 0xd3, 0xf9,
+ 0xfd, 0x48, 0xd5, 0x61, 0xb6, 0x91, 0xf0, 0x4d, 0x67, 0x9e, 0x70, 0x81, 0x8e, 0x7c, 0x0c, 0xd5,
+ 0xbb, 0x8e, 0x7b, 0x1a, 0x4f, 0x37, 0xd9, 0x6d, 0x28, 0xbb, 0x38, 0x74, 0x63, 0x42, 0x50, 0xe8,
+ 0x4e, 0x54, 0xef, 0x4d, 0xa3, 0x38, 0x87, 0x78, 0x8e, 0xca, 0x72, 0x51, 0x6f, 0xd8, 0x34, 0xca,
+ 0xfc, 0x0c, 0x6a, 0x89, 0x52, 0xe5, 0xc2, 0x2d, 0x58, 0x42, 0xa3, 0x59, 0xb1, 0xd4, 0xba, 0xc9,
+ 0x3f, 0x64, 0xf6, 0x39, 0xd6, 0x92, 0x44, 0x35, 0x69, 0x19, 0x26, 0xe8, 0x80, 0xe0, 0x61, 0xc6,
+ 0x2f, 0x73, 0x8f, 0x5f, 0xd3, 0x1c, 0xed, 0xad, 0xd4, 0xff, 0x02, 0x2a, 0xcf, 0xdf, 0x38, 0xa1,
+ 0x79, 0xb6, 0xc6, 0x98, 0x9c, 0x9e, 0x04, 0x78, 0x9c, 0x0c, 0xca, 0x04, 0xe6, 0xb4, 0x53, 0x34,
+ 0xa1, 0x91, 0xe3, 0x22, 0xf5, 0x9b, 0xdd, 0x14, 0x36, 0xbf, 0x84, 0xea, 0xf3, 0xcb, 0x8e, 0xf3,
+ 0xbb, 0x5f, 0xfd, 0xe5, 0x55, 0x47, 0xfb, 0xeb, 0xab, 0x8e, 0xf6, 0xf7, 0x57, 0x1d, 0xed, 0xb7,
+ 0xff, 0xe8, 0xfc, 0xdf, 0xf7, 0xdd, 0x91, 0xcf, 0x10, 0xa5, 0x5d, 0x1f, 0xef, 0xc8, 0xaf, 0x9d,
+ 0x3e, 0xde, 0x19, 0xb1, 0x1d, 0xf1, 0x1f, 0xac, 0x9d, 0xdc, 0x93, 0xb7, 0xb7, 0x2c, 0x08, 0x77,
+ 0xfe, 0x13, 0x00, 0x00, 0xff, 0xff, 0x11, 0xbb, 0x4b, 0xec, 0x4b, 0x1b, 0x00, 0x00,
+}
+
+func (m *TableDefinition) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *TableDefinition) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
}
+
+func (m *TableDefinition) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Fields) > 0 {
+ for iNdEx := len(m.Fields) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Fields[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x42
+ }
+ }
+ if m.RowCount != 0 {
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(m.RowCount))
+ i--
+ dAtA[i] = 0x38
+ }
+ if m.DataLength != 0 {
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(m.DataLength))
+ i--
+ dAtA[i] = 0x30
+ }
+ if len(m.Type) > 0 {
+ i -= len(m.Type)
+ copy(dAtA[i:], m.Type)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Type)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if len(m.PrimaryKeyColumns) > 0 {
+ for iNdEx := len(m.PrimaryKeyColumns) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.PrimaryKeyColumns[iNdEx])
+ copy(dAtA[i:], m.PrimaryKeyColumns[iNdEx])
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.PrimaryKeyColumns[iNdEx])))
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if len(m.Columns) > 0 {
+ for iNdEx := len(m.Columns) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Columns[iNdEx])
+ copy(dAtA[i:], m.Columns[iNdEx])
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Columns[iNdEx])))
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if len(m.Schema) > 0 {
+ i -= len(m.Schema)
+ copy(dAtA[i:], m.Schema)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Schema)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *SchemaDefinition) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SchemaDefinition) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *SchemaDefinition) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Version) > 0 {
+ i -= len(m.Version)
+ copy(dAtA[i:], m.Version)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Version)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.TableDefinitions) > 0 {
+ for iNdEx := len(m.TableDefinitions) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.TableDefinitions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.DatabaseSchema) > 0 {
+ i -= len(m.DatabaseSchema)
+ copy(dAtA[i:], m.DatabaseSchema)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.DatabaseSchema)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *SchemaChangeResult) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SchemaChangeResult) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *SchemaChangeResult) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.AfterSchema != nil {
+ {
+ size, err := m.AfterSchema.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.BeforeSchema != nil {
+ {
+ size, err := m.BeforeSchema.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *UserPermission) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *UserPermission) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *UserPermission) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Privileges) > 0 {
+ for k := range m.Privileges {
+ v := m.Privileges[k]
+ baseI := i
+ i -= len(v)
+ copy(dAtA[i:], v)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(v)))
+ i--
+ dAtA[i] = 0x12
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if m.PasswordChecksum != 0 {
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(m.PasswordChecksum))
+ i--
+ dAtA[i] = 0x18
+ }
+ if len(m.User) > 0 {
+ i -= len(m.User)
+ copy(dAtA[i:], m.User)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.User)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Host) > 0 {
+ i -= len(m.Host)
+ copy(dAtA[i:], m.Host)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Host)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *DbPermission) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *DbPermission) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *DbPermission) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Privileges) > 0 {
+ for k := range m.Privileges {
+ v := m.Privileges[k]
+ baseI := i
+ i -= len(v)
+ copy(dAtA[i:], v)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(v)))
+ i--
+ dAtA[i] = 0x12
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if len(m.User) > 0 {
+ i -= len(m.User)
+ copy(dAtA[i:], m.User)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.User)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Db) > 0 {
+ i -= len(m.Db)
+ copy(dAtA[i:], m.Db)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Db)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Host) > 0 {
+ i -= len(m.Host)
+ copy(dAtA[i:], m.Host)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Host)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Permissions) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Permissions) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Permissions) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.DbPermissions) > 0 {
+ for iNdEx := len(m.DbPermissions) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.DbPermissions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.UserPermissions) > 0 {
+ for iNdEx := len(m.UserPermissions) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.UserPermissions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *PingRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PingRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *PingRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Payload) > 0 {
+ i -= len(m.Payload)
+ copy(dAtA[i:], m.Payload)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Payload)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *PingResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PingResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *PingResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Payload) > 0 {
+ i -= len(m.Payload)
+ copy(dAtA[i:], m.Payload)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Payload)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *SleepRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SleepRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *SleepRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Duration != 0 {
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(m.Duration))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *SleepResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SleepResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *SleepResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ExecuteHookRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExecuteHookRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ExecuteHookRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.ExtraEnv) > 0 {
+ for k := range m.ExtraEnv {
+ v := m.ExtraEnv[k]
+ baseI := i
+ i -= len(v)
+ copy(dAtA[i:], v)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(v)))
+ i--
+ dAtA[i] = 0x12
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if len(m.Parameters) > 0 {
+ for iNdEx := len(m.Parameters) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Parameters[iNdEx])
+ copy(dAtA[i:], m.Parameters[iNdEx])
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Parameters[iNdEx])))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ExecuteHookResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExecuteHookResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ExecuteHookResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Stderr) > 0 {
+ i -= len(m.Stderr)
+ copy(dAtA[i:], m.Stderr)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Stderr)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Stdout) > 0 {
+ i -= len(m.Stdout)
+ copy(dAtA[i:], m.Stdout)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Stdout)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.ExitStatus != 0 {
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(m.ExitStatus))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetSchemaRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetSchemaRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetSchemaRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.ExcludeTables) > 0 {
+ for iNdEx := len(m.ExcludeTables) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.ExcludeTables[iNdEx])
+ copy(dAtA[i:], m.ExcludeTables[iNdEx])
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.ExcludeTables[iNdEx])))
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if m.IncludeViews {
+ i--
+ if m.IncludeViews {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.Tables) > 0 {
+ for iNdEx := len(m.Tables) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Tables[iNdEx])
+ copy(dAtA[i:], m.Tables[iNdEx])
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Tables[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetSchemaResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetSchemaResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetSchemaResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.SchemaDefinition != nil {
+ {
+ size, err := m.SchemaDefinition.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetPermissionsRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetPermissionsRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetPermissionsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetPermissionsResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetPermissionsResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetPermissionsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Permissions != nil {
+ {
+ size, err := m.Permissions.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *SetReadOnlyRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SetReadOnlyRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *SetReadOnlyRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *SetReadOnlyResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SetReadOnlyResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *SetReadOnlyResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *SetReadWriteRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SetReadWriteRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *SetReadWriteRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *SetReadWriteResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SetReadWriteResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *SetReadWriteResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ChangeTypeRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ChangeTypeRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ChangeTypeRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.TabletType != 0 {
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(m.TabletType))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ChangeTypeResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ChangeTypeResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ChangeTypeResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RefreshStateRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RefreshStateRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RefreshStateRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RefreshStateResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RefreshStateResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RefreshStateResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RunHealthCheckRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RunHealthCheckRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RunHealthCheckRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RunHealthCheckResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RunHealthCheckResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RunHealthCheckResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *IgnoreHealthErrorRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *IgnoreHealthErrorRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *IgnoreHealthErrorRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Pattern) > 0 {
+ i -= len(m.Pattern)
+ copy(dAtA[i:], m.Pattern)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Pattern)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *IgnoreHealthErrorResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *IgnoreHealthErrorResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *IgnoreHealthErrorResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ReloadSchemaRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ReloadSchemaRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ReloadSchemaRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.WaitPosition) > 0 {
+ i -= len(m.WaitPosition)
+ copy(dAtA[i:], m.WaitPosition)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.WaitPosition)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ReloadSchemaResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ReloadSchemaResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ReloadSchemaResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *PreflightSchemaRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PreflightSchemaRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *PreflightSchemaRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Changes) > 0 {
+ for iNdEx := len(m.Changes) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Changes[iNdEx])
+ copy(dAtA[i:], m.Changes[iNdEx])
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Changes[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *PreflightSchemaResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PreflightSchemaResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *PreflightSchemaResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.ChangeResults) > 0 {
+ for iNdEx := len(m.ChangeResults) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.ChangeResults[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ApplySchemaRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ApplySchemaRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ApplySchemaRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.AfterSchema != nil {
+ {
+ size, err := m.AfterSchema.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x2a
+ }
+ if m.BeforeSchema != nil {
+ {
+ size, err := m.BeforeSchema.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.AllowReplication {
+ i--
+ if m.AllowReplication {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.Force {
+ i--
+ if m.Force {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.Sql) > 0 {
+ i -= len(m.Sql)
+ copy(dAtA[i:], m.Sql)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Sql)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ApplySchemaResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ApplySchemaResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ApplySchemaResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.AfterSchema != nil {
+ {
+ size, err := m.AfterSchema.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.BeforeSchema != nil {
+ {
+ size, err := m.BeforeSchema.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *LockTablesRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *LockTablesRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *LockTablesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *LockTablesResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *LockTablesResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *LockTablesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *UnlockTablesRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *UnlockTablesRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *UnlockTablesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *UnlockTablesResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *UnlockTablesResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *UnlockTablesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ExecuteFetchAsDbaRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExecuteFetchAsDbaRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ExecuteFetchAsDbaRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.ReloadSchema {
+ i--
+ if m.ReloadSchema {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x28
+ }
+ if m.DisableBinlogs {
+ i--
+ if m.DisableBinlogs {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.MaxRows != 0 {
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(m.MaxRows))
+ i--
+ dAtA[i] = 0x18
+ }
+ if len(m.DbName) > 0 {
+ i -= len(m.DbName)
+ copy(dAtA[i:], m.DbName)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.DbName)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Query) > 0 {
+ i -= len(m.Query)
+ copy(dAtA[i:], m.Query)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Query)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ExecuteFetchAsDbaResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExecuteFetchAsDbaResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ExecuteFetchAsDbaResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Result != nil {
+ {
+ size, err := m.Result.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ExecuteFetchAsAllPrivsRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExecuteFetchAsAllPrivsRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ExecuteFetchAsAllPrivsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.ReloadSchema {
+ i--
+ if m.ReloadSchema {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.MaxRows != 0 {
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(m.MaxRows))
+ i--
+ dAtA[i] = 0x18
+ }
+ if len(m.DbName) > 0 {
+ i -= len(m.DbName)
+ copy(dAtA[i:], m.DbName)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.DbName)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Query) > 0 {
+ i -= len(m.Query)
+ copy(dAtA[i:], m.Query)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Query)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ExecuteFetchAsAllPrivsResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExecuteFetchAsAllPrivsResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ExecuteFetchAsAllPrivsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Result != nil {
+ {
+ size, err := m.Result.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ExecuteFetchAsAppRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExecuteFetchAsAppRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ExecuteFetchAsAppRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.MaxRows != 0 {
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(m.MaxRows))
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.Query) > 0 {
+ i -= len(m.Query)
+ copy(dAtA[i:], m.Query)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Query)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ExecuteFetchAsAppResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExecuteFetchAsAppResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ExecuteFetchAsAppResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Result != nil {
+ {
+ size, err := m.Result.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ReplicationStatusRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ReplicationStatusRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ReplicationStatusRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ReplicationStatusResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ReplicationStatusResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ReplicationStatusResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Status != nil {
+ {
+ size, err := m.Status.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MasterStatusRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MasterStatusRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *MasterStatusRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MasterStatusResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MasterStatusResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *MasterStatusResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Status != nil {
+ {
+ size, err := m.Status.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MasterPositionRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MasterPositionRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *MasterPositionRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MasterPositionResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MasterPositionResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *MasterPositionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Position) > 0 {
+ i -= len(m.Position)
+ copy(dAtA[i:], m.Position)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Position)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *WaitForPositionRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *WaitForPositionRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *WaitForPositionRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Position) > 0 {
+ i -= len(m.Position)
+ copy(dAtA[i:], m.Position)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Position)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *WaitForPositionResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *WaitForPositionResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *WaitForPositionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *StopReplicationRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StopReplicationRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *StopReplicationRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *StopReplicationResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StopReplicationResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *StopReplicationResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *StopReplicationMinimumRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StopReplicationMinimumRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *StopReplicationMinimumRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.WaitTimeout != 0 {
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(m.WaitTimeout))
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.Position) > 0 {
+ i -= len(m.Position)
+ copy(dAtA[i:], m.Position)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Position)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *StopReplicationMinimumResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StopReplicationMinimumResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *StopReplicationMinimumResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Position) > 0 {
+ i -= len(m.Position)
+ copy(dAtA[i:], m.Position)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Position)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *StartReplicationRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StartReplicationRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *StartReplicationRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *StartReplicationResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StartReplicationResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *StartReplicationResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *StartReplicationUntilAfterRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StartReplicationUntilAfterRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *StartReplicationUntilAfterRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.WaitTimeout != 0 {
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(m.WaitTimeout))
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.Position) > 0 {
+ i -= len(m.Position)
+ copy(dAtA[i:], m.Position)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Position)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *StartReplicationUntilAfterResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StartReplicationUntilAfterResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *StartReplicationUntilAfterResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetReplicasRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetReplicasRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetReplicasRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetReplicasResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetReplicasResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetReplicasResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Addrs) > 0 {
+ for iNdEx := len(m.Addrs) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Addrs[iNdEx])
+ copy(dAtA[i:], m.Addrs[iNdEx])
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Addrs[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ResetReplicationRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ResetReplicationRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ResetReplicationRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ResetReplicationResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ResetReplicationResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ResetReplicationResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *VReplicationExecRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *VReplicationExecRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *VReplicationExecRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Query) > 0 {
+ i -= len(m.Query)
+ copy(dAtA[i:], m.Query)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Query)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *VReplicationExecResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *VReplicationExecResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *VReplicationExecResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Result != nil {
+ {
+ size, err := m.Result.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *VReplicationWaitForPosRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *VReplicationWaitForPosRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *VReplicationWaitForPosRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Position) > 0 {
+ i -= len(m.Position)
+ copy(dAtA[i:], m.Position)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Position)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Id != 0 {
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(m.Id))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *VReplicationWaitForPosResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *VReplicationWaitForPosResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *VReplicationWaitForPosResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *InitMasterRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *InitMasterRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *InitMasterRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *InitMasterResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *InitMasterResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *InitMasterResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Position) > 0 {
+ i -= len(m.Position)
+ copy(dAtA[i:], m.Position)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Position)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *PopulateReparentJournalRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PopulateReparentJournalRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *PopulateReparentJournalRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.ReplicationPosition) > 0 {
+ i -= len(m.ReplicationPosition)
+ copy(dAtA[i:], m.ReplicationPosition)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.ReplicationPosition)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.MasterAlias != nil {
+ {
+ size, err := m.MasterAlias.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.ActionName) > 0 {
+ i -= len(m.ActionName)
+ copy(dAtA[i:], m.ActionName)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.ActionName)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.TimeCreatedNs != 0 {
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(m.TimeCreatedNs))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *PopulateReparentJournalResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PopulateReparentJournalResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *PopulateReparentJournalResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *InitReplicaRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *InitReplicaRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *InitReplicaRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.TimeCreatedNs != 0 {
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(m.TimeCreatedNs))
+ i--
+ dAtA[i] = 0x18
+ }
+ if len(m.ReplicationPosition) > 0 {
+ i -= len(m.ReplicationPosition)
+ copy(dAtA[i:], m.ReplicationPosition)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.ReplicationPosition)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Parent != nil {
+ {
+ size, err := m.Parent.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *InitReplicaResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *InitReplicaResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *InitReplicaResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *DemoteMasterRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *DemoteMasterRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *DemoteMasterRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *DemoteMasterResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *DemoteMasterResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *DemoteMasterResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.MasterStatus != nil {
+ {
+ size, err := m.MasterStatus.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.DeprecatedPosition) > 0 {
+ i -= len(m.DeprecatedPosition)
+ copy(dAtA[i:], m.DeprecatedPosition)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.DeprecatedPosition)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *UndoDemoteMasterRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *UndoDemoteMasterRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *UndoDemoteMasterRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *UndoDemoteMasterResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *UndoDemoteMasterResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *UndoDemoteMasterResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ReplicaWasPromotedRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ReplicaWasPromotedRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ReplicaWasPromotedRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ReplicaWasPromotedResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ReplicaWasPromotedResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ReplicaWasPromotedResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *SetMasterRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SetMasterRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *SetMasterRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.WaitPosition) > 0 {
+ i -= len(m.WaitPosition)
+ copy(dAtA[i:], m.WaitPosition)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.WaitPosition)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.ForceStartReplication {
+ i--
+ if m.ForceStartReplication {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.TimeCreatedNs != 0 {
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(m.TimeCreatedNs))
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.Parent != nil {
+ {
+ size, err := m.Parent.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *SetMasterResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SetMasterResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *SetMasterResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ReplicaWasRestartedRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ReplicaWasRestartedRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ReplicaWasRestartedRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Parent != nil {
+ {
+ size, err := m.Parent.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ReplicaWasRestartedResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ReplicaWasRestartedResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ReplicaWasRestartedResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *StopReplicationAndGetStatusRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StopReplicationAndGetStatusRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *StopReplicationAndGetStatusRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.StopReplicationMode != 0 {
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(m.StopReplicationMode))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *StopReplicationAndGetStatusResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StopReplicationAndGetStatusResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *StopReplicationAndGetStatusResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Status != nil {
+ {
+ size, err := m.Status.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.HybridStatus != nil {
+ {
+ size, err := m.HybridStatus.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *PromoteReplicaRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PromoteReplicaRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *PromoteReplicaRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *PromoteReplicaResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PromoteReplicaResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *PromoteReplicaResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Position) > 0 {
+ i -= len(m.Position)
+ copy(dAtA[i:], m.Position)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Position)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *BackupRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *BackupRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *BackupRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.AllowMaster {
+ i--
+ if m.AllowMaster {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.Concurrency != 0 {
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(m.Concurrency))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *BackupResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *BackupResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *BackupResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Event != nil {
+ {
+ size, err := m.Event.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RestoreFromBackupRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RestoreFromBackupRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RestoreFromBackupRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RestoreFromBackupResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RestoreFromBackupResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RestoreFromBackupResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Event != nil {
+ {
+ size, err := m.Event.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *VExecRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *VExecRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *VExecRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Workflow) > 0 {
+ i -= len(m.Workflow)
+ copy(dAtA[i:], m.Workflow)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Workflow)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Query) > 0 {
+ i -= len(m.Query)
+ copy(dAtA[i:], m.Query)
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(len(m.Query)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *VExecResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *VExecResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *VExecResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Result != nil {
+ {
+ size, err := m.Result.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTabletmanagerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func encodeVarintTabletmanagerdata(dAtA []byte, offset int, v uint64) int {
+ offset -= sovTabletmanagerdata(v)
+ base := offset
+ for v >= 1<<7 {
+ dAtA[offset] = uint8(v&0x7f | 0x80)
+ v >>= 7
+ offset++
+ }
+ dAtA[offset] = uint8(v)
+ return base
+}
+func (m *TableDefinition) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ l = len(m.Schema)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if len(m.Columns) > 0 {
+ for _, s := range m.Columns {
+ l = len(s)
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ }
+ if len(m.PrimaryKeyColumns) > 0 {
+ for _, s := range m.PrimaryKeyColumns {
+ l = len(s)
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ }
+ l = len(m.Type)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.DataLength != 0 {
+ n += 1 + sovTabletmanagerdata(uint64(m.DataLength))
+ }
+ if m.RowCount != 0 {
+ n += 1 + sovTabletmanagerdata(uint64(m.RowCount))
+ }
+ if len(m.Fields) > 0 {
+ for _, e := range m.Fields {
+ l = e.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *SchemaDefinition) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.DatabaseSchema)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if len(m.TableDefinitions) > 0 {
+ for _, e := range m.TableDefinitions {
+ l = e.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ }
+ l = len(m.Version)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *SchemaChangeResult) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.BeforeSchema != nil {
+ l = m.BeforeSchema.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.AfterSchema != nil {
+ l = m.AfterSchema.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *UserPermission) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Host)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ l = len(m.User)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.PasswordChecksum != 0 {
+ n += 1 + sovTabletmanagerdata(uint64(m.PasswordChecksum))
+ }
+ if len(m.Privileges) > 0 {
+ for k, v := range m.Privileges {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovTabletmanagerdata(uint64(len(k))) + 1 + len(v) + sovTabletmanagerdata(uint64(len(v)))
+ n += mapEntrySize + 1 + sovTabletmanagerdata(uint64(mapEntrySize))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *DbPermission) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Host)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ l = len(m.Db)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ l = len(m.User)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if len(m.Privileges) > 0 {
+ for k, v := range m.Privileges {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovTabletmanagerdata(uint64(len(k))) + 1 + len(v) + sovTabletmanagerdata(uint64(len(v)))
+ n += mapEntrySize + 1 + sovTabletmanagerdata(uint64(mapEntrySize))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Permissions) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.UserPermissions) > 0 {
+ for _, e := range m.UserPermissions {
+ l = e.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ }
+ if len(m.DbPermissions) > 0 {
+ for _, e := range m.DbPermissions {
+ l = e.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *PingRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Payload)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *PingResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Payload)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *SleepRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Duration != 0 {
+ n += 1 + sovTabletmanagerdata(uint64(m.Duration))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *SleepResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ExecuteHookRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if len(m.Parameters) > 0 {
+ for _, s := range m.Parameters {
+ l = len(s)
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ }
+ if len(m.ExtraEnv) > 0 {
+ for k, v := range m.ExtraEnv {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovTabletmanagerdata(uint64(len(k))) + 1 + len(v) + sovTabletmanagerdata(uint64(len(v)))
+ n += mapEntrySize + 1 + sovTabletmanagerdata(uint64(mapEntrySize))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ExecuteHookResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.ExitStatus != 0 {
+ n += 1 + sovTabletmanagerdata(uint64(m.ExitStatus))
+ }
+ l = len(m.Stdout)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ l = len(m.Stderr)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetSchemaRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Tables) > 0 {
+ for _, s := range m.Tables {
+ l = len(s)
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ }
+ if m.IncludeViews {
+ n += 2
+ }
+ if len(m.ExcludeTables) > 0 {
+ for _, s := range m.ExcludeTables {
+ l = len(s)
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetSchemaResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.SchemaDefinition != nil {
+ l = m.SchemaDefinition.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetPermissionsRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetPermissionsResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Permissions != nil {
+ l = m.Permissions.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *SetReadOnlyRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *SetReadOnlyResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *SetReadWriteRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *SetReadWriteResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ChangeTypeRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.TabletType != 0 {
+ n += 1 + sovTabletmanagerdata(uint64(m.TabletType))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ChangeTypeResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RefreshStateRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RefreshStateResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RunHealthCheckRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RunHealthCheckResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *IgnoreHealthErrorRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Pattern)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *IgnoreHealthErrorResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ReloadSchemaRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.WaitPosition)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ReloadSchemaResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *PreflightSchemaRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Changes) > 0 {
+ for _, s := range m.Changes {
+ l = len(s)
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *PreflightSchemaResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.ChangeResults) > 0 {
+ for _, e := range m.ChangeResults {
+ l = e.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ApplySchemaRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Sql)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.Force {
+ n += 2
+ }
+ if m.AllowReplication {
+ n += 2
+ }
+ if m.BeforeSchema != nil {
+ l = m.BeforeSchema.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.AfterSchema != nil {
+ l = m.AfterSchema.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ApplySchemaResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.BeforeSchema != nil {
+ l = m.BeforeSchema.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.AfterSchema != nil {
+ l = m.AfterSchema.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *LockTablesRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *LockTablesResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *UnlockTablesRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *UnlockTablesResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ExecuteFetchAsDbaRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Query)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ l = len(m.DbName)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.MaxRows != 0 {
+ n += 1 + sovTabletmanagerdata(uint64(m.MaxRows))
+ }
+ if m.DisableBinlogs {
+ n += 2
+ }
+ if m.ReloadSchema {
+ n += 2
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ExecuteFetchAsDbaResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Result != nil {
+ l = m.Result.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ExecuteFetchAsAllPrivsRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Query)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ l = len(m.DbName)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.MaxRows != 0 {
+ n += 1 + sovTabletmanagerdata(uint64(m.MaxRows))
+ }
+ if m.ReloadSchema {
+ n += 2
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ExecuteFetchAsAllPrivsResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Result != nil {
+ l = m.Result.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ExecuteFetchAsAppRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Query)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.MaxRows != 0 {
+ n += 1 + sovTabletmanagerdata(uint64(m.MaxRows))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ExecuteFetchAsAppResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Result != nil {
+ l = m.Result.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ReplicationStatusRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ReplicationStatusResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Status != nil {
+ l = m.Status.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *MasterStatusRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *MasterStatusResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Status != nil {
+ l = m.Status.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *MasterPositionRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *MasterPositionResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Position)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *WaitForPositionRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Position)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *WaitForPositionResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StopReplicationRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StopReplicationResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StopReplicationMinimumRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Position)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.WaitTimeout != 0 {
+ n += 1 + sovTabletmanagerdata(uint64(m.WaitTimeout))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StopReplicationMinimumResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Position)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StartReplicationRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StartReplicationResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StartReplicationUntilAfterRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Position)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.WaitTimeout != 0 {
+ n += 1 + sovTabletmanagerdata(uint64(m.WaitTimeout))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StartReplicationUntilAfterResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetReplicasRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetReplicasResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Addrs) > 0 {
+ for _, s := range m.Addrs {
+ l = len(s)
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ResetReplicationRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ResetReplicationResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *VReplicationExecRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Query)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *VReplicationExecResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Result != nil {
+ l = m.Result.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *VReplicationWaitForPosRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Id != 0 {
+ n += 1 + sovTabletmanagerdata(uint64(m.Id))
+ }
+ l = len(m.Position)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *VReplicationWaitForPosResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *InitMasterRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *InitMasterResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Position)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *PopulateReparentJournalRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.TimeCreatedNs != 0 {
+ n += 1 + sovTabletmanagerdata(uint64(m.TimeCreatedNs))
+ }
+ l = len(m.ActionName)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.MasterAlias != nil {
+ l = m.MasterAlias.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ l = len(m.ReplicationPosition)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *PopulateReparentJournalResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *InitReplicaRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Parent != nil {
+ l = m.Parent.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ l = len(m.ReplicationPosition)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.TimeCreatedNs != 0 {
+ n += 1 + sovTabletmanagerdata(uint64(m.TimeCreatedNs))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *InitReplicaResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *DemoteMasterRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *DemoteMasterResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.DeprecatedPosition)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.MasterStatus != nil {
+ l = m.MasterStatus.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *UndoDemoteMasterRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *UndoDemoteMasterResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ReplicaWasPromotedRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ReplicaWasPromotedResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *SetMasterRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Parent != nil {
+ l = m.Parent.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.TimeCreatedNs != 0 {
+ n += 1 + sovTabletmanagerdata(uint64(m.TimeCreatedNs))
+ }
+ if m.ForceStartReplication {
+ n += 2
+ }
+ l = len(m.WaitPosition)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *SetMasterResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ReplicaWasRestartedRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Parent != nil {
+ l = m.Parent.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ReplicaWasRestartedResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StopReplicationAndGetStatusRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.StopReplicationMode != 0 {
+ n += 1 + sovTabletmanagerdata(uint64(m.StopReplicationMode))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StopReplicationAndGetStatusResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.HybridStatus != nil {
+ l = m.HybridStatus.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.Status != nil {
+ l = m.Status.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *PromoteReplicaRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *PromoteReplicaResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Position)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *BackupRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Concurrency != 0 {
+ n += 1 + sovTabletmanagerdata(uint64(m.Concurrency))
+ }
+ if m.AllowMaster {
+ n += 2
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *BackupResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Event != nil {
+ l = m.Event.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RestoreFromBackupRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RestoreFromBackupResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Event != nil {
+ l = m.Event.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *VExecRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Query)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ l = len(m.Workflow)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *VExecResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Result != nil {
+ l = m.Result.Size()
+ n += 1 + l + sovTabletmanagerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func sovTabletmanagerdata(x uint64) (n int) {
+ return (math_bits.Len64(x|1) + 6) / 7
+}
+func sozTabletmanagerdata(x uint64) (n int) {
+ return sovTabletmanagerdata(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+}
+func (m *TableDefinition) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: TableDefinition: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: TableDefinition: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Schema", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Schema = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Columns", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Columns = append(m.Columns, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PrimaryKeyColumns", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.PrimaryKeyColumns = append(m.PrimaryKeyColumns, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Type = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 6:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field DataLength", wireType)
+ }
+ m.DataLength = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.DataLength |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 7:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RowCount", wireType)
+ }
+ m.RowCount = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.RowCount |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 8:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Fields", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Fields = append(m.Fields, &query.Field{})
+ if err := m.Fields[len(m.Fields)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *SchemaDefinition) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SchemaDefinition: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SchemaDefinition: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field DatabaseSchema", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.DatabaseSchema = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TableDefinitions", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.TableDefinitions = append(m.TableDefinitions, &TableDefinition{})
+ if err := m.TableDefinitions[len(m.TableDefinitions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Version", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Version = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *SchemaChangeResult) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SchemaChangeResult: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SchemaChangeResult: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field BeforeSchema", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.BeforeSchema == nil {
+ m.BeforeSchema = &SchemaDefinition{}
+ }
+ if err := m.BeforeSchema.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field AfterSchema", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.AfterSchema == nil {
+ m.AfterSchema = &SchemaDefinition{}
+ }
+ if err := m.AfterSchema.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *UserPermission) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: UserPermission: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: UserPermission: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Host", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Host = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field User", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.User = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PasswordChecksum", wireType)
+ }
+ m.PasswordChecksum = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.PasswordChecksum |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Privileges", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Privileges == nil {
+ m.Privileges = make(map[string]string)
+ }
+ var mapkey string
+ var mapvalue string
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.Privileges[mapkey] = mapvalue
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *DbPermission) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: DbPermission: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: DbPermission: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Host", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Host = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Db", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Db = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field User", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.User = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Privileges", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Privileges == nil {
+ m.Privileges = make(map[string]string)
+ }
+ var mapkey string
+ var mapvalue string
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.Privileges[mapkey] = mapvalue
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Permissions) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Permissions: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Permissions: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field UserPermissions", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.UserPermissions = append(m.UserPermissions, &UserPermission{})
+ if err := m.UserPermissions[len(m.UserPermissions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field DbPermissions", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.DbPermissions = append(m.DbPermissions, &DbPermission{})
+ if err := m.DbPermissions[len(m.DbPermissions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PingRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PingRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PingRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Payload", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Payload = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PingResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PingResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PingResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Payload", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Payload = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *SleepRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SleepRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SleepRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Duration", wireType)
+ }
+ m.Duration = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Duration |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *SleepResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SleepResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SleepResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ExecuteHookRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExecuteHookRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExecuteHookRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Parameters", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Parameters = append(m.Parameters, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ExtraEnv", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ExtraEnv == nil {
+ m.ExtraEnv = make(map[string]string)
+ }
+ var mapkey string
+ var mapvalue string
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.ExtraEnv[mapkey] = mapvalue
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ExecuteHookResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExecuteHookResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExecuteHookResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ExitStatus", wireType)
+ }
+ m.ExitStatus = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.ExitStatus |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Stdout", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Stdout = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Stderr", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Stderr = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetSchemaRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetSchemaRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetSchemaRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Tables", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Tables = append(m.Tables, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field IncludeViews", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.IncludeViews = bool(v != 0)
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ExcludeTables", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ExcludeTables = append(m.ExcludeTables, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetSchemaResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetSchemaResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetSchemaResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SchemaDefinition", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.SchemaDefinition == nil {
+ m.SchemaDefinition = &SchemaDefinition{}
+ }
+ if err := m.SchemaDefinition.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetPermissionsRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetPermissionsRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetPermissionsRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetPermissionsResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetPermissionsResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetPermissionsResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Permissions", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Permissions == nil {
+ m.Permissions = &Permissions{}
+ }
+ if err := m.Permissions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *SetReadOnlyRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SetReadOnlyRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SetReadOnlyRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *SetReadOnlyResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SetReadOnlyResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SetReadOnlyResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *SetReadWriteRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SetReadWriteRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SetReadWriteRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *SetReadWriteResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SetReadWriteResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SetReadWriteResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ChangeTypeRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ChangeTypeRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ChangeTypeRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletType", wireType)
+ }
+ m.TabletType = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TabletType |= topodata.TabletType(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ChangeTypeResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ChangeTypeResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ChangeTypeResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RefreshStateRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RefreshStateRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RefreshStateRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RefreshStateResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RefreshStateResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RefreshStateResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RunHealthCheckRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RunHealthCheckRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RunHealthCheckRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RunHealthCheckResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RunHealthCheckResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RunHealthCheckResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *IgnoreHealthErrorRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: IgnoreHealthErrorRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: IgnoreHealthErrorRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Pattern", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Pattern = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *IgnoreHealthErrorResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: IgnoreHealthErrorResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: IgnoreHealthErrorResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ReloadSchemaRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ReloadSchemaRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ReloadSchemaRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field WaitPosition", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.WaitPosition = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ReloadSchemaResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ReloadSchemaResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ReloadSchemaResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PreflightSchemaRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PreflightSchemaRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PreflightSchemaRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Changes", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Changes = append(m.Changes, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PreflightSchemaResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PreflightSchemaResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PreflightSchemaResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ChangeResults", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ChangeResults = append(m.ChangeResults, &SchemaChangeResult{})
+ if err := m.ChangeResults[len(m.ChangeResults)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ApplySchemaRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ApplySchemaRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ApplySchemaRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Sql", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Sql = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Force", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Force = bool(v != 0)
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field AllowReplication", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.AllowReplication = bool(v != 0)
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field BeforeSchema", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.BeforeSchema == nil {
+ m.BeforeSchema = &SchemaDefinition{}
+ }
+ if err := m.BeforeSchema.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field AfterSchema", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.AfterSchema == nil {
+ m.AfterSchema = &SchemaDefinition{}
+ }
+ if err := m.AfterSchema.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ApplySchemaResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ApplySchemaResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ApplySchemaResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field BeforeSchema", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.BeforeSchema == nil {
+ m.BeforeSchema = &SchemaDefinition{}
+ }
+ if err := m.BeforeSchema.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field AfterSchema", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.AfterSchema == nil {
+ m.AfterSchema = &SchemaDefinition{}
+ }
+ if err := m.AfterSchema.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *LockTablesRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: LockTablesRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: LockTablesRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *LockTablesResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: LockTablesResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: LockTablesResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *UnlockTablesRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: UnlockTablesRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: UnlockTablesRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *UnlockTablesResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: UnlockTablesResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: UnlockTablesResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ExecuteFetchAsDbaRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExecuteFetchAsDbaRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExecuteFetchAsDbaRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Query", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Query = append(m.Query[:0], dAtA[iNdEx:postIndex]...)
+ if m.Query == nil {
+ m.Query = []byte{}
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field DbName", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.DbName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MaxRows", wireType)
+ }
+ m.MaxRows = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.MaxRows |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field DisableBinlogs", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.DisableBinlogs = bool(v != 0)
+ case 5:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ReloadSchema", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.ReloadSchema = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ExecuteFetchAsDbaResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExecuteFetchAsDbaResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExecuteFetchAsDbaResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Result", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Result == nil {
+ m.Result = &query.QueryResult{}
+ }
+ if err := m.Result.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ExecuteFetchAsAllPrivsRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExecuteFetchAsAllPrivsRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExecuteFetchAsAllPrivsRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Query", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Query = append(m.Query[:0], dAtA[iNdEx:postIndex]...)
+ if m.Query == nil {
+ m.Query = []byte{}
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field DbName", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.DbName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MaxRows", wireType)
+ }
+ m.MaxRows = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.MaxRows |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ReloadSchema", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.ReloadSchema = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ExecuteFetchAsAllPrivsResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExecuteFetchAsAllPrivsResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExecuteFetchAsAllPrivsResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Result", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Result == nil {
+ m.Result = &query.QueryResult{}
+ }
+ if err := m.Result.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ExecuteFetchAsAppRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExecuteFetchAsAppRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExecuteFetchAsAppRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Query", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Query = append(m.Query[:0], dAtA[iNdEx:postIndex]...)
+ if m.Query == nil {
+ m.Query = []byte{}
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MaxRows", wireType)
+ }
+ m.MaxRows = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.MaxRows |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ExecuteFetchAsAppResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExecuteFetchAsAppResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExecuteFetchAsAppResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Result", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Result == nil {
+ m.Result = &query.QueryResult{}
+ }
+ if err := m.Result.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ReplicationStatusRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ReplicationStatusRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ReplicationStatusRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ReplicationStatusResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ReplicationStatusResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ReplicationStatusResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Status == nil {
+ m.Status = &replicationdata.Status{}
+ }
+ if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MasterStatusRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MasterStatusRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MasterStatusRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MasterStatusResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MasterStatusResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MasterStatusResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Status == nil {
+ m.Status = &replicationdata.MasterStatus{}
+ }
+ if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MasterPositionRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MasterPositionRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MasterPositionRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MasterPositionResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MasterPositionResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MasterPositionResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Position", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Position = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *WaitForPositionRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: WaitForPositionRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: WaitForPositionRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Position", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Position = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *WaitForPositionResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: WaitForPositionResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: WaitForPositionResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StopReplicationRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StopReplicationRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StopReplicationRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StopReplicationResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StopReplicationResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StopReplicationResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StopReplicationMinimumRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StopReplicationMinimumRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StopReplicationMinimumRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Position", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Position = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field WaitTimeout", wireType)
+ }
+ m.WaitTimeout = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.WaitTimeout |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StopReplicationMinimumResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StopReplicationMinimumResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StopReplicationMinimumResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Position", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Position = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StartReplicationRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StartReplicationRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StartReplicationRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StartReplicationResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StartReplicationResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StartReplicationResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StartReplicationUntilAfterRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StartReplicationUntilAfterRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StartReplicationUntilAfterRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Position", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Position = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field WaitTimeout", wireType)
+ }
+ m.WaitTimeout = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.WaitTimeout |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StartReplicationUntilAfterResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StartReplicationUntilAfterResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StartReplicationUntilAfterResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetReplicasRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetReplicasRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetReplicasRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetReplicasResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetReplicasResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetReplicasResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Addrs", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Addrs = append(m.Addrs, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ResetReplicationRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ResetReplicationRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ResetReplicationRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ResetReplicationResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ResetReplicationResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ResetReplicationResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *VReplicationExecRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: VReplicationExecRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: VReplicationExecRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Query", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Query = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *VReplicationExecResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: VReplicationExecResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: VReplicationExecResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Result", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Result == nil {
+ m.Result = &query.QueryResult{}
+ }
+ if err := m.Result.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *VReplicationWaitForPosRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: VReplicationWaitForPosRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: VReplicationWaitForPosRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
+ }
+ m.Id = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Id |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Position", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Position = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *VReplicationWaitForPosResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: VReplicationWaitForPosResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: VReplicationWaitForPosResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *InitMasterRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: InitMasterRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: InitMasterRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *InitMasterResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: InitMasterResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: InitMasterResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Position", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Position = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PopulateReparentJournalRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PopulateReparentJournalRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PopulateReparentJournalRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TimeCreatedNs", wireType)
+ }
+ m.TimeCreatedNs = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TimeCreatedNs |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ActionName", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ActionName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MasterAlias", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.MasterAlias == nil {
+ m.MasterAlias = &topodata.TabletAlias{}
+ }
+ if err := m.MasterAlias.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ReplicationPosition", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ReplicationPosition = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PopulateReparentJournalResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PopulateReparentJournalResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PopulateReparentJournalResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *InitReplicaRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: InitReplicaRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: InitReplicaRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Parent", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Parent == nil {
+ m.Parent = &topodata.TabletAlias{}
+ }
+ if err := m.Parent.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ReplicationPosition", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ReplicationPosition = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TimeCreatedNs", wireType)
+ }
+ m.TimeCreatedNs = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TimeCreatedNs |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *InitReplicaResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: InitReplicaResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: InitReplicaResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *DemoteMasterRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: DemoteMasterRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: DemoteMasterRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *DemoteMasterResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: DemoteMasterResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: DemoteMasterResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field DeprecatedPosition", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.DeprecatedPosition = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MasterStatus", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.MasterStatus == nil {
+ m.MasterStatus = &replicationdata.MasterStatus{}
+ }
+ if err := m.MasterStatus.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *UndoDemoteMasterRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: UndoDemoteMasterRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: UndoDemoteMasterRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *UndoDemoteMasterResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: UndoDemoteMasterResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: UndoDemoteMasterResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ReplicaWasPromotedRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ReplicaWasPromotedRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ReplicaWasPromotedRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ReplicaWasPromotedResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ReplicaWasPromotedResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ReplicaWasPromotedResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *SetMasterRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SetMasterRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SetMasterRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Parent", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Parent == nil {
+ m.Parent = &topodata.TabletAlias{}
+ }
+ if err := m.Parent.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TimeCreatedNs", wireType)
+ }
+ m.TimeCreatedNs = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TimeCreatedNs |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ForceStartReplication", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.ForceStartReplication = bool(v != 0)
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field WaitPosition", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.WaitPosition = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *SetMasterResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SetMasterResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SetMasterResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ReplicaWasRestartedRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ReplicaWasRestartedRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ReplicaWasRestartedRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Parent", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Parent == nil {
+ m.Parent = &topodata.TabletAlias{}
+ }
+ if err := m.Parent.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ReplicaWasRestartedResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ReplicaWasRestartedResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ReplicaWasRestartedResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StopReplicationAndGetStatusRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StopReplicationAndGetStatusRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StopReplicationAndGetStatusRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field StopReplicationMode", wireType)
+ }
+ m.StopReplicationMode = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.StopReplicationMode |= replicationdata.StopReplicationMode(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StopReplicationAndGetStatusResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StopReplicationAndGetStatusResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StopReplicationAndGetStatusResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field HybridStatus", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.HybridStatus == nil {
+ m.HybridStatus = &replicationdata.Status{}
+ }
+ if err := m.HybridStatus.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Status", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Status == nil {
+ m.Status = &replicationdata.StopReplicationStatus{}
+ }
+ if err := m.Status.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PromoteReplicaRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PromoteReplicaRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PromoteReplicaRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PromoteReplicaResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PromoteReplicaResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PromoteReplicaResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Position", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Position = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *BackupRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: BackupRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: BackupRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Concurrency", wireType)
+ }
+ m.Concurrency = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Concurrency |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field AllowMaster", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.AllowMaster = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *BackupResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: BackupResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: BackupResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Event", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Event == nil {
+ m.Event = &logutil.Event{}
+ }
+ if err := m.Event.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RestoreFromBackupRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RestoreFromBackupRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RestoreFromBackupRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RestoreFromBackupResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RestoreFromBackupResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RestoreFromBackupResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Event", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Event == nil {
+ m.Event = &logutil.Event{}
+ }
+ if err := m.Event.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *VExecRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: VExecRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: VExecRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Query", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Query = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Workflow", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Workflow = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *VExecResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: VExecResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: VExecResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Result", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Result == nil {
+ m.Result = &query.QueryResult{}
+ }
+ if err := m.Result.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTabletmanagerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTabletmanagerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func skipTabletmanagerdata(dAtA []byte) (n int, err error) {
+ l := len(dAtA)
+ iNdEx := 0
+ depth := 0
+ for iNdEx < l {
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ wireType := int(wire & 0x7)
+ switch wireType {
+ case 0:
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ iNdEx++
+ if dAtA[iNdEx-1] < 0x80 {
+ break
+ }
+ }
+ case 1:
+ iNdEx += 8
+ case 2:
+ var length int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowTabletmanagerdata
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ length |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if length < 0 {
+ return 0, ErrInvalidLengthTabletmanagerdata
+ }
+ iNdEx += length
+ case 3:
+ depth++
+ case 4:
+ if depth == 0 {
+ return 0, ErrUnexpectedEndOfGroupTabletmanagerdata
+ }
+ depth--
+ case 5:
+ iNdEx += 4
+ default:
+ return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
+ }
+ if iNdEx < 0 {
+ return 0, ErrInvalidLengthTabletmanagerdata
+ }
+ if depth == 0 {
+ return iNdEx, nil
+ }
+ }
+ return 0, io.ErrUnexpectedEOF
+}
+
+var (
+ ErrInvalidLengthTabletmanagerdata = fmt.Errorf("proto: negative length found during unmarshaling")
+ ErrIntOverflowTabletmanagerdata = fmt.Errorf("proto: integer overflow")
+ ErrUnexpectedEndOfGroupTabletmanagerdata = fmt.Errorf("proto: unexpected end of group")
+)
diff --git a/go/vt/proto/tabletmanagerservice/tabletmanagerservice.pb.go b/go/vt/proto/tabletmanagerservice/tabletmanagerservice.pb.go
index 338257b4306..5df76707ca2 100644
--- a/go/vt/proto/tabletmanagerservice/tabletmanagerservice.pb.go
+++ b/go/vt/proto/tabletmanagerservice/tabletmanagerservice.pb.go
@@ -1,4 +1,4 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: tabletmanagerservice.proto
package tabletmanagerservice
@@ -12,7 +12,6 @@ import (
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
-
tabletmanagerdata "vitess.io/vitess/go/vt/proto/tabletmanagerdata"
)
@@ -30,70 +29,72 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
func init() { proto.RegisterFile("tabletmanagerservice.proto", fileDescriptor_9ee75fe63cfd9360) }
var fileDescriptor_9ee75fe63cfd9360 = []byte{
- // 998 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x98, 0x6d, 0x6f, 0x23, 0x35,
- 0x10, 0xc7, 0xa9, 0xc4, 0x9d, 0x84, 0x79, 0x36, 0x88, 0x93, 0x8a, 0x04, 0x07, 0xd7, 0x83, 0xe3,
- 0x0e, 0x9a, 0x7b, 0xe0, 0x78, 0x9f, 0x7b, 0x68, 0xaf, 0xa8, 0x15, 0x21, 0xe9, 0x03, 0x02, 0x09,
- 0xc9, 0x4d, 0xa6, 0x89, 0xe9, 0xc6, 0x5e, 0x6c, 0x27, 0xa2, 0xaf, 0x90, 0x78, 0x8b, 0xc4, 0x07,
- 0xe2, 0xd3, 0x9d, 0xb2, 0x59, 0x7b, 0xc7, 0xbb, 0xb3, 0xce, 0xf6, 0x5d, 0x94, 0xf9, 0xcd, 0xfc,
- 0xed, 0xd9, 0xf1, 0x8c, 0x77, 0xd9, 0xb6, 0x13, 0xe7, 0x19, 0xb8, 0xb9, 0x50, 0x62, 0x0a, 0xc6,
- 0x82, 0x59, 0xca, 0x31, 0xec, 0xe6, 0x46, 0x3b, 0xcd, 0x3f, 0xa6, 0x6c, 0xdb, 0xb7, 0xa2, 0x7f,
- 0x27, 0xc2, 0x89, 0x35, 0xfe, 0xf8, 0xff, 0x1d, 0xf6, 0xee, 0x71, 0x61, 0x3b, 0x5a, 0xdb, 0xf8,
- 0x01, 0x7b, 0x73, 0x20, 0xd5, 0x94, 0x7f, 0xb6, 0xdb, 0xf4, 0x59, 0x19, 0x86, 0xf0, 0xe7, 0x02,
- 0xac, 0xdb, 0xfe, 0xbc, 0xd5, 0x6e, 0x73, 0xad, 0x2c, 0x7c, 0xf9, 0x06, 0x3f, 0x64, 0x37, 0x46,
- 0x19, 0x40, 0xce, 0x29, 0xb6, 0xb0, 0xf8, 0x60, 0xb7, 0xdb, 0x81, 0x10, 0xed, 0x77, 0xf6, 0xf6,
- 0xcb, 0xbf, 0x60, 0xbc, 0x70, 0xf0, 0x4a, 0xeb, 0x4b, 0x7e, 0x97, 0x70, 0x41, 0x76, 0x1f, 0xf9,
- 0xab, 0x4d, 0x58, 0x88, 0xff, 0x0b, 0x7b, 0x6b, 0x1f, 0xdc, 0x68, 0x3c, 0x83, 0xb9, 0xe0, 0x77,
- 0x08, 0xb7, 0x60, 0xf5, 0xb1, 0x77, 0xd2, 0x50, 0x88, 0x3c, 0x65, 0xef, 0xed, 0x83, 0x1b, 0x80,
- 0x99, 0x4b, 0x6b, 0xa5, 0x56, 0x96, 0xdf, 0xa3, 0x3d, 0x11, 0xe2, 0x35, 0xbe, 0xe9, 0x40, 0xe2,
- 0x14, 0x8d, 0xc0, 0x0d, 0x41, 0x4c, 0x7e, 0x52, 0xd9, 0x15, 0x99, 0x22, 0x64, 0x4f, 0xa5, 0x28,
- 0xc2, 0x42, 0x7c, 0xc1, 0xde, 0x29, 0x0d, 0x67, 0x46, 0x3a, 0xe0, 0x09, 0xcf, 0x02, 0xf0, 0x0a,
- 0x5f, 0x6f, 0xe4, 0x82, 0xc4, 0x6f, 0x8c, 0x3d, 0x9f, 0x09, 0x35, 0x85, 0xe3, 0xab, 0x1c, 0x38,
- 0x95, 0xe1, 0xca, 0xec, 0xc3, 0xdf, 0xdd, 0x40, 0xe1, 0xf5, 0x0f, 0xe1, 0xc2, 0x80, 0x9d, 0x8d,
- 0x9c, 0x68, 0x59, 0x3f, 0x06, 0x52, 0xeb, 0x8f, 0x39, 0xfc, 0xac, 0x87, 0x0b, 0xf5, 0x0a, 0x44,
- 0xe6, 0x66, 0xcf, 0x67, 0x30, 0xbe, 0x24, 0x9f, 0x75, 0x8c, 0xa4, 0x9e, 0x75, 0x9d, 0x0c, 0x42,
- 0x39, 0xfb, 0xf0, 0x60, 0xaa, 0xb4, 0x81, 0xb5, 0xf9, 0xa5, 0x31, 0xda, 0xf0, 0x07, 0x44, 0x84,
- 0x06, 0xe5, 0xe5, 0xbe, 0xed, 0x06, 0xc7, 0xd9, 0xcb, 0xb4, 0x98, 0x94, 0x67, 0x84, 0xce, 0x5e,
- 0x05, 0xa4, 0xb3, 0x87, 0xb9, 0x20, 0xf1, 0x07, 0x7b, 0x7f, 0x60, 0xe0, 0x22, 0x93, 0xd3, 0x99,
- 0x3f, 0x89, 0x54, 0x52, 0x6a, 0x8c, 0x17, 0xba, 0xdf, 0x05, 0xc5, 0x87, 0xa5, 0x9f, 0xe7, 0xd9,
- 0x55, 0xa9, 0x43, 0x15, 0x11, 0xb2, 0xa7, 0x0e, 0x4b, 0x84, 0xe1, 0x4a, 0x3e, 0xd4, 0xe3, 0xcb,
- 0xa2, 0xbb, 0x5a, 0xb2, 0x92, 0x2b, 0x73, 0xaa, 0x92, 0x31, 0x85, 0x9f, 0xc5, 0x89, 0xca, 0xaa,
- 0xf0, 0xd4, 0xb2, 0x30, 0x90, 0x7a, 0x16, 0x31, 0x87, 0x0b, 0xac, 0x6c, 0x94, 0x7b, 0xe0, 0xc6,
- 0xb3, 0xbe, 0x7d, 0x71, 0x2e, 0xc8, 0x02, 0x6b, 0x50, 0xa9, 0x02, 0x23, 0xe0, 0xa0, 0xf8, 0x37,
- 0xfb, 0x24, 0x36, 0xf7, 0xb3, 0x6c, 0x60, 0xe4, 0xd2, 0xf2, 0x87, 0x1b, 0x23, 0x79, 0xd4, 0x6b,
- 0x3f, 0xba, 0x86, 0x47, 0xfb, 0x96, 0xfb, 0x79, 0xde, 0x61, 0xcb, 0xfd, 0x3c, 0xef, 0xbe, 0xe5,
- 0x02, 0xc6, 0x8a, 0x43, 0xc8, 0x33, 0x39, 0x16, 0x4e, 0x6a, 0xb5, 0x6a, 0x26, 0x0b, 0x4b, 0x2a,
- 0x36, 0xa8, 0x94, 0x22, 0x01, 0xe3, 0xca, 0x39, 0x12, 0xd6, 0x81, 0x29, 0xc5, 0xa8, 0xca, 0xc1,
- 0x40, 0xaa, 0x72, 0x62, 0x0e, 0xf7, 0xc0, 0xb5, 0x65, 0xa0, 0xad, 0x5c, 0x2d, 0x82, 0xec, 0x81,
- 0x31, 0x92, 0xea, 0x81, 0x75, 0x12, 0xb7, 0x8b, 0x33, 0x21, 0xdd, 0x9e, 0xae, 0x94, 0x28, 0xff,
- 0x1a, 0x93, 0x6a, 0x17, 0x0d, 0x14, 0x6b, 0x8d, 0x9c, 0xce, 0x51, 0x6a, 0x49, 0xad, 0x1a, 0x93,
- 0xd2, 0x6a, 0xa0, 0xf8, 0x20, 0xd4, 0x8c, 0x47, 0x52, 0xc9, 0xf9, 0x62, 0x4e, 0x1e, 0x04, 0x1a,
- 0x4d, 0x1d, 0x84, 0x36, 0x8f, 0xb0, 0x80, 0x39, 0xfb, 0x60, 0xe4, 0x84, 0x71, 0x78, 0xb7, 0xf4,
- 0x16, 0x62, 0xc8, 0x8b, 0x3e, 0xe8, 0xc4, 0x06, 0xb9, 0x7f, 0xb7, 0xd8, 0x76, 0xdd, 0x7c, 0xa2,
- 0x9c, 0xcc, 0xfa, 0x17, 0x0e, 0x0c, 0xff, 0xbe, 0x43, 0xb4, 0x0a, 0xf7, 0x6b, 0x78, 0x7a, 0x4d,
- 0x2f, 0x3c, 0x18, 0xf6, 0xc1, 0x53, 0x96, 0x1c, 0x0c, 0xc8, 0x9e, 0x1a, 0x0c, 0x11, 0x86, 0x93,
- 0x7b, 0x8a, 0xd6, 0xb0, 0x6a, 0x0f, 0x64, 0x72, 0xeb, 0x50, 0x2a, 0xb9, 0x4d, 0x16, 0x17, 0x13,
- 0xb6, 0x56, 0x15, 0x4e, 0x16, 0x13, 0x8d, 0xa6, 0x8a, 0xa9, 0xcd, 0x03, 0xef, 0x77, 0x08, 0x16,
- 0x36, 0x16, 0x53, 0x1d, 0x4a, 0xed, 0xb7, 0xc9, 0xe2, 0xb9, 0x7b, 0xa0, 0xa4, 0x5b, 0x37, 0x0d,
- 0x72, 0xee, 0x56, 0xe6, 0xd4, 0xdc, 0xc5, 0x54, 0x08, 0xfe, 0xcf, 0x16, 0xbb, 0x35, 0xd0, 0xf9,
- 0x22, 0x2b, 0x6e, 0x7d, 0xb9, 0x30, 0xa0, 0xdc, 0x8f, 0x7a, 0x61, 0x94, 0xc8, 0x38, 0x95, 0x9c,
- 0x16, 0xd6, 0xeb, 0x3e, 0xbe, 0x8e, 0x0b, 0x2e, 0xd0, 0xd5, 0xe2, 0xca, 0xed, 0xf3, 0xb6, 0xc5,
- 0x97, 0xf6, 0x54, 0x81, 0x46, 0x18, 0x1e, 0x11, 0x2f, 0x60, 0xae, 0x1d, 0x94, 0x39, 0xa4, 0x3c,
- 0x31, 0x90, 0x1a, 0x11, 0x31, 0x87, 0x6b, 0xe2, 0x44, 0x4d, 0x74, 0x24, 0x73, 0x9f, 0xbc, 0x9b,
- 0xc4, 0x50, 0xaa, 0x26, 0x9a, 0x6c, 0x90, 0xb3, 0x8c, 0x97, 0xdb, 0x3c, 0x13, 0x76, 0x60, 0xf4,
- 0x0a, 0x9a, 0xf0, 0xc4, 0xe8, 0x44, 0x98, 0x97, 0xfc, 0xae, 0x23, 0x8d, 0x5f, 0x28, 0x47, 0xe0,
- 0xeb, 0xf0, 0x0e, 0xfd, 0x0a, 0x14, 0xef, 0x6a, 0x27, 0x0d, 0x85, 0xc8, 0x4b, 0xf6, 0x51, 0xa5,
- 0x3c, 0x04, 0xbb, 0xea, 0x6a, 0x30, 0xe1, 0xe9, 0x15, 0x06, 0xce, 0xab, 0xed, 0x76, 0xc5, 0x83,
- 0xee, 0x7f, 0x5b, 0xec, 0xd3, 0xda, 0xec, 0xe8, 0xab, 0xc9, 0xea, 0x95, 0x77, 0x7d, 0x97, 0x78,
- 0xba, 0x79, 0xd6, 0x60, 0xde, 0x2f, 0xe4, 0x87, 0xeb, 0xba, 0xe1, 0x9b, 0x46, 0x99, 0x78, 0x7f,
- 0x18, 0xee, 0x91, 0xef, 0x00, 0x18, 0x49, 0xdd, 0x34, 0xea, 0x64, 0x10, 0xfa, 0x99, 0xdd, 0x7c,
- 0x26, 0xc6, 0x97, 0x8b, 0x9c, 0x53, 0x9f, 0x2a, 0xd6, 0x26, 0x1f, 0xf8, 0x8b, 0x04, 0xe1, 0x03,
- 0x3e, 0xdc, 0xe2, 0x66, 0x75, 0xf5, 0xb3, 0x4e, 0x1b, 0xd8, 0x33, 0x7a, 0x5e, 0x46, 0x6f, 0xe9,
- 0x75, 0x31, 0x95, 0xbe, 0xfa, 0x35, 0x60, 0xa4, 0x79, 0xc8, 0x6e, 0x9c, 0x16, 0xf3, 0x86, 0xfa,
- 0x22, 0x73, 0x8a, 0x87, 0xcc, 0xed, 0x76, 0xc0, 0xc7, 0x7b, 0xf6, 0xe4, 0xd7, 0x47, 0x4b, 0xe9,
- 0xc0, 0xda, 0x5d, 0xa9, 0x7b, 0xeb, 0x5f, 0xbd, 0xa9, 0xee, 0x2d, 0x5d, 0xaf, 0xf8, 0xb8, 0xd4,
- 0xa3, 0x3e, 0x45, 0x9d, 0xdf, 0x2c, 0x6c, 0x4f, 0x5e, 0x07, 0x00, 0x00, 0xff, 0xff, 0xba, 0xb0,
- 0x28, 0x40, 0xc5, 0x12, 0x00, 0x00,
+ // 1025 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x98, 0xdf, 0x6f, 0x1b, 0x45,
+ 0x10, 0xc7, 0x6b, 0x89, 0x56, 0x62, 0xf9, 0xbd, 0x20, 0x2a, 0x05, 0xc9, 0x14, 0x9a, 0x42, 0x69,
+ 0x21, 0x6e, 0x0b, 0xe5, 0xdd, 0x4d, 0x9b, 0x34, 0x28, 0x11, 0xc6, 0x6e, 0x12, 0x04, 0x12, 0xd2,
+ 0xc6, 0x9e, 0xd8, 0x47, 0xce, 0xb7, 0xc7, 0xee, 0xda, 0x22, 0x4f, 0x48, 0xbc, 0x22, 0xf1, 0xcc,
+ 0xdf, 0xc2, 0x5f, 0xc0, 0x23, 0x7f, 0x02, 0x0a, 0xff, 0x48, 0x75, 0xe7, 0xdb, 0xbd, 0xd9, 0xbb,
+ 0xb9, 0xf5, 0xf9, 0xcd, 0xf2, 0x7c, 0x66, 0xbe, 0xbb, 0x73, 0xb3, 0x33, 0x7b, 0xc7, 0xb6, 0x8c,
+ 0x38, 0x8b, 0xc1, 0xcc, 0x45, 0x22, 0xa6, 0xa0, 0x34, 0xa8, 0x65, 0x34, 0x86, 0x9d, 0x54, 0x49,
+ 0x23, 0xf9, 0x7b, 0x94, 0x6d, 0xeb, 0xa6, 0xf7, 0xef, 0x44, 0x18, 0xb1, 0xc2, 0x1f, 0xfd, 0xbd,
+ 0xcd, 0xde, 0x78, 0x91, 0xdb, 0x8e, 0x56, 0x36, 0x7e, 0xc0, 0x5e, 0x19, 0x44, 0xc9, 0x94, 0x77,
+ 0x77, 0xea, 0x3e, 0x99, 0x61, 0x08, 0xbf, 0x2c, 0x40, 0x9b, 0xad, 0x0f, 0x1b, 0xed, 0x3a, 0x95,
+ 0x89, 0x86, 0x8f, 0xaf, 0xf1, 0x43, 0x76, 0x7d, 0x14, 0x03, 0xa4, 0x9c, 0x62, 0x73, 0x8b, 0x0d,
+ 0x76, 0xab, 0x19, 0x70, 0xd1, 0x7e, 0x62, 0xaf, 0x3d, 0xfb, 0x15, 0xc6, 0x0b, 0x03, 0xcf, 0xa5,
+ 0xbc, 0xe0, 0x77, 0x08, 0x17, 0x64, 0xb7, 0x91, 0x3f, 0x59, 0x87, 0xb9, 0xf8, 0xdf, 0xb3, 0x57,
+ 0xf7, 0xc1, 0x8c, 0xc6, 0x33, 0x98, 0x0b, 0x7e, 0x9b, 0x70, 0x73, 0x56, 0x1b, 0x7b, 0x3b, 0x0c,
+ 0xb9, 0xc8, 0x53, 0xf6, 0xe6, 0x3e, 0x98, 0x01, 0xa8, 0x79, 0xa4, 0x75, 0x24, 0x13, 0xcd, 0xef,
+ 0xd2, 0x9e, 0x08, 0xb1, 0x1a, 0x9f, 0xb5, 0x20, 0x71, 0x8a, 0x46, 0x60, 0x86, 0x20, 0x26, 0xdf,
+ 0x26, 0xf1, 0x25, 0x99, 0x22, 0x64, 0x0f, 0xa5, 0xc8, 0xc3, 0x5c, 0x7c, 0xc1, 0x5e, 0x2f, 0x0c,
+ 0xa7, 0x2a, 0x32, 0xc0, 0x03, 0x9e, 0x39, 0x60, 0x15, 0x3e, 0x5d, 0xcb, 0x39, 0x89, 0x1f, 0x19,
+ 0xdb, 0x9d, 0x89, 0x64, 0x0a, 0x2f, 0x2e, 0x53, 0xe0, 0x54, 0x86, 0x4b, 0xb3, 0x0d, 0x7f, 0x67,
+ 0x0d, 0x85, 0xd7, 0x3f, 0x84, 0x73, 0x05, 0x7a, 0x36, 0x32, 0xa2, 0x61, 0xfd, 0x18, 0x08, 0xad,
+ 0xdf, 0xe7, 0xf0, 0xb3, 0x1e, 0x2e, 0x92, 0xe7, 0x20, 0x62, 0x33, 0xdb, 0x9d, 0xc1, 0xf8, 0x82,
+ 0x7c, 0xd6, 0x3e, 0x12, 0x7a, 0xd6, 0x55, 0xd2, 0x09, 0xa5, 0xec, 0x9d, 0x83, 0x69, 0x22, 0x15,
+ 0xac, 0xcc, 0xcf, 0x94, 0x92, 0x8a, 0xdf, 0x27, 0x22, 0xd4, 0x28, 0x2b, 0xf7, 0x79, 0x3b, 0xd8,
+ 0xcf, 0x5e, 0x2c, 0xc5, 0xa4, 0x38, 0x23, 0x74, 0xf6, 0x4a, 0x20, 0x9c, 0x3d, 0xcc, 0x39, 0x89,
+ 0x9f, 0xd9, 0x5b, 0x03, 0x05, 0xe7, 0x71, 0x34, 0x9d, 0xd9, 0x93, 0x48, 0x25, 0xa5, 0xc2, 0x58,
+ 0xa1, 0x7b, 0x6d, 0x50, 0x7c, 0x58, 0xfa, 0x69, 0x1a, 0x5f, 0x16, 0x3a, 0x54, 0x11, 0x21, 0x7b,
+ 0xe8, 0xb0, 0x78, 0x18, 0xae, 0xe4, 0x43, 0x39, 0xbe, 0xc8, 0xbb, 0xab, 0x26, 0x2b, 0xb9, 0x34,
+ 0x87, 0x2a, 0x19, 0x53, 0xf8, 0x59, 0x1c, 0x27, 0x71, 0x19, 0x9e, 0x5a, 0x16, 0x06, 0x42, 0xcf,
+ 0xc2, 0xe7, 0x70, 0x81, 0x15, 0x8d, 0x72, 0x0f, 0xcc, 0x78, 0xd6, 0xd7, 0x4f, 0xcf, 0x04, 0x59,
+ 0x60, 0x35, 0x2a, 0x54, 0x60, 0x04, 0xec, 0x14, 0x7f, 0x63, 0xef, 0xfb, 0xe6, 0x7e, 0x1c, 0x0f,
+ 0x54, 0xb4, 0xd4, 0xfc, 0xc1, 0xda, 0x48, 0x16, 0xb5, 0xda, 0x0f, 0x37, 0xf0, 0x68, 0xde, 0x72,
+ 0x3f, 0x4d, 0x5b, 0x6c, 0xb9, 0x9f, 0xa6, 0xed, 0xb7, 0x9c, 0xc3, 0x58, 0x71, 0x08, 0x69, 0x1c,
+ 0x8d, 0x85, 0x89, 0x64, 0x92, 0x35, 0x93, 0x85, 0x26, 0x15, 0x6b, 0x54, 0x48, 0x91, 0x80, 0x71,
+ 0xe5, 0x1c, 0x09, 0x6d, 0x40, 0x15, 0x62, 0x54, 0xe5, 0x60, 0x20, 0x54, 0x39, 0x3e, 0x87, 0x7b,
+ 0xe0, 0xca, 0x32, 0x90, 0x3a, 0xca, 0x16, 0x41, 0xf6, 0x40, 0x1f, 0x09, 0xf5, 0xc0, 0x2a, 0x89,
+ 0xdb, 0xc5, 0xa9, 0x88, 0xcc, 0x9e, 0x2c, 0x95, 0x28, 0xff, 0x0a, 0x13, 0x6a, 0x17, 0x35, 0x14,
+ 0x6b, 0x8d, 0x8c, 0x4c, 0x51, 0x6a, 0x49, 0xad, 0x0a, 0x13, 0xd2, 0xaa, 0xa1, 0xf8, 0x20, 0x54,
+ 0x8c, 0x47, 0x51, 0x12, 0xcd, 0x17, 0x73, 0xf2, 0x20, 0xd0, 0x68, 0xe8, 0x20, 0x34, 0x79, 0xb8,
+ 0x05, 0xcc, 0xd9, 0xdb, 0x23, 0x23, 0x94, 0xc1, 0xbb, 0xa5, 0xb7, 0xe0, 0x43, 0x56, 0xf4, 0x7e,
+ 0x2b, 0xd6, 0xc9, 0xfd, 0xd1, 0x61, 0x5b, 0x55, 0xf3, 0x71, 0x62, 0xa2, 0xb8, 0x7f, 0x6e, 0x40,
+ 0xf1, 0xaf, 0x5a, 0x44, 0x2b, 0x71, 0xbb, 0x86, 0xc7, 0x1b, 0x7a, 0xe1, 0xc1, 0xb0, 0x0f, 0x96,
+ 0xd2, 0xe4, 0x60, 0x40, 0xf6, 0xd0, 0x60, 0xf0, 0x30, 0x9c, 0xdc, 0x13, 0xb4, 0x86, 0xac, 0x3d,
+ 0x90, 0xc9, 0xad, 0x42, 0xa1, 0xe4, 0xd6, 0x59, 0x5c, 0x4c, 0xd8, 0x5a, 0x56, 0x38, 0x59, 0x4c,
+ 0x34, 0x1a, 0x2a, 0xa6, 0x26, 0x0f, 0xbc, 0xdf, 0x21, 0x68, 0x58, 0x5b, 0x4c, 0x55, 0x28, 0xb4,
+ 0xdf, 0x3a, 0x8b, 0xe7, 0xee, 0x41, 0x12, 0x99, 0x55, 0xd3, 0x20, 0xe7, 0x6e, 0x69, 0x0e, 0xcd,
+ 0x5d, 0x4c, 0xb9, 0xe0, 0xbf, 0x77, 0xd8, 0xcd, 0x81, 0x4c, 0x17, 0x71, 0x7e, 0xeb, 0x4b, 0x85,
+ 0x82, 0xc4, 0x7c, 0x23, 0x17, 0x2a, 0x11, 0x31, 0xa7, 0x92, 0xd3, 0xc0, 0x5a, 0xdd, 0x47, 0x9b,
+ 0xb8, 0xe0, 0x02, 0xcd, 0x16, 0x57, 0x6c, 0x9f, 0x37, 0x2d, 0xbe, 0xb0, 0x87, 0x0a, 0xd4, 0xc3,
+ 0xf0, 0x88, 0x78, 0x0a, 0x73, 0x69, 0xa0, 0xc8, 0x21, 0xe5, 0x89, 0x81, 0xd0, 0x88, 0xf0, 0x39,
+ 0x5c, 0x13, 0xc7, 0xc9, 0x44, 0x7a, 0x32, 0xf7, 0xc8, 0xbb, 0x89, 0x0f, 0x85, 0x6a, 0xa2, 0xce,
+ 0x3a, 0x39, 0xcd, 0x78, 0xb1, 0xcd, 0x53, 0xa1, 0x07, 0x4a, 0x66, 0xd0, 0x84, 0x07, 0x46, 0x27,
+ 0xc2, 0xac, 0xe4, 0x17, 0x2d, 0x69, 0xfc, 0x42, 0x39, 0x02, 0x5b, 0x87, 0xb7, 0xe9, 0x57, 0x20,
+ 0x7f, 0x57, 0xdb, 0x61, 0xc8, 0x45, 0x5e, 0xb2, 0x77, 0x4b, 0xe5, 0x21, 0xe8, 0xac, 0xab, 0xc1,
+ 0x84, 0x87, 0x57, 0xe8, 0x38, 0xab, 0xb6, 0xd3, 0x16, 0x77, 0xba, 0x7f, 0x76, 0xd8, 0x07, 0x95,
+ 0xd9, 0xd1, 0x4f, 0x26, 0xd9, 0x2b, 0xef, 0xea, 0x2e, 0xf1, 0x78, 0xfd, 0xac, 0xc1, 0xbc, 0x5d,
+ 0xc8, 0xd7, 0x9b, 0xba, 0xe1, 0x9b, 0x46, 0x91, 0x78, 0x7b, 0x18, 0xee, 0x92, 0xef, 0x00, 0x18,
+ 0x09, 0xdd, 0x34, 0xaa, 0xa4, 0x13, 0xfa, 0x8e, 0xdd, 0x78, 0x22, 0xc6, 0x17, 0x8b, 0x94, 0x53,
+ 0x9f, 0x2a, 0x56, 0x26, 0x1b, 0xf8, 0xa3, 0x00, 0x61, 0x03, 0x3e, 0xe8, 0x70, 0x95, 0x5d, 0xfd,
+ 0xb4, 0x91, 0x0a, 0xf6, 0x94, 0x9c, 0x17, 0xd1, 0x1b, 0x7a, 0x9d, 0x4f, 0x85, 0xaf, 0x7e, 0x35,
+ 0x18, 0x69, 0x1e, 0xb2, 0xeb, 0x27, 0xf9, 0xbc, 0xa1, 0xbe, 0xc8, 0x9c, 0xe0, 0x21, 0x73, 0xab,
+ 0x19, 0xb0, 0xf1, 0x9e, 0xec, 0xfe, 0x73, 0xd5, 0xed, 0xfc, 0x7b, 0xd5, 0xed, 0xfc, 0x77, 0xd5,
+ 0xed, 0xfc, 0xf5, 0x7f, 0xf7, 0xda, 0x0f, 0x0f, 0x97, 0x91, 0x01, 0xad, 0x77, 0x22, 0xd9, 0x5b,
+ 0xfd, 0xea, 0x4d, 0x65, 0x6f, 0x69, 0x7a, 0xf9, 0xc7, 0xa6, 0x1e, 0xf5, 0x69, 0xea, 0xec, 0x46,
+ 0x6e, 0xfb, 0xf2, 0x65, 0x00, 0x00, 0x00, 0xff, 0xff, 0x8d, 0x51, 0x5d, 0x35, 0xd5, 0x12, 0x00,
+ 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
diff --git a/go/vt/proto/throttlerdata/throttlerdata.pb.go b/go/vt/proto/throttlerdata/throttlerdata.pb.go
index aab974ebf86..c144a8f2a64 100644
--- a/go/vt/proto/throttlerdata/throttlerdata.pb.go
+++ b/go/vt/proto/throttlerdata/throttlerdata.pb.go
@@ -1,11 +1,14 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: throttlerdata.proto
package throttlerdata
import (
+ encoding_binary "encoding/binary"
fmt "fmt"
+ io "io"
math "math"
+ math_bits "math/bits"
proto "github.com/golang/protobuf/proto"
)
@@ -34,18 +37,26 @@ func (*MaxRatesRequest) ProtoMessage() {}
func (*MaxRatesRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_b67db2b008a2453d, []int{0}
}
-
func (m *MaxRatesRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_MaxRatesRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *MaxRatesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_MaxRatesRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_MaxRatesRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *MaxRatesRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_MaxRatesRequest.Merge(m, src)
}
func (m *MaxRatesRequest) XXX_Size() int {
- return xxx_messageInfo_MaxRatesRequest.Size(m)
+ return m.Size()
}
func (m *MaxRatesRequest) XXX_DiscardUnknown() {
xxx_messageInfo_MaxRatesRequest.DiscardUnknown(m)
@@ -69,18 +80,26 @@ func (*MaxRatesResponse) ProtoMessage() {}
func (*MaxRatesResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_b67db2b008a2453d, []int{1}
}
-
func (m *MaxRatesResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_MaxRatesResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *MaxRatesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_MaxRatesResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_MaxRatesResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *MaxRatesResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_MaxRatesResponse.Merge(m, src)
}
func (m *MaxRatesResponse) XXX_Size() int {
- return xxx_messageInfo_MaxRatesResponse.Size(m)
+ return m.Size()
}
func (m *MaxRatesResponse) XXX_DiscardUnknown() {
xxx_messageInfo_MaxRatesResponse.DiscardUnknown(m)
@@ -109,18 +128,26 @@ func (*SetMaxRateRequest) ProtoMessage() {}
func (*SetMaxRateRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_b67db2b008a2453d, []int{2}
}
-
func (m *SetMaxRateRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_SetMaxRateRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *SetMaxRateRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_SetMaxRateRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_SetMaxRateRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *SetMaxRateRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_SetMaxRateRequest.Merge(m, src)
}
func (m *SetMaxRateRequest) XXX_Size() int {
- return xxx_messageInfo_SetMaxRateRequest.Size(m)
+ return m.Size()
}
func (m *SetMaxRateRequest) XXX_DiscardUnknown() {
xxx_messageInfo_SetMaxRateRequest.DiscardUnknown(m)
@@ -150,18 +177,26 @@ func (*SetMaxRateResponse) ProtoMessage() {}
func (*SetMaxRateResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_b67db2b008a2453d, []int{3}
}
-
func (m *SetMaxRateResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_SetMaxRateResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *SetMaxRateResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_SetMaxRateResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_SetMaxRateResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *SetMaxRateResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_SetMaxRateResponse.Merge(m, src)
}
func (m *SetMaxRateResponse) XXX_Size() int {
- return xxx_messageInfo_SetMaxRateResponse.Size(m)
+ return m.Size()
}
func (m *SetMaxRateResponse) XXX_DiscardUnknown() {
xxx_messageInfo_SetMaxRateResponse.DiscardUnknown(m)
@@ -268,18 +303,26 @@ func (*Configuration) ProtoMessage() {}
func (*Configuration) Descriptor() ([]byte, []int) {
return fileDescriptor_b67db2b008a2453d, []int{4}
}
-
func (m *Configuration) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Configuration.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Configuration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Configuration.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Configuration.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Configuration) XXX_Merge(src proto.Message) {
xxx_messageInfo_Configuration.Merge(m, src)
}
func (m *Configuration) XXX_Size() int {
- return xxx_messageInfo_Configuration.Size(m)
+ return m.Size()
}
func (m *Configuration) XXX_DiscardUnknown() {
xxx_messageInfo_Configuration.DiscardUnknown(m)
@@ -401,18 +444,26 @@ func (*GetConfigurationRequest) ProtoMessage() {}
func (*GetConfigurationRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_b67db2b008a2453d, []int{5}
}
-
func (m *GetConfigurationRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_GetConfigurationRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *GetConfigurationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_GetConfigurationRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_GetConfigurationRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *GetConfigurationRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetConfigurationRequest.Merge(m, src)
}
func (m *GetConfigurationRequest) XXX_Size() int {
- return xxx_messageInfo_GetConfigurationRequest.Size(m)
+ return m.Size()
}
func (m *GetConfigurationRequest) XXX_DiscardUnknown() {
xxx_messageInfo_GetConfigurationRequest.DiscardUnknown(m)
@@ -443,18 +494,26 @@ func (*GetConfigurationResponse) ProtoMessage() {}
func (*GetConfigurationResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_b67db2b008a2453d, []int{6}
}
-
func (m *GetConfigurationResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_GetConfigurationResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *GetConfigurationResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_GetConfigurationResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_GetConfigurationResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *GetConfigurationResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetConfigurationResponse.Merge(m, src)
}
func (m *GetConfigurationResponse) XXX_Size() int {
- return xxx_messageInfo_GetConfigurationResponse.Size(m)
+ return m.Size()
}
func (m *GetConfigurationResponse) XXX_DiscardUnknown() {
xxx_messageInfo_GetConfigurationResponse.DiscardUnknown(m)
@@ -490,18 +549,26 @@ func (*UpdateConfigurationRequest) ProtoMessage() {}
func (*UpdateConfigurationRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_b67db2b008a2453d, []int{7}
}
-
func (m *UpdateConfigurationRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_UpdateConfigurationRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *UpdateConfigurationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_UpdateConfigurationRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_UpdateConfigurationRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *UpdateConfigurationRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_UpdateConfigurationRequest.Merge(m, src)
}
func (m *UpdateConfigurationRequest) XXX_Size() int {
- return xxx_messageInfo_UpdateConfigurationRequest.Size(m)
+ return m.Size()
}
func (m *UpdateConfigurationRequest) XXX_DiscardUnknown() {
xxx_messageInfo_UpdateConfigurationRequest.DiscardUnknown(m)
@@ -545,18 +612,26 @@ func (*UpdateConfigurationResponse) ProtoMessage() {}
func (*UpdateConfigurationResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_b67db2b008a2453d, []int{8}
}
-
func (m *UpdateConfigurationResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_UpdateConfigurationResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *UpdateConfigurationResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_UpdateConfigurationResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_UpdateConfigurationResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *UpdateConfigurationResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_UpdateConfigurationResponse.Merge(m, src)
}
func (m *UpdateConfigurationResponse) XXX_Size() int {
- return xxx_messageInfo_UpdateConfigurationResponse.Size(m)
+ return m.Size()
}
func (m *UpdateConfigurationResponse) XXX_DiscardUnknown() {
xxx_messageInfo_UpdateConfigurationResponse.DiscardUnknown(m)
@@ -587,18 +662,26 @@ func (*ResetConfigurationRequest) ProtoMessage() {}
func (*ResetConfigurationRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_b67db2b008a2453d, []int{9}
}
-
func (m *ResetConfigurationRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ResetConfigurationRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ResetConfigurationRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ResetConfigurationRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ResetConfigurationRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ResetConfigurationRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ResetConfigurationRequest.Merge(m, src)
}
func (m *ResetConfigurationRequest) XXX_Size() int {
- return xxx_messageInfo_ResetConfigurationRequest.Size(m)
+ return m.Size()
}
func (m *ResetConfigurationRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ResetConfigurationRequest.DiscardUnknown(m)
@@ -628,18 +711,26 @@ func (*ResetConfigurationResponse) ProtoMessage() {}
func (*ResetConfigurationResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_b67db2b008a2453d, []int{10}
}
-
func (m *ResetConfigurationResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ResetConfigurationResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ResetConfigurationResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ResetConfigurationResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ResetConfigurationResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ResetConfigurationResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ResetConfigurationResponse.Merge(m, src)
}
func (m *ResetConfigurationResponse) XXX_Size() int {
- return xxx_messageInfo_ResetConfigurationResponse.Size(m)
+ return m.Size()
}
func (m *ResetConfigurationResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ResetConfigurationResponse.DiscardUnknown(m)
@@ -673,51 +764,2216 @@ func init() {
func init() { proto.RegisterFile("throttlerdata.proto", fileDescriptor_b67db2b008a2453d) }
var fileDescriptor_b67db2b008a2453d = []byte{
- // 734 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x55, 0x5f, 0x4f, 0x03, 0x45,
- 0x10, 0xcf, 0x51, 0x8a, 0x30, 0xa5, 0x40, 0x17, 0x84, 0xa3, 0x18, 0x53, 0x2f, 0x31, 0x36, 0x8d,
- 0xb6, 0x49, 0x89, 0x11, 0x25, 0x26, 0x50, 0x31, 0x46, 0xa3, 0x3c, 0x1c, 0xea, 0x03, 0x2f, 0x9b,
- 0xed, 0xdd, 0x70, 0xbd, 0x70, 0x77, 0x7b, 0xee, 0x2e, 0xd0, 0xfa, 0x21, 0xfc, 0x20, 0xbe, 0xf9,
- 0x8d, 0xfc, 0x28, 0xe6, 0x76, 0xb7, 0x7f, 0xae, 0x14, 0x30, 0xe1, 0x6d, 0x77, 0xe6, 0x37, 0xbf,
- 0xf9, 0xcd, 0xde, 0xcc, 0x1c, 0xec, 0xab, 0x91, 0xe0, 0x4a, 0x25, 0x28, 0x42, 0xa6, 0x58, 0x37,
- 0x17, 0x5c, 0x71, 0x52, 0x2f, 0x19, 0xbd, 0x06, 0xec, 0xfe, 0xc2, 0xc6, 0x3e, 0x53, 0x28, 0x7d,
- 0xfc, 0xe3, 0x01, 0xa5, 0xf2, 0xfe, 0x72, 0x60, 0x6f, 0x6e, 0x93, 0x39, 0xcf, 0x24, 0x92, 0x0b,
- 0xa8, 0x8a, 0xc2, 0xe0, 0x3a, 0xad, 0x4a, 0xbb, 0xd6, 0xef, 0x74, 0xcb, 0xdc, 0xcb, 0xf8, 0xae,
- 0xbe, 0x7d, 0x9f, 0x29, 0x31, 0xf1, 0x4d, 0x60, 0xf3, 0x0c, 0x60, 0x6e, 0x24, 0x7b, 0x50, 0xb9,
- 0xc7, 0x89, 0xeb, 0xb4, 0x9c, 0xf6, 0x96, 0x5f, 0x1c, 0xc9, 0x01, 0x54, 0x1f, 0x59, 0xf2, 0x80,
- 0xee, 0x5a, 0xcb, 0x69, 0x57, 0x7c, 0x73, 0xf9, 0x66, 0xed, 0xcc, 0xf1, 0x3e, 0x83, 0xc6, 0x0d,
- 0x2a, 0x9b, 0xc2, 0xaa, 0x24, 0x04, 0xd6, 0x0b, 0x5e, 0xcd, 0x50, 0xf1, 0xf5, 0xd9, 0xeb, 0x00,
- 0x59, 0x04, 0x5a, 0xe9, 0x07, 0x50, 0xcd, 0x58, 0x6a, 0xa5, 0x6f, 0xf9, 0xe6, 0xe2, 0xfd, 0xbd,
- 0x01, 0xf5, 0xef, 0x78, 0x76, 0x17, 0x47, 0x0f, 0x82, 0xa9, 0x98, 0x67, 0xe4, 0x1c, 0x9a, 0x8a,
- 0x89, 0x08, 0x15, 0x15, 0x98, 0x27, 0x71, 0xa0, 0xad, 0x34, 0x61, 0x11, 0x95, 0x18, 0xd8, 0x3c,
- 0x47, 0x06, 0xe1, 0xcf, 0x01, 0x3f, 0xb3, 0xe8, 0x06, 0x03, 0xf2, 0x25, 0x1c, 0xa5, 0x6c, 0xbc,
- 0x32, 0xd2, 0xd4, 0x73, 0x90, 0xb2, 0xf1, 0xf3, 0xb0, 0x4f, 0x60, 0x3b, 0xce, 0x62, 0x15, 0xb3,
- 0x84, 0xea, 0x6a, 0x2a, 0x1a, 0x5b, 0xb3, 0xb6, 0xa2, 0x8c, 0x02, 0x52, 0x30, 0xc7, 0x59, 0x20,
- 0x90, 0x49, 0x74, 0xd7, 0x5b, 0x4e, 0xdb, 0xf1, 0x6b, 0x29, 0x1b, 0xff, 0x68, 0x4d, 0xe4, 0x0b,
- 0x20, 0x98, 0xa2, 0x88, 0x30, 0x0b, 0x26, 0x34, 0x44, 0x0b, 0xac, 0x6a, 0x60, 0x63, 0xe6, 0xb9,
- 0xb2, 0x0e, 0xf2, 0x13, 0x78, 0x69, 0x9c, 0xd1, 0xd0, 0x16, 0x4e, 0x87, 0xa8, 0x9e, 0x10, 0xb3,
- 0x59, 0x0a, 0xa9, 0x65, 0x6f, 0x68, 0x29, 0x1f, 0xa7, 0x71, 0x76, 0x65, 0x81, 0x03, 0x83, 0x9b,
- 0xa6, 0x95, 0x45, 0x01, 0x05, 0x17, 0x1b, 0xbf, 0xc5, 0xf5, 0x81, 0xe5, 0x62, 0xe3, 0xb7, 0xb8,
- 0x56, 0xe9, 0x9a, 0x56, 0x64, 0xb8, 0x36, 0x5f, 0xd2, 0x35, 0xad, 0x4f, 0x73, 0x7d, 0x0d, 0xc7,
- 0x32, 0x17, 0xc8, 0x42, 0x3a, 0x64, 0xc1, 0x7d, 0xc2, 0x23, 0xca, 0x02, 0xc1, 0xa5, 0xa1, 0xd8,
- 0xd2, 0x14, 0x87, 0x06, 0x30, 0x30, 0xfe, 0x4b, 0xed, 0xb6, 0xa1, 0x71, 0x94, 0x71, 0x81, 0x34,
- 0xa3, 0x32, 0xe1, 0x4f, 0x28, 0x67, 0x1d, 0x21, 0x5d, 0x68, 0x39, 0xed, 0xaa, 0x7f, 0x68, 0x00,
- 0xd7, 0x37, 0xc6, 0x6d, 0xbf, 0xab, 0x24, 0x5f, 0x81, 0xfb, 0x3c, 0x34, 0xe4, 0x59, 0x32, 0x91,
- 0x6e, 0x4d, 0x47, 0x7e, 0xb8, 0x14, 0x69, 0x9c, 0xa4, 0x0f, 0x87, 0x2c, 0x42, 0x3a, 0x64, 0xa1,
- 0xee, 0x03, 0xca, 0xee, 0x14, 0x0a, 0xad, 0x75, 0x5b, 0x6b, 0x25, 0x2c, 0xc2, 0x01, 0x0b, 0x8b,
- 0x86, 0xb8, 0x2c, 0x5c, 0x85, 0xce, 0x0e, 0x34, 0x66, 0xf8, 0x59, 0x77, 0xd4, 0xf5, 0x47, 0xdf,
- 0x1d, 0x1a, 0xec, 0xac, 0x43, 0xbe, 0x85, 0x13, 0xdd, 0x9e, 0x9a, 0x3b, 0xcf, 0x05, 0x67, 0xc1,
- 0x88, 0xaa, 0x91, 0x40, 0x39, 0xe2, 0x49, 0xe8, 0xee, 0xe8, 0x28, 0x37, 0x35, 0x93, 0x73, 0x69,
- 0x01, 0xbf, 0x4e, 0xfd, 0xde, 0x05, 0x1c, 0xfd, 0x80, 0xaa, 0x34, 0x2e, 0xd3, 0x39, 0xfc, 0x14,
- 0x76, 0x66, 0xab, 0x80, 0x16, 0xa3, 0x65, 0x67, 0x7a, 0xbe, 0x67, 0xae, 0x59, 0x8a, 0xde, 0xbf,
- 0x0e, 0xb8, 0xcf, 0x29, 0xec, 0x84, 0x06, 0xb0, 0x13, 0x2c, 0x3a, 0xa6, 0x5b, 0xe6, 0x7c, 0x69,
- 0xcb, 0xbc, 0x44, 0xd0, 0x2d, 0x59, 0xed, 0xda, 0x59, 0xa2, 0x6c, 0x52, 0xd8, 0x5f, 0x01, 0x5b,
- 0xb1, 0x88, 0xfa, 0x8b, 0x8b, 0xa8, 0xd6, 0xff, 0x68, 0x49, 0x44, 0x59, 0xc1, 0xc2, 0x9a, 0xfa,
- 0xc7, 0x81, 0xe6, 0x6f, 0x79, 0xc8, 0x14, 0xbe, 0xe3, 0xa1, 0xc8, 0x00, 0xea, 0x25, 0xe1, 0xff,
- 0x4b, 0x45, 0x39, 0x84, 0xb4, 0x61, 0x2f, 0xe0, 0xf9, 0x84, 0xfe, 0x89, 0x82, 0x53, 0x2d, 0x50,
- 0xea, 0xcd, 0xb2, 0x59, 0x3c, 0x4a, 0x3e, 0xb9, 0x45, 0xc1, 0x7f, 0xd7, 0x56, 0xef, 0x14, 0x4e,
- 0x56, 0x4a, 0x7e, 0x75, 0x75, 0x0e, 0xe0, 0xd8, 0x47, 0xf9, 0xbe, 0x7e, 0xe8, 0x43, 0x73, 0x15,
- 0xc7, 0x6b, 0x79, 0x07, 0x9f, 0xdf, 0x76, 0x1e, 0x63, 0x85, 0x52, 0x76, 0x63, 0xde, 0x33, 0xa7,
- 0x5e, 0xc4, 0x7b, 0x8f, 0xaa, 0xa7, 0x7f, 0x6d, 0xbd, 0xd2, 0x0b, 0x0d, 0x37, 0xb4, 0xf1, 0xf4,
- 0xbf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x6c, 0xe5, 0x12, 0x96, 0x06, 0x07, 0x00, 0x00,
+ // 761 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x55, 0x5f, 0x6f, 0xe3, 0x44,
+ 0x10, 0xc7, 0x97, 0x4b, 0xb9, 0x4e, 0x2e, 0xbd, 0x66, 0xaf, 0xb4, 0xbe, 0x1c, 0x8a, 0x82, 0x25,
+ 0x44, 0x14, 0x89, 0x44, 0xca, 0x09, 0x71, 0x50, 0x90, 0xda, 0x50, 0x84, 0x40, 0xd0, 0x07, 0x17,
+ 0x78, 0xe8, 0xcb, 0x6a, 0x63, 0x4f, 0x1d, 0xab, 0xb6, 0xd7, 0xec, 0x6e, 0xdb, 0x84, 0x0f, 0xc1,
+ 0x33, 0x9f, 0x81, 0x37, 0xbe, 0x05, 0x8f, 0x7c, 0x84, 0xaa, 0x7c, 0x11, 0xe4, 0xdd, 0xcd, 0x1f,
+ 0xa7, 0x69, 0x7b, 0x52, 0xdf, 0x76, 0x67, 0x7e, 0xf3, 0x9b, 0xdf, 0xac, 0x67, 0xc6, 0xf0, 0x52,
+ 0x8d, 0x05, 0x57, 0x2a, 0x41, 0x11, 0x32, 0xc5, 0x7a, 0xb9, 0xe0, 0x8a, 0x93, 0x7a, 0xc9, 0xe8,
+ 0x35, 0xe0, 0xc5, 0x4f, 0x6c, 0xe2, 0x33, 0x85, 0xd2, 0xc7, 0xdf, 0x2e, 0x50, 0x2a, 0xef, 0x0f,
+ 0x07, 0xb6, 0x17, 0x36, 0x99, 0xf3, 0x4c, 0x22, 0x39, 0x80, 0xaa, 0x28, 0x0c, 0xae, 0xd3, 0xae,
+ 0x74, 0x6a, 0x83, 0x6e, 0xaf, 0xcc, 0xbd, 0x8a, 0xef, 0xe9, 0xdb, 0xb7, 0x99, 0x12, 0x53, 0xdf,
+ 0x04, 0x36, 0xdf, 0x02, 0x2c, 0x8c, 0x64, 0x1b, 0x2a, 0xe7, 0x38, 0x75, 0x9d, 0xb6, 0xd3, 0xd9,
+ 0xf4, 0x8b, 0x23, 0xd9, 0x81, 0xea, 0x25, 0x4b, 0x2e, 0xd0, 0x7d, 0xd2, 0x76, 0x3a, 0x15, 0xdf,
+ 0x5c, 0xbe, 0x7c, 0xf2, 0xd6, 0xf1, 0x3e, 0x81, 0xc6, 0x09, 0x2a, 0x9b, 0xc2, 0xaa, 0x24, 0x04,
+ 0x9e, 0x16, 0xbc, 0x9a, 0xa1, 0xe2, 0xeb, 0xb3, 0xd7, 0x05, 0xb2, 0x0c, 0xb4, 0xd2, 0x77, 0xa0,
+ 0x9a, 0xb1, 0xd4, 0x4a, 0xdf, 0xf4, 0xcd, 0xc5, 0xfb, 0x6b, 0x03, 0xea, 0xdf, 0xf0, 0xec, 0x2c,
+ 0x8e, 0x2e, 0x04, 0x53, 0x31, 0xcf, 0xc8, 0x3e, 0x34, 0x15, 0x13, 0x11, 0x2a, 0x2a, 0x30, 0x4f,
+ 0xe2, 0x40, 0x5b, 0x69, 0xc2, 0x22, 0x2a, 0x31, 0xb0, 0x79, 0xf6, 0x0c, 0xc2, 0x5f, 0x00, 0x7e,
+ 0x64, 0xd1, 0x09, 0x06, 0xe4, 0x33, 0xd8, 0x4b, 0xd9, 0x64, 0x6d, 0xa4, 0xa9, 0x67, 0x27, 0x65,
+ 0x93, 0xdb, 0x61, 0x1f, 0xc1, 0xf3, 0x38, 0x8b, 0x55, 0xcc, 0x12, 0xaa, 0xab, 0xa9, 0x68, 0x6c,
+ 0xcd, 0xda, 0x8a, 0x32, 0x0a, 0x48, 0xc1, 0x1c, 0x67, 0x81, 0x40, 0x26, 0xd1, 0x7d, 0xda, 0x76,
+ 0x3a, 0x8e, 0x5f, 0x4b, 0xd9, 0xe4, 0x7b, 0x6b, 0x22, 0x9f, 0x02, 0xc1, 0x14, 0x45, 0x84, 0x59,
+ 0x30, 0xa5, 0x21, 0x5a, 0x60, 0x55, 0x03, 0x1b, 0x73, 0xcf, 0x91, 0x75, 0x90, 0x1f, 0xc0, 0x4b,
+ 0xe3, 0x8c, 0x86, 0xb6, 0x70, 0x3a, 0x42, 0x75, 0x85, 0x98, 0xcd, 0x53, 0x48, 0x2d, 0x7b, 0x43,
+ 0x4b, 0x69, 0xa5, 0x71, 0x76, 0x64, 0x81, 0x43, 0x83, 0x9b, 0xa5, 0x95, 0x45, 0x01, 0x05, 0x17,
+ 0x9b, 0x3c, 0xc4, 0xf5, 0xbe, 0xe5, 0x62, 0x93, 0x87, 0xb8, 0xd6, 0xe9, 0x9a, 0x55, 0x64, 0xb8,
+ 0x9e, 0xdd, 0xa5, 0x6b, 0x56, 0x9f, 0xe6, 0xfa, 0x02, 0x5e, 0xc9, 0x5c, 0x20, 0x0b, 0xe9, 0x88,
+ 0x05, 0xe7, 0x09, 0x8f, 0x28, 0x0b, 0x04, 0x97, 0x86, 0x62, 0x53, 0x53, 0xec, 0x1a, 0xc0, 0xd0,
+ 0xf8, 0x0f, 0xb5, 0xdb, 0x86, 0xc6, 0x51, 0xc6, 0x05, 0xd2, 0x8c, 0xca, 0x84, 0x5f, 0xa1, 0x9c,
+ 0x77, 0x84, 0x74, 0xa1, 0xed, 0x74, 0xaa, 0xfe, 0xae, 0x01, 0x1c, 0x9f, 0x18, 0xb7, 0xfd, 0xae,
+ 0x92, 0x7c, 0x0e, 0xee, 0xed, 0xd0, 0x90, 0x67, 0xc9, 0x54, 0xba, 0x35, 0x1d, 0xf9, 0xc1, 0x4a,
+ 0xa4, 0x71, 0x92, 0x01, 0xec, 0xb2, 0x08, 0xe9, 0x88, 0x85, 0xba, 0x0f, 0x28, 0x3b, 0x53, 0x28,
+ 0xb4, 0xd6, 0xe7, 0x5a, 0x2b, 0x61, 0x11, 0x0e, 0x59, 0x58, 0x34, 0xc4, 0x61, 0xe1, 0x2a, 0x74,
+ 0x76, 0xa1, 0x31, 0xc7, 0xcf, 0xbb, 0xa3, 0xae, 0x3f, 0xfa, 0x8b, 0x91, 0xc1, 0xce, 0x3b, 0xe4,
+ 0x6b, 0x78, 0xad, 0xdb, 0x53, 0x73, 0xe7, 0xb9, 0xe0, 0x2c, 0x18, 0x53, 0x35, 0x16, 0x28, 0xc7,
+ 0x3c, 0x09, 0xdd, 0x2d, 0x1d, 0xe5, 0xa6, 0x66, 0x72, 0x0e, 0x2d, 0xe0, 0xe7, 0x99, 0xdf, 0x3b,
+ 0x80, 0xbd, 0xef, 0x50, 0x95, 0xc6, 0x65, 0x36, 0x87, 0x1f, 0xc3, 0xd6, 0x7c, 0x15, 0xd0, 0x62,
+ 0xb4, 0xec, 0x4c, 0x2f, 0xf6, 0xcc, 0x31, 0x4b, 0xd1, 0xbb, 0x76, 0xc0, 0xbd, 0x4d, 0x61, 0x27,
+ 0x34, 0x80, 0xad, 0x60, 0xd9, 0x31, 0xdb, 0x32, 0xfb, 0x2b, 0x5b, 0xe6, 0x2e, 0x82, 0x5e, 0xc9,
+ 0x6a, 0xd7, 0xce, 0x0a, 0x65, 0x93, 0xc2, 0xcb, 0x35, 0xb0, 0x35, 0x8b, 0x68, 0xb0, 0xbc, 0x88,
+ 0x6a, 0x83, 0x0f, 0x57, 0x44, 0x94, 0x15, 0x2c, 0xad, 0xa9, 0xbf, 0x1d, 0x68, 0xfe, 0x92, 0x87,
+ 0x4c, 0xe1, 0x23, 0x1e, 0x8a, 0x0c, 0xa1, 0x5e, 0x12, 0xfe, 0x4e, 0x2a, 0xca, 0x21, 0xa4, 0x03,
+ 0xdb, 0x01, 0xcf, 0xa7, 0xf4, 0x77, 0x14, 0x9c, 0x6a, 0x81, 0x52, 0x6f, 0x96, 0x67, 0xc5, 0xa3,
+ 0xe4, 0xd3, 0x53, 0x14, 0xfc, 0x57, 0x6d, 0xf5, 0xde, 0xc0, 0xeb, 0xb5, 0x92, 0xef, 0x5d, 0x9d,
+ 0x43, 0x78, 0xe5, 0xa3, 0x7c, 0x5c, 0x3f, 0x0c, 0xa0, 0xb9, 0x8e, 0xe3, 0xbe, 0xbc, 0xc3, 0xaf,
+ 0xfe, 0xb9, 0x69, 0x39, 0xff, 0xde, 0xb4, 0x9c, 0xeb, 0x9b, 0x96, 0xf3, 0xe7, 0x7f, 0xad, 0xf7,
+ 0x4e, 0xbb, 0x97, 0xb1, 0x42, 0x29, 0x7b, 0x31, 0xef, 0x9b, 0x53, 0x3f, 0xe2, 0xfd, 0x4b, 0xd5,
+ 0xd7, 0xbf, 0xba, 0x7e, 0xe9, 0xc5, 0x46, 0x1b, 0xda, 0xf8, 0xe6, 0xff, 0x00, 0x00, 0x00, 0xff,
+ 0xff, 0x85, 0x05, 0xbd, 0x73, 0x16, 0x07, 0x00, 0x00,
+}
+
+func (m *MaxRatesRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MaxRatesRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *MaxRatesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MaxRatesResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MaxRatesResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *MaxRatesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Rates) > 0 {
+ for k := range m.Rates {
+ v := m.Rates[k]
+ baseI := i
+ i = encodeVarintThrottlerdata(dAtA, i, uint64(v))
+ i--
+ dAtA[i] = 0x10
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintThrottlerdata(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintThrottlerdata(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *SetMaxRateRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SetMaxRateRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *SetMaxRateRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Rate != 0 {
+ i = encodeVarintThrottlerdata(dAtA, i, uint64(m.Rate))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *SetMaxRateResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SetMaxRateResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *SetMaxRateResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Names) > 0 {
+ for iNdEx := len(m.Names) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Names[iNdEx])
+ copy(dAtA[i:], m.Names[iNdEx])
+ i = encodeVarintThrottlerdata(dAtA, i, uint64(len(m.Names[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Configuration) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Configuration) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Configuration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.MaxRateApproachThreshold != 0 {
+ i -= 8
+ encoding_binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.MaxRateApproachThreshold))))
+ i--
+ dAtA[i] = 0x71
+ }
+ if m.BadRateIncrease != 0 {
+ i -= 8
+ encoding_binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.BadRateIncrease))))
+ i--
+ dAtA[i] = 0x69
+ }
+ if m.AgeBadRateAfterSec != 0 {
+ i = encodeVarintThrottlerdata(dAtA, i, uint64(m.AgeBadRateAfterSec))
+ i--
+ dAtA[i] = 0x60
+ }
+ if m.IgnoreNSlowestRdonlys != 0 {
+ i = encodeVarintThrottlerdata(dAtA, i, uint64(m.IgnoreNSlowestRdonlys))
+ i--
+ dAtA[i] = 0x58
+ }
+ if m.IgnoreNSlowestReplicas != 0 {
+ i = encodeVarintThrottlerdata(dAtA, i, uint64(m.IgnoreNSlowestReplicas))
+ i--
+ dAtA[i] = 0x50
+ }
+ if m.SpreadBacklogAcrossSec != 0 {
+ i = encodeVarintThrottlerdata(dAtA, i, uint64(m.SpreadBacklogAcrossSec))
+ i--
+ dAtA[i] = 0x48
+ }
+ if m.MinDurationBetweenDecreasesSec != 0 {
+ i = encodeVarintThrottlerdata(dAtA, i, uint64(m.MinDurationBetweenDecreasesSec))
+ i--
+ dAtA[i] = 0x40
+ }
+ if m.MaxDurationBetweenIncreasesSec != 0 {
+ i = encodeVarintThrottlerdata(dAtA, i, uint64(m.MaxDurationBetweenIncreasesSec))
+ i--
+ dAtA[i] = 0x38
+ }
+ if m.MinDurationBetweenIncreasesSec != 0 {
+ i = encodeVarintThrottlerdata(dAtA, i, uint64(m.MinDurationBetweenIncreasesSec))
+ i--
+ dAtA[i] = 0x30
+ }
+ if m.EmergencyDecrease != 0 {
+ i -= 8
+ encoding_binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.EmergencyDecrease))))
+ i--
+ dAtA[i] = 0x29
+ }
+ if m.MaxIncrease != 0 {
+ i -= 8
+ encoding_binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.MaxIncrease))))
+ i--
+ dAtA[i] = 0x21
+ }
+ if m.InitialRate != 0 {
+ i = encodeVarintThrottlerdata(dAtA, i, uint64(m.InitialRate))
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.MaxReplicationLagSec != 0 {
+ i = encodeVarintThrottlerdata(dAtA, i, uint64(m.MaxReplicationLagSec))
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.TargetReplicationLagSec != 0 {
+ i = encodeVarintThrottlerdata(dAtA, i, uint64(m.TargetReplicationLagSec))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetConfigurationRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetConfigurationRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetConfigurationRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.ThrottlerName) > 0 {
+ i -= len(m.ThrottlerName)
+ copy(dAtA[i:], m.ThrottlerName)
+ i = encodeVarintThrottlerdata(dAtA, i, uint64(len(m.ThrottlerName)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetConfigurationResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetConfigurationResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetConfigurationResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Configurations) > 0 {
+ for k := range m.Configurations {
+ v := m.Configurations[k]
+ baseI := i
+ if v != nil {
+ {
+ size, err := v.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintThrottlerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintThrottlerdata(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintThrottlerdata(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *UpdateConfigurationRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *UpdateConfigurationRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *UpdateConfigurationRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.CopyZeroValues {
+ i--
+ if m.CopyZeroValues {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.Configuration != nil {
+ {
+ size, err := m.Configuration.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintThrottlerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.ThrottlerName) > 0 {
+ i -= len(m.ThrottlerName)
+ copy(dAtA[i:], m.ThrottlerName)
+ i = encodeVarintThrottlerdata(dAtA, i, uint64(len(m.ThrottlerName)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *UpdateConfigurationResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *UpdateConfigurationResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *UpdateConfigurationResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Names) > 0 {
+ for iNdEx := len(m.Names) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Names[iNdEx])
+ copy(dAtA[i:], m.Names[iNdEx])
+ i = encodeVarintThrottlerdata(dAtA, i, uint64(len(m.Names[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ResetConfigurationRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ResetConfigurationRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ResetConfigurationRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.ThrottlerName) > 0 {
+ i -= len(m.ThrottlerName)
+ copy(dAtA[i:], m.ThrottlerName)
+ i = encodeVarintThrottlerdata(dAtA, i, uint64(len(m.ThrottlerName)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ResetConfigurationResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ResetConfigurationResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ResetConfigurationResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Names) > 0 {
+ for iNdEx := len(m.Names) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Names[iNdEx])
+ copy(dAtA[i:], m.Names[iNdEx])
+ i = encodeVarintThrottlerdata(dAtA, i, uint64(len(m.Names[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func encodeVarintThrottlerdata(dAtA []byte, offset int, v uint64) int {
+ offset -= sovThrottlerdata(v)
+ base := offset
+ for v >= 1<<7 {
+ dAtA[offset] = uint8(v&0x7f | 0x80)
+ v >>= 7
+ offset++
+ }
+ dAtA[offset] = uint8(v)
+ return base
+}
+func (m *MaxRatesRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *MaxRatesResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Rates) > 0 {
+ for k, v := range m.Rates {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovThrottlerdata(uint64(len(k))) + 1 + sovThrottlerdata(uint64(v))
+ n += mapEntrySize + 1 + sovThrottlerdata(uint64(mapEntrySize))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *SetMaxRateRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Rate != 0 {
+ n += 1 + sovThrottlerdata(uint64(m.Rate))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *SetMaxRateResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Names) > 0 {
+ for _, s := range m.Names {
+ l = len(s)
+ n += 1 + l + sovThrottlerdata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Configuration) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.TargetReplicationLagSec != 0 {
+ n += 1 + sovThrottlerdata(uint64(m.TargetReplicationLagSec))
+ }
+ if m.MaxReplicationLagSec != 0 {
+ n += 1 + sovThrottlerdata(uint64(m.MaxReplicationLagSec))
+ }
+ if m.InitialRate != 0 {
+ n += 1 + sovThrottlerdata(uint64(m.InitialRate))
+ }
+ if m.MaxIncrease != 0 {
+ n += 9
+ }
+ if m.EmergencyDecrease != 0 {
+ n += 9
+ }
+ if m.MinDurationBetweenIncreasesSec != 0 {
+ n += 1 + sovThrottlerdata(uint64(m.MinDurationBetweenIncreasesSec))
+ }
+ if m.MaxDurationBetweenIncreasesSec != 0 {
+ n += 1 + sovThrottlerdata(uint64(m.MaxDurationBetweenIncreasesSec))
+ }
+ if m.MinDurationBetweenDecreasesSec != 0 {
+ n += 1 + sovThrottlerdata(uint64(m.MinDurationBetweenDecreasesSec))
+ }
+ if m.SpreadBacklogAcrossSec != 0 {
+ n += 1 + sovThrottlerdata(uint64(m.SpreadBacklogAcrossSec))
+ }
+ if m.IgnoreNSlowestReplicas != 0 {
+ n += 1 + sovThrottlerdata(uint64(m.IgnoreNSlowestReplicas))
+ }
+ if m.IgnoreNSlowestRdonlys != 0 {
+ n += 1 + sovThrottlerdata(uint64(m.IgnoreNSlowestRdonlys))
+ }
+ if m.AgeBadRateAfterSec != 0 {
+ n += 1 + sovThrottlerdata(uint64(m.AgeBadRateAfterSec))
+ }
+ if m.BadRateIncrease != 0 {
+ n += 9
+ }
+ if m.MaxRateApproachThreshold != 0 {
+ n += 9
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
}
+
+func (m *GetConfigurationRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.ThrottlerName)
+ if l > 0 {
+ n += 1 + l + sovThrottlerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetConfigurationResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Configurations) > 0 {
+ for k, v := range m.Configurations {
+ _ = k
+ _ = v
+ l = 0
+ if v != nil {
+ l = v.Size()
+ l += 1 + sovThrottlerdata(uint64(l))
+ }
+ mapEntrySize := 1 + len(k) + sovThrottlerdata(uint64(len(k))) + l
+ n += mapEntrySize + 1 + sovThrottlerdata(uint64(mapEntrySize))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *UpdateConfigurationRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.ThrottlerName)
+ if l > 0 {
+ n += 1 + l + sovThrottlerdata(uint64(l))
+ }
+ if m.Configuration != nil {
+ l = m.Configuration.Size()
+ n += 1 + l + sovThrottlerdata(uint64(l))
+ }
+ if m.CopyZeroValues {
+ n += 2
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *UpdateConfigurationResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Names) > 0 {
+ for _, s := range m.Names {
+ l = len(s)
+ n += 1 + l + sovThrottlerdata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ResetConfigurationRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.ThrottlerName)
+ if l > 0 {
+ n += 1 + l + sovThrottlerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ResetConfigurationResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Names) > 0 {
+ for _, s := range m.Names {
+ l = len(s)
+ n += 1 + l + sovThrottlerdata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func sovThrottlerdata(x uint64) (n int) {
+ return (math_bits.Len64(x|1) + 6) / 7
+}
+func sozThrottlerdata(x uint64) (n int) {
+ return sovThrottlerdata(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+}
+func (m *MaxRatesRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MaxRatesRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MaxRatesRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipThrottlerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MaxRatesResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MaxRatesResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MaxRatesResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Rates", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Rates == nil {
+ m.Rates = make(map[string]int64)
+ }
+ var mapkey string
+ var mapvalue int64
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ mapvalue |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipThrottlerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.Rates[mapkey] = mapvalue
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipThrottlerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *SetMaxRateRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SetMaxRateRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SetMaxRateRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Rate", wireType)
+ }
+ m.Rate = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Rate |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipThrottlerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *SetMaxRateResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SetMaxRateResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SetMaxRateResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Names", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Names = append(m.Names, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipThrottlerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Configuration) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Configuration: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Configuration: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TargetReplicationLagSec", wireType)
+ }
+ m.TargetReplicationLagSec = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TargetReplicationLagSec |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MaxReplicationLagSec", wireType)
+ }
+ m.MaxReplicationLagSec = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.MaxReplicationLagSec |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field InitialRate", wireType)
+ }
+ m.InitialRate = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.InitialRate |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 1 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MaxIncrease", wireType)
+ }
+ var v uint64
+ if (iNdEx + 8) > l {
+ return io.ErrUnexpectedEOF
+ }
+ v = uint64(encoding_binary.LittleEndian.Uint64(dAtA[iNdEx:]))
+ iNdEx += 8
+ m.MaxIncrease = float64(math.Float64frombits(v))
+ case 5:
+ if wireType != 1 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EmergencyDecrease", wireType)
+ }
+ var v uint64
+ if (iNdEx + 8) > l {
+ return io.ErrUnexpectedEOF
+ }
+ v = uint64(encoding_binary.LittleEndian.Uint64(dAtA[iNdEx:]))
+ iNdEx += 8
+ m.EmergencyDecrease = float64(math.Float64frombits(v))
+ case 6:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MinDurationBetweenIncreasesSec", wireType)
+ }
+ m.MinDurationBetweenIncreasesSec = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.MinDurationBetweenIncreasesSec |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 7:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MaxDurationBetweenIncreasesSec", wireType)
+ }
+ m.MaxDurationBetweenIncreasesSec = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.MaxDurationBetweenIncreasesSec |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 8:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MinDurationBetweenDecreasesSec", wireType)
+ }
+ m.MinDurationBetweenDecreasesSec = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.MinDurationBetweenDecreasesSec |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 9:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SpreadBacklogAcrossSec", wireType)
+ }
+ m.SpreadBacklogAcrossSec = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.SpreadBacklogAcrossSec |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 10:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field IgnoreNSlowestReplicas", wireType)
+ }
+ m.IgnoreNSlowestReplicas = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.IgnoreNSlowestReplicas |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 11:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field IgnoreNSlowestRdonlys", wireType)
+ }
+ m.IgnoreNSlowestRdonlys = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.IgnoreNSlowestRdonlys |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 12:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field AgeBadRateAfterSec", wireType)
+ }
+ m.AgeBadRateAfterSec = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.AgeBadRateAfterSec |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 13:
+ if wireType != 1 {
+ return fmt.Errorf("proto: wrong wireType = %d for field BadRateIncrease", wireType)
+ }
+ var v uint64
+ if (iNdEx + 8) > l {
+ return io.ErrUnexpectedEOF
+ }
+ v = uint64(encoding_binary.LittleEndian.Uint64(dAtA[iNdEx:]))
+ iNdEx += 8
+ m.BadRateIncrease = float64(math.Float64frombits(v))
+ case 14:
+ if wireType != 1 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MaxRateApproachThreshold", wireType)
+ }
+ var v uint64
+ if (iNdEx + 8) > l {
+ return io.ErrUnexpectedEOF
+ }
+ v = uint64(encoding_binary.LittleEndian.Uint64(dAtA[iNdEx:]))
+ iNdEx += 8
+ m.MaxRateApproachThreshold = float64(math.Float64frombits(v))
+ default:
+ iNdEx = preIndex
+ skippy, err := skipThrottlerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetConfigurationRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetConfigurationRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetConfigurationRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ThrottlerName", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ThrottlerName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipThrottlerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetConfigurationResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetConfigurationResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetConfigurationResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Configurations", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Configurations == nil {
+ m.Configurations = make(map[string]*Configuration)
+ }
+ var mapkey string
+ var mapvalue *Configuration
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var mapmsglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ mapmsglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if mapmsglen < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ postmsgIndex := iNdEx + mapmsglen
+ if postmsgIndex < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if postmsgIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = &Configuration{}
+ if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
+ return err
+ }
+ iNdEx = postmsgIndex
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipThrottlerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.Configurations[mapkey] = mapvalue
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipThrottlerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *UpdateConfigurationRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: UpdateConfigurationRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: UpdateConfigurationRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ThrottlerName", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ThrottlerName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Configuration", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Configuration == nil {
+ m.Configuration = &Configuration{}
+ }
+ if err := m.Configuration.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CopyZeroValues", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.CopyZeroValues = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipThrottlerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *UpdateConfigurationResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: UpdateConfigurationResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: UpdateConfigurationResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Names", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Names = append(m.Names, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipThrottlerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ResetConfigurationRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ResetConfigurationRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ResetConfigurationRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ThrottlerName", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ThrottlerName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipThrottlerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ResetConfigurationResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ResetConfigurationResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ResetConfigurationResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Names", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Names = append(m.Names, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipThrottlerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthThrottlerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func skipThrottlerdata(dAtA []byte) (n int, err error) {
+ l := len(dAtA)
+ iNdEx := 0
+ depth := 0
+ for iNdEx < l {
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ wireType := int(wire & 0x7)
+ switch wireType {
+ case 0:
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ iNdEx++
+ if dAtA[iNdEx-1] < 0x80 {
+ break
+ }
+ }
+ case 1:
+ iNdEx += 8
+ case 2:
+ var length int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowThrottlerdata
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ length |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if length < 0 {
+ return 0, ErrInvalidLengthThrottlerdata
+ }
+ iNdEx += length
+ case 3:
+ depth++
+ case 4:
+ if depth == 0 {
+ return 0, ErrUnexpectedEndOfGroupThrottlerdata
+ }
+ depth--
+ case 5:
+ iNdEx += 4
+ default:
+ return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
+ }
+ if iNdEx < 0 {
+ return 0, ErrInvalidLengthThrottlerdata
+ }
+ if depth == 0 {
+ return iNdEx, nil
+ }
+ }
+ return 0, io.ErrUnexpectedEOF
+}
+
+var (
+ ErrInvalidLengthThrottlerdata = fmt.Errorf("proto: negative length found during unmarshaling")
+ ErrIntOverflowThrottlerdata = fmt.Errorf("proto: integer overflow")
+ ErrUnexpectedEndOfGroupThrottlerdata = fmt.Errorf("proto: unexpected end of group")
+)
diff --git a/go/vt/proto/throttlerservice/throttlerservice.pb.go b/go/vt/proto/throttlerservice/throttlerservice.pb.go
index 5e0289c73bc..769f7d3c2e1 100644
--- a/go/vt/proto/throttlerservice/throttlerservice.pb.go
+++ b/go/vt/proto/throttlerservice/throttlerservice.pb.go
@@ -1,4 +1,4 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: throttlerservice.proto
package throttlerservice
@@ -12,7 +12,6 @@ import (
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
-
throttlerdata "vitess.io/vitess/go/vt/proto/throttlerdata"
)
@@ -30,23 +29,24 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
func init() { proto.RegisterFile("throttlerservice.proto", fileDescriptor_33af55db6d07f810) }
var fileDescriptor_33af55db6d07f810 = []byte{
- // 241 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x92, 0x3d, 0x4b, 0xc4, 0x40,
- 0x10, 0x86, 0x05, 0x41, 0x74, 0xaa, 0x63, 0x0f, 0x2c, 0xae, 0xf0, 0xab, 0x50, 0x4f, 0x30, 0x0b,
- 0xfa, 0x0f, 0xb4, 0xb0, 0xba, 0x26, 0xa7, 0x8d, 0xdd, 0xea, 0x8d, 0x71, 0x51, 0x76, 0xe2, 0xce,
- 0x24, 0xf8, 0xbf, 0xfd, 0x03, 0x42, 0xe2, 0xae, 0x64, 0xfc, 0xb8, 0x74, 0xe1, 0x7d, 0x9f, 0x7d,
- 0x1f, 0x02, 0x03, 0xbb, 0xf2, 0x1c, 0x49, 0xe4, 0x15, 0x23, 0x63, 0x6c, 0xfd, 0x23, 0x16, 0x75,
- 0x24, 0x21, 0x33, 0xd1, 0xf9, 0x6c, 0x9a, 0x93, 0x95, 0x13, 0xd7, 0x63, 0x17, 0x1f, 0x9b, 0xb0,
- 0x73, 0x9b, 0x72, 0xb3, 0x80, 0xed, 0x85, 0x7b, 0x2f, 0x9d, 0x20, 0x9b, 0xbd, 0x62, 0xc8, 0xa7,
- 0xa2, 0xc4, 0xb7, 0x06, 0x59, 0x66, 0xfb, 0x7f, 0xf6, 0x5c, 0x53, 0x60, 0x3c, 0xda, 0x30, 0x4b,
- 0x80, 0x25, 0xca, 0x57, 0x61, 0x0e, 0xd4, 0x83, 0xef, 0x2a, 0x4d, 0x1e, 0xfe, 0x43, 0xe4, 0x51,
- 0x84, 0xc9, 0x0d, 0xca, 0x35, 0x85, 0x27, 0x5f, 0x35, 0xd1, 0x89, 0xa7, 0x60, 0x8e, 0xd5, 0x43,
- 0x0d, 0x24, 0xc1, 0xc9, 0x5a, 0x2e, 0x6b, 0x02, 0x4c, 0xef, 0xea, 0x95, 0x13, 0x1c, 0x9a, 0xe6,
- 0x6a, 0xe1, 0x17, 0x26, 0xc9, 0xce, 0xc6, 0xa0, 0xd9, 0xf7, 0x02, 0xa6, 0x44, 0xd6, 0x3f, 0x76,
- 0xaa, 0x36, 0x7e, 0x22, 0xc9, 0x36, 0x1f, 0x41, 0x26, 0xd9, 0x95, 0xbd, 0x3f, 0x6f, 0xbd, 0x20,
- 0x73, 0xe1, 0xc9, 0xf6, 0x5f, 0xb6, 0x22, 0xdb, 0x8a, 0xed, 0xae, 0xc2, 0xea, 0xdb, 0x79, 0xd8,
- 0xea, 0xf2, 0xcb, 0xcf, 0x00, 0x00, 0x00, 0xff, 0xff, 0x49, 0x64, 0xc0, 0xd9, 0x6e, 0x02, 0x00,
- 0x00,
+ // 260 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x2b, 0xc9, 0x28, 0xca,
+ 0x2f, 0x29, 0xc9, 0x49, 0x2d, 0x2a, 0x4e, 0x2d, 0x2a, 0xcb, 0x4c, 0x4e, 0xd5, 0x2b, 0x28, 0xca,
+ 0x2f, 0xc9, 0x17, 0x12, 0x40, 0x17, 0x97, 0x12, 0x86, 0x8b, 0xa4, 0x24, 0x96, 0x24, 0x42, 0x94,
+ 0x19, 0x7d, 0x66, 0xe6, 0xe2, 0x0c, 0x81, 0x89, 0x0b, 0xf9, 0x72, 0x71, 0xf8, 0x26, 0x56, 0x04,
+ 0x25, 0x96, 0xa4, 0x16, 0x0b, 0xc9, 0xe9, 0xa1, 0xaa, 0x87, 0x49, 0x04, 0xa5, 0x16, 0x96, 0xa6,
+ 0x16, 0x97, 0x48, 0xc9, 0xe3, 0x94, 0x2f, 0x2e, 0xc8, 0xcf, 0x2b, 0x4e, 0x55, 0x62, 0x10, 0x0a,
+ 0xe6, 0xe2, 0x0a, 0x4e, 0x2d, 0x81, 0x4a, 0x08, 0x29, 0xa0, 0x69, 0x40, 0x48, 0xc1, 0x8c, 0x54,
+ 0xc4, 0xa3, 0x02, 0x6e, 0x68, 0x2a, 0x97, 0x80, 0x7b, 0x6a, 0x89, 0x73, 0x7e, 0x5e, 0x5a, 0x66,
+ 0x7a, 0x69, 0x51, 0x62, 0x49, 0x66, 0x7e, 0x9e, 0x90, 0x1a, 0x9a, 0x46, 0x74, 0x05, 0x30, 0x0b,
+ 0xd4, 0x09, 0xaa, 0x83, 0x5b, 0x93, 0xc7, 0x25, 0x1c, 0x5a, 0x90, 0x92, 0x58, 0x92, 0x8a, 0x6a,
+ 0x93, 0x26, 0x9a, 0x09, 0x58, 0xd4, 0xc0, 0x2c, 0xd3, 0x22, 0x46, 0x29, 0xdc, 0xbe, 0x6c, 0x2e,
+ 0xa1, 0xa0, 0xd4, 0x62, 0x74, 0x8f, 0x69, 0xa0, 0x99, 0x81, 0xa9, 0x04, 0x66, 0x9b, 0x26, 0x11,
+ 0x2a, 0x61, 0x96, 0x39, 0xd9, 0x9f, 0x78, 0x24, 0xc7, 0x78, 0xe1, 0x91, 0x1c, 0xe3, 0x83, 0x47,
+ 0x72, 0x8c, 0x33, 0x1e, 0xcb, 0x31, 0x44, 0xe9, 0x96, 0x65, 0x96, 0xa4, 0x16, 0x17, 0xeb, 0x65,
+ 0xe6, 0xeb, 0x43, 0x58, 0xfa, 0xe9, 0xf9, 0xfa, 0x65, 0x25, 0xfa, 0xe0, 0x54, 0xa2, 0x8f, 0x9e,
+ 0x96, 0x92, 0xd8, 0xc0, 0xe2, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf3, 0x62, 0x05, 0x96,
+ 0x7e, 0x02, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
diff --git a/go/vt/proto/topodata/cached_size.go b/go/vt/proto/topodata/cached_size.go
new file mode 100644
index 00000000000..a473c6f8a4b
--- /dev/null
+++ b/go/vt/proto/topodata/cached_size.go
@@ -0,0 +1,35 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+// Code generated by Sizegen. DO NOT EDIT.
+
+package topodata
+
+func (cached *KeyRange) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(76)
+ }
+ // field Start []byte
+ size += int64(cap(cached.Start))
+ // field End []byte
+ size += int64(cap(cached.End))
+ // field XXX_unrecognized []byte
+ size += int64(cap(cached.XXX_unrecognized))
+ return size
+}
diff --git a/go/vt/proto/topodata/topodata.pb.go b/go/vt/proto/topodata/topodata.pb.go
index 98306ac985e..7f8e815186d 100644
--- a/go/vt/proto/topodata/topodata.pb.go
+++ b/go/vt/proto/topodata/topodata.pb.go
@@ -1,14 +1,15 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: topodata.proto
package topodata
import (
fmt "fmt"
+ io "io"
math "math"
+ math_bits "math/bits"
proto "github.com/golang/protobuf/proto"
-
vttime "vitess.io/vitess/go/vt/proto/vttime"
)
@@ -173,18 +174,26 @@ func (*KeyRange) ProtoMessage() {}
func (*KeyRange) Descriptor() ([]byte, []int) {
return fileDescriptor_52c350cb619f972e, []int{0}
}
-
func (m *KeyRange) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_KeyRange.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *KeyRange) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_KeyRange.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_KeyRange.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *KeyRange) XXX_Merge(src proto.Message) {
xxx_messageInfo_KeyRange.Merge(m, src)
}
func (m *KeyRange) XXX_Size() int {
- return xxx_messageInfo_KeyRange.Size(m)
+ return m.Size()
}
func (m *KeyRange) XXX_DiscardUnknown() {
xxx_messageInfo_KeyRange.DiscardUnknown(m)
@@ -224,18 +233,26 @@ func (*TabletAlias) ProtoMessage() {}
func (*TabletAlias) Descriptor() ([]byte, []int) {
return fileDescriptor_52c350cb619f972e, []int{1}
}
-
func (m *TabletAlias) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_TabletAlias.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *TabletAlias) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_TabletAlias.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_TabletAlias.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *TabletAlias) XXX_Merge(src proto.Message) {
xxx_messageInfo_TabletAlias.Merge(m, src)
}
func (m *TabletAlias) XXX_Size() int {
- return xxx_messageInfo_TabletAlias.Size(m)
+ return m.Size()
}
func (m *TabletAlias) XXX_DiscardUnknown() {
xxx_messageInfo_TabletAlias.DiscardUnknown(m)
@@ -311,18 +328,26 @@ func (*Tablet) ProtoMessage() {}
func (*Tablet) Descriptor() ([]byte, []int) {
return fileDescriptor_52c350cb619f972e, []int{2}
}
-
func (m *Tablet) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Tablet.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Tablet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Tablet.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Tablet.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Tablet) XXX_Merge(src proto.Message) {
xxx_messageInfo_Tablet.Merge(m, src)
}
func (m *Tablet) XXX_Size() int {
- return xxx_messageInfo_Tablet.Size(m)
+ return m.Size()
}
func (m *Tablet) XXX_DiscardUnknown() {
xxx_messageInfo_Tablet.DiscardUnknown(m)
@@ -469,18 +494,26 @@ func (*Shard) ProtoMessage() {}
func (*Shard) Descriptor() ([]byte, []int) {
return fileDescriptor_52c350cb619f972e, []int{3}
}
-
func (m *Shard) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Shard.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Shard) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Shard.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Shard.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Shard) XXX_Merge(src proto.Message) {
xxx_messageInfo_Shard.Merge(m, src)
}
func (m *Shard) XXX_Size() int {
- return xxx_messageInfo_Shard.Size(m)
+ return m.Size()
}
func (m *Shard) XXX_DiscardUnknown() {
xxx_messageInfo_Shard.DiscardUnknown(m)
@@ -552,18 +585,26 @@ func (*Shard_ServedType) ProtoMessage() {}
func (*Shard_ServedType) Descriptor() ([]byte, []int) {
return fileDescriptor_52c350cb619f972e, []int{3, 0}
}
-
func (m *Shard_ServedType) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Shard_ServedType.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Shard_ServedType) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Shard_ServedType.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Shard_ServedType.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Shard_ServedType) XXX_Merge(src proto.Message) {
xxx_messageInfo_Shard_ServedType.Merge(m, src)
}
func (m *Shard_ServedType) XXX_Size() int {
- return xxx_messageInfo_Shard_ServedType.Size(m)
+ return m.Size()
}
func (m *Shard_ServedType) XXX_DiscardUnknown() {
xxx_messageInfo_Shard_ServedType.DiscardUnknown(m)
@@ -610,18 +651,26 @@ func (*Shard_SourceShard) ProtoMessage() {}
func (*Shard_SourceShard) Descriptor() ([]byte, []int) {
return fileDescriptor_52c350cb619f972e, []int{3, 1}
}
-
func (m *Shard_SourceShard) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Shard_SourceShard.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Shard_SourceShard) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Shard_SourceShard.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Shard_SourceShard.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Shard_SourceShard) XXX_Merge(src proto.Message) {
xxx_messageInfo_Shard_SourceShard.Merge(m, src)
}
func (m *Shard_SourceShard) XXX_Size() int {
- return xxx_messageInfo_Shard_SourceShard.Size(m)
+ return m.Size()
}
func (m *Shard_SourceShard) XXX_DiscardUnknown() {
xxx_messageInfo_Shard_SourceShard.DiscardUnknown(m)
@@ -684,18 +733,26 @@ func (*Shard_TabletControl) ProtoMessage() {}
func (*Shard_TabletControl) Descriptor() ([]byte, []int) {
return fileDescriptor_52c350cb619f972e, []int{3, 2}
}
-
func (m *Shard_TabletControl) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Shard_TabletControl.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Shard_TabletControl) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Shard_TabletControl.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Shard_TabletControl.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Shard_TabletControl) XXX_Merge(src proto.Message) {
xxx_messageInfo_Shard_TabletControl.Merge(m, src)
}
func (m *Shard_TabletControl) XXX_Size() int {
- return xxx_messageInfo_Shard_TabletControl.Size(m)
+ return m.Size()
}
func (m *Shard_TabletControl) XXX_DiscardUnknown() {
xxx_messageInfo_Shard_TabletControl.DiscardUnknown(m)
@@ -765,18 +822,26 @@ func (*Keyspace) ProtoMessage() {}
func (*Keyspace) Descriptor() ([]byte, []int) {
return fileDescriptor_52c350cb619f972e, []int{4}
}
-
func (m *Keyspace) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Keyspace.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Keyspace) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Keyspace.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Keyspace.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Keyspace) XXX_Merge(src proto.Message) {
xxx_messageInfo_Keyspace.Merge(m, src)
}
func (m *Keyspace) XXX_Size() int {
- return xxx_messageInfo_Keyspace.Size(m)
+ return m.Size()
}
func (m *Keyspace) XXX_DiscardUnknown() {
xxx_messageInfo_Keyspace.DiscardUnknown(m)
@@ -846,18 +911,26 @@ func (*Keyspace_ServedFrom) ProtoMessage() {}
func (*Keyspace_ServedFrom) Descriptor() ([]byte, []int) {
return fileDescriptor_52c350cb619f972e, []int{4, 0}
}
-
func (m *Keyspace_ServedFrom) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Keyspace_ServedFrom.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Keyspace_ServedFrom) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Keyspace_ServedFrom.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Keyspace_ServedFrom.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Keyspace_ServedFrom) XXX_Merge(src proto.Message) {
xxx_messageInfo_Keyspace_ServedFrom.Merge(m, src)
}
func (m *Keyspace_ServedFrom) XXX_Size() int {
- return xxx_messageInfo_Keyspace_ServedFrom.Size(m)
+ return m.Size()
}
func (m *Keyspace_ServedFrom) XXX_DiscardUnknown() {
xxx_messageInfo_Keyspace_ServedFrom.DiscardUnknown(m)
@@ -903,18 +976,26 @@ func (*ShardReplication) ProtoMessage() {}
func (*ShardReplication) Descriptor() ([]byte, []int) {
return fileDescriptor_52c350cb619f972e, []int{5}
}
-
func (m *ShardReplication) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ShardReplication.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ShardReplication) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ShardReplication.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ShardReplication.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ShardReplication) XXX_Merge(src proto.Message) {
xxx_messageInfo_ShardReplication.Merge(m, src)
}
func (m *ShardReplication) XXX_Size() int {
- return xxx_messageInfo_ShardReplication.Size(m)
+ return m.Size()
}
func (m *ShardReplication) XXX_DiscardUnknown() {
xxx_messageInfo_ShardReplication.DiscardUnknown(m)
@@ -943,18 +1024,26 @@ func (*ShardReplication_Node) ProtoMessage() {}
func (*ShardReplication_Node) Descriptor() ([]byte, []int) {
return fileDescriptor_52c350cb619f972e, []int{5, 0}
}
-
func (m *ShardReplication_Node) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ShardReplication_Node.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ShardReplication_Node) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ShardReplication_Node.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ShardReplication_Node.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ShardReplication_Node) XXX_Merge(src proto.Message) {
xxx_messageInfo_ShardReplication_Node.Merge(m, src)
}
func (m *ShardReplication_Node) XXX_Size() int {
- return xxx_messageInfo_ShardReplication_Node.Size(m)
+ return m.Size()
}
func (m *ShardReplication_Node) XXX_DiscardUnknown() {
xxx_messageInfo_ShardReplication_Node.DiscardUnknown(m)
@@ -985,18 +1074,26 @@ func (*ShardReference) ProtoMessage() {}
func (*ShardReference) Descriptor() ([]byte, []int) {
return fileDescriptor_52c350cb619f972e, []int{6}
}
-
func (m *ShardReference) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ShardReference.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ShardReference) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ShardReference.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ShardReference.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ShardReference) XXX_Merge(src proto.Message) {
xxx_messageInfo_ShardReference.Merge(m, src)
}
func (m *ShardReference) XXX_Size() int {
- return xxx_messageInfo_ShardReference.Size(m)
+ return m.Size()
}
func (m *ShardReference) XXX_DiscardUnknown() {
xxx_messageInfo_ShardReference.DiscardUnknown(m)
@@ -1036,18 +1133,26 @@ func (*ShardTabletControl) ProtoMessage() {}
func (*ShardTabletControl) Descriptor() ([]byte, []int) {
return fileDescriptor_52c350cb619f972e, []int{7}
}
-
func (m *ShardTabletControl) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ShardTabletControl.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ShardTabletControl) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ShardTabletControl.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ShardTabletControl.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ShardTabletControl) XXX_Merge(src proto.Message) {
xxx_messageInfo_ShardTabletControl.Merge(m, src)
}
func (m *ShardTabletControl) XXX_Size() int {
- return xxx_messageInfo_ShardTabletControl.Size(m)
+ return m.Size()
}
func (m *ShardTabletControl) XXX_DiscardUnknown() {
xxx_messageInfo_ShardTabletControl.DiscardUnknown(m)
@@ -1095,18 +1200,26 @@ func (*SrvKeyspace) ProtoMessage() {}
func (*SrvKeyspace) Descriptor() ([]byte, []int) {
return fileDescriptor_52c350cb619f972e, []int{8}
}
-
func (m *SrvKeyspace) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_SrvKeyspace.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *SrvKeyspace) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_SrvKeyspace.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_SrvKeyspace.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *SrvKeyspace) XXX_Merge(src proto.Message) {
xxx_messageInfo_SrvKeyspace.Merge(m, src)
}
func (m *SrvKeyspace) XXX_Size() int {
- return xxx_messageInfo_SrvKeyspace.Size(m)
+ return m.Size()
}
func (m *SrvKeyspace) XXX_DiscardUnknown() {
xxx_messageInfo_SrvKeyspace.DiscardUnknown(m)
@@ -1160,18 +1273,26 @@ func (*SrvKeyspace_KeyspacePartition) ProtoMessage() {}
func (*SrvKeyspace_KeyspacePartition) Descriptor() ([]byte, []int) {
return fileDescriptor_52c350cb619f972e, []int{8, 0}
}
-
func (m *SrvKeyspace_KeyspacePartition) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_SrvKeyspace_KeyspacePartition.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *SrvKeyspace_KeyspacePartition) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_SrvKeyspace_KeyspacePartition.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_SrvKeyspace_KeyspacePartition.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *SrvKeyspace_KeyspacePartition) XXX_Merge(src proto.Message) {
xxx_messageInfo_SrvKeyspace_KeyspacePartition.Merge(m, src)
}
func (m *SrvKeyspace_KeyspacePartition) XXX_Size() int {
- return xxx_messageInfo_SrvKeyspace_KeyspacePartition.Size(m)
+ return m.Size()
}
func (m *SrvKeyspace_KeyspacePartition) XXX_DiscardUnknown() {
xxx_messageInfo_SrvKeyspace_KeyspacePartition.DiscardUnknown(m)
@@ -1218,18 +1339,26 @@ func (*SrvKeyspace_ServedFrom) ProtoMessage() {}
func (*SrvKeyspace_ServedFrom) Descriptor() ([]byte, []int) {
return fileDescriptor_52c350cb619f972e, []int{8, 1}
}
-
func (m *SrvKeyspace_ServedFrom) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_SrvKeyspace_ServedFrom.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *SrvKeyspace_ServedFrom) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_SrvKeyspace_ServedFrom.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_SrvKeyspace_ServedFrom.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *SrvKeyspace_ServedFrom) XXX_Merge(src proto.Message) {
xxx_messageInfo_SrvKeyspace_ServedFrom.Merge(m, src)
}
func (m *SrvKeyspace_ServedFrom) XXX_Size() int {
- return xxx_messageInfo_SrvKeyspace_ServedFrom.Size(m)
+ return m.Size()
}
func (m *SrvKeyspace_ServedFrom) XXX_DiscardUnknown() {
xxx_messageInfo_SrvKeyspace_ServedFrom.DiscardUnknown(m)
@@ -1274,18 +1403,26 @@ func (*CellInfo) ProtoMessage() {}
func (*CellInfo) Descriptor() ([]byte, []int) {
return fileDescriptor_52c350cb619f972e, []int{9}
}
-
func (m *CellInfo) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_CellInfo.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *CellInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_CellInfo.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_CellInfo.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *CellInfo) XXX_Merge(src proto.Message) {
xxx_messageInfo_CellInfo.Merge(m, src)
}
func (m *CellInfo) XXX_Size() int {
- return xxx_messageInfo_CellInfo.Size(m)
+ return m.Size()
}
func (m *CellInfo) XXX_DiscardUnknown() {
xxx_messageInfo_CellInfo.DiscardUnknown(m)
@@ -1322,18 +1459,26 @@ func (*CellsAlias) ProtoMessage() {}
func (*CellsAlias) Descriptor() ([]byte, []int) {
return fileDescriptor_52c350cb619f972e, []int{10}
}
-
func (m *CellsAlias) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_CellsAlias.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *CellsAlias) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_CellsAlias.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_CellsAlias.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *CellsAlias) XXX_Merge(src proto.Message) {
xxx_messageInfo_CellsAlias.Merge(m, src)
}
func (m *CellsAlias) XXX_Size() int {
- return xxx_messageInfo_CellsAlias.Size(m)
+ return m.Size()
}
func (m *CellsAlias) XXX_DiscardUnknown() {
xxx_messageInfo_CellsAlias.DiscardUnknown(m)
@@ -1348,6 +1493,164 @@ func (m *CellsAlias) GetCells() []string {
return nil
}
+type TopoConfig struct {
+ TopoType string `protobuf:"bytes,1,opt,name=topo_type,json=topoType,proto3" json:"topo_type,omitempty"`
+ Server string `protobuf:"bytes,2,opt,name=server,proto3" json:"server,omitempty"`
+ Root string `protobuf:"bytes,3,opt,name=root,proto3" json:"root,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *TopoConfig) Reset() { *m = TopoConfig{} }
+func (m *TopoConfig) String() string { return proto.CompactTextString(m) }
+func (*TopoConfig) ProtoMessage() {}
+func (*TopoConfig) Descriptor() ([]byte, []int) {
+ return fileDescriptor_52c350cb619f972e, []int{11}
+}
+func (m *TopoConfig) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *TopoConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_TopoConfig.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *TopoConfig) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_TopoConfig.Merge(m, src)
+}
+func (m *TopoConfig) XXX_Size() int {
+ return m.Size()
+}
+func (m *TopoConfig) XXX_DiscardUnknown() {
+ xxx_messageInfo_TopoConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TopoConfig proto.InternalMessageInfo
+
+func (m *TopoConfig) GetTopoType() string {
+ if m != nil {
+ return m.TopoType
+ }
+ return ""
+}
+
+func (m *TopoConfig) GetServer() string {
+ if m != nil {
+ return m.Server
+ }
+ return ""
+}
+
+func (m *TopoConfig) GetRoot() string {
+ if m != nil {
+ return m.Root
+ }
+ return ""
+}
+
+type ExternalVitessCluster struct {
+ TopoConfig *TopoConfig `protobuf:"bytes,1,opt,name=topo_config,json=topoConfig,proto3" json:"topo_config,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *ExternalVitessCluster) Reset() { *m = ExternalVitessCluster{} }
+func (m *ExternalVitessCluster) String() string { return proto.CompactTextString(m) }
+func (*ExternalVitessCluster) ProtoMessage() {}
+func (*ExternalVitessCluster) Descriptor() ([]byte, []int) {
+ return fileDescriptor_52c350cb619f972e, []int{12}
+}
+func (m *ExternalVitessCluster) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *ExternalVitessCluster) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_ExternalVitessCluster.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *ExternalVitessCluster) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ExternalVitessCluster.Merge(m, src)
+}
+func (m *ExternalVitessCluster) XXX_Size() int {
+ return m.Size()
+}
+func (m *ExternalVitessCluster) XXX_DiscardUnknown() {
+ xxx_messageInfo_ExternalVitessCluster.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ExternalVitessCluster proto.InternalMessageInfo
+
+func (m *ExternalVitessCluster) GetTopoConfig() *TopoConfig {
+ if m != nil {
+ return m.TopoConfig
+ }
+ return nil
+}
+
+// ExternalClusters
+type ExternalClusters struct {
+ VitessCluster []*ExternalVitessCluster `protobuf:"bytes,1,rep,name=vitess_cluster,json=vitessCluster,proto3" json:"vitess_cluster,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *ExternalClusters) Reset() { *m = ExternalClusters{} }
+func (m *ExternalClusters) String() string { return proto.CompactTextString(m) }
+func (*ExternalClusters) ProtoMessage() {}
+func (*ExternalClusters) Descriptor() ([]byte, []int) {
+ return fileDescriptor_52c350cb619f972e, []int{13}
+}
+func (m *ExternalClusters) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *ExternalClusters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_ExternalClusters.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *ExternalClusters) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ExternalClusters.Merge(m, src)
+}
+func (m *ExternalClusters) XXX_Size() int {
+ return m.Size()
+}
+func (m *ExternalClusters) XXX_DiscardUnknown() {
+ xxx_messageInfo_ExternalClusters.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ExternalClusters proto.InternalMessageInfo
+
+func (m *ExternalClusters) GetVitessCluster() []*ExternalVitessCluster {
+ if m != nil {
+ return m.VitessCluster
+ }
+ return nil
+}
+
func init() {
proto.RegisterEnum("topodata.KeyspaceType", KeyspaceType_name, KeyspaceType_value)
proto.RegisterEnum("topodata.KeyspaceIdType", KeyspaceIdType_name, KeyspaceIdType_value)
@@ -1372,95 +1675,5271 @@ func init() {
proto.RegisterType((*SrvKeyspace_ServedFrom)(nil), "topodata.SrvKeyspace.ServedFrom")
proto.RegisterType((*CellInfo)(nil), "topodata.CellInfo")
proto.RegisterType((*CellsAlias)(nil), "topodata.CellsAlias")
+ proto.RegisterType((*TopoConfig)(nil), "topodata.TopoConfig")
+ proto.RegisterType((*ExternalVitessCluster)(nil), "topodata.ExternalVitessCluster")
+ proto.RegisterType((*ExternalClusters)(nil), "topodata.ExternalClusters")
}
func init() { proto.RegisterFile("topodata.proto", fileDescriptor_52c350cb619f972e) }
var fileDescriptor_52c350cb619f972e = []byte{
- // 1349 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0xcf, 0x6e, 0xdb, 0x46,
- 0x13, 0x0f, 0xf5, 0xcf, 0xd4, 0x88, 0x92, 0x99, 0x8d, 0x63, 0x10, 0xfa, 0xbe, 0xa0, 0x86, 0x8a,
- 0xa0, 0x82, 0x8b, 0xca, 0xad, 0x93, 0xb4, 0x46, 0x8a, 0x02, 0x51, 0x64, 0xa5, 0x71, 0x6c, 0xcb,
- 0xc2, 0x4a, 0x46, 0x9b, 0x5e, 0x08, 0x5a, 0x5a, 0x3b, 0x84, 0x25, 0x52, 0xd9, 0x5d, 0x0b, 0x50,
- 0x5f, 0xa1, 0x87, 0xf6, 0xdc, 0x37, 0xe8, 0xfb, 0xf4, 0xd8, 0x4b, 0xfb, 0x1c, 0x3d, 0x14, 0x3b,
- 0x4b, 0x52, 0x94, 0x14, 0xa7, 0x4e, 0xe1, 0xdb, 0xcc, 0xec, 0xcc, 0x70, 0xe6, 0xb7, 0xbf, 0x99,
- 0x95, 0xa0, 0x22, 0xc3, 0x49, 0x38, 0xf4, 0xa4, 0xd7, 0x98, 0xf0, 0x50, 0x86, 0xc4, 0x8c, 0xf5,
- 0xaa, 0x35, 0x95, 0xd2, 0x1f, 0x33, 0x6d, 0xaf, 0xed, 0x82, 0x79, 0xc8, 0x66, 0xd4, 0x0b, 0x2e,
- 0x18, 0xd9, 0x80, 0xbc, 0x90, 0x1e, 0x97, 0x8e, 0xb1, 0x65, 0xd4, 0x2d, 0xaa, 0x15, 0x62, 0x43,
- 0x96, 0x05, 0x43, 0x27, 0x83, 0x36, 0x25, 0xd6, 0x1e, 0x41, 0xa9, 0xef, 0x9d, 0x8d, 0x98, 0x6c,
- 0x8e, 0x7c, 0x4f, 0x10, 0x02, 0xb9, 0x01, 0x1b, 0x8d, 0x30, 0xaa, 0x48, 0x51, 0x56, 0x41, 0x57,
- 0xbe, 0x0e, 0x2a, 0x53, 0x25, 0xd6, 0xfe, 0xce, 0x41, 0x41, 0x47, 0x91, 0x4f, 0x21, 0xef, 0xa9,
- 0x48, 0x8c, 0x28, 0xed, 0xde, 0x6f, 0x24, 0xb5, 0xa6, 0xd2, 0x52, 0xed, 0x43, 0xaa, 0x60, 0xbe,
- 0x09, 0x85, 0x0c, 0xbc, 0x31, 0xc3, 0x74, 0x45, 0x9a, 0xe8, 0x64, 0x0f, 0xcc, 0x49, 0xc8, 0xa5,
- 0x3b, 0xf6, 0x26, 0x4e, 0x6e, 0x2b, 0x5b, 0x2f, 0xed, 0x3e, 0x58, 0xce, 0xd5, 0xe8, 0x86, 0x5c,
- 0x1e, 0x7b, 0x93, 0x76, 0x20, 0xf9, 0x8c, 0xae, 0x4d, 0xb4, 0xa6, 0xb2, 0x5e, 0xb2, 0x99, 0x98,
- 0x78, 0x03, 0xe6, 0xe4, 0x75, 0xd6, 0x58, 0x47, 0x18, 0xde, 0x78, 0x7c, 0xe8, 0x14, 0xf0, 0x40,
- 0x2b, 0x64, 0x07, 0x8a, 0x97, 0x6c, 0xe6, 0x72, 0x85, 0x94, 0xb3, 0x86, 0x85, 0x93, 0xf9, 0xc7,
- 0x62, 0x0c, 0x31, 0x8d, 0x46, 0xb3, 0x0e, 0x39, 0x39, 0x9b, 0x30, 0xc7, 0xdc, 0x32, 0xea, 0x95,
- 0xdd, 0x8d, 0xe5, 0xc2, 0xfa, 0xb3, 0x09, 0xa3, 0xe8, 0x41, 0xea, 0x60, 0x0f, 0xcf, 0x5c, 0xd5,
- 0x91, 0x1b, 0x4e, 0x19, 0xe7, 0xfe, 0x90, 0x39, 0x45, 0xfc, 0x76, 0x65, 0x78, 0xd6, 0xf1, 0xc6,
- 0xec, 0x24, 0xb2, 0x92, 0x06, 0xe4, 0xa4, 0x77, 0x21, 0x1c, 0xc0, 0x66, 0xab, 0x2b, 0xcd, 0xf6,
- 0xbd, 0x0b, 0xa1, 0x3b, 0x45, 0x3f, 0xf2, 0x10, 0x2a, 0xe3, 0x99, 0x78, 0x3b, 0x72, 0x13, 0x08,
- 0x2d, 0xcc, 0x5b, 0x46, 0xeb, 0xcb, 0x18, 0xc7, 0x07, 0x00, 0xda, 0x4d, 0xc1, 0xe3, 0x94, 0xb7,
- 0x8c, 0x7a, 0x9e, 0x16, 0xd1, 0xa2, 0xd0, 0x23, 0x4d, 0xd8, 0x1c, 0x7b, 0x42, 0x32, 0xee, 0x4a,
- 0xc6, 0xc7, 0x2e, 0xd2, 0xc2, 0x55, 0x1c, 0x72, 0x2a, 0x88, 0x83, 0xd5, 0x88, 0x28, 0xd5, 0xf7,
- 0xc7, 0x8c, 0xde, 0xd3, 0xbe, 0x7d, 0xc6, 0xc7, 0x3d, 0xe5, 0xa9, 0x8c, 0xd5, 0xa7, 0x60, 0xa5,
- 0x2f, 0x42, 0xf1, 0xe3, 0x92, 0xcd, 0x22, 0xca, 0x28, 0x51, 0xa1, 0x3e, 0xf5, 0x46, 0x57, 0xfa,
- 0x92, 0xf3, 0x54, 0x2b, 0x4f, 0x33, 0x7b, 0x46, 0xf5, 0x2b, 0x28, 0x26, 0x7d, 0xfd, 0x5b, 0x60,
- 0x31, 0x15, 0xf8, 0x2a, 0x67, 0x66, 0xed, 0xdc, 0xab, 0x9c, 0x59, 0xb2, 0xad, 0xda, 0xef, 0x05,
- 0xc8, 0xf7, 0xf0, 0x22, 0xf7, 0xc0, 0x8a, 0xba, 0xb9, 0x01, 0x09, 0x4b, 0xda, 0x55, 0x13, 0xfd,
- 0x7a, 0x1c, 0xcc, 0x1b, 0xe2, 0xb0, 0xc8, 0xa2, 0xcc, 0x0d, 0x58, 0xf4, 0x0d, 0x58, 0x82, 0xf1,
- 0x29, 0x1b, 0xba, 0x8a, 0x2a, 0xc2, 0xc9, 0x2e, 0xdf, 0x3c, 0x36, 0xd5, 0xe8, 0xa1, 0x0f, 0x72,
- 0xaa, 0x24, 0x12, 0x59, 0x90, 0x67, 0x50, 0x16, 0xe1, 0x15, 0x1f, 0x30, 0x17, 0x59, 0x2c, 0xa2,
- 0x31, 0xf9, 0xdf, 0x4a, 0x3c, 0x3a, 0xa1, 0x4c, 0x2d, 0x31, 0x57, 0x04, 0x79, 0x01, 0xeb, 0x12,
- 0x01, 0x71, 0x07, 0x61, 0x20, 0x79, 0x38, 0x12, 0x4e, 0x61, 0x79, 0xd4, 0x74, 0x0e, 0x8d, 0x5b,
- 0x4b, 0x7b, 0xd1, 0x8a, 0x4c, 0xab, 0x82, 0x6c, 0xc3, 0x5d, 0x5f, 0xb8, 0x11, 0x7e, 0xaa, 0x44,
- 0x3f, 0xb8, 0xc0, 0x39, 0x32, 0xe9, 0xba, 0x2f, 0x8e, 0xd1, 0xde, 0xd3, 0xe6, 0xea, 0x6b, 0x80,
- 0x79, 0x43, 0xe4, 0x09, 0x94, 0xa2, 0x0a, 0x70, 0x9e, 0x8c, 0xf7, 0xcc, 0x13, 0xc8, 0x44, 0x56,
- 0xbc, 0x50, 0xab, 0x48, 0x38, 0x99, 0xad, 0xac, 0xe2, 0x05, 0x2a, 0xd5, 0x5f, 0x0d, 0x28, 0xa5,
- 0x9a, 0x8d, 0x17, 0x95, 0x91, 0x2c, 0xaa, 0x85, 0xd5, 0x90, 0xb9, 0x6e, 0x35, 0x64, 0xaf, 0x5d,
- 0x0d, 0xb9, 0x1b, 0x5c, 0xea, 0x26, 0x14, 0xb0, 0x50, 0xe1, 0xe4, 0xb1, 0xb6, 0x48, 0xab, 0xfe,
- 0x66, 0x40, 0x79, 0x01, 0xc5, 0x5b, 0xed, 0x9d, 0x7c, 0x06, 0xe4, 0x6c, 0xe4, 0x0d, 0x2e, 0x47,
- 0xbe, 0x90, 0x8a, 0x50, 0xba, 0x84, 0x1c, 0xba, 0xdc, 0x4d, 0x9d, 0x60, 0x52, 0xa1, 0xaa, 0x3c,
- 0xe7, 0xe1, 0x8f, 0x2c, 0xc0, 0x0d, 0x69, 0xd2, 0x48, 0x4b, 0xc6, 0x2a, 0x6f, 0x17, 0x6a, 0x7f,
- 0x64, 0xf1, 0xfd, 0xd0, 0xe8, 0x7c, 0x0e, 0x1b, 0x08, 0x88, 0x1f, 0x5c, 0xb8, 0x83, 0x70, 0x74,
- 0x35, 0x0e, 0x70, 0xa9, 0x45, 0xc3, 0x4a, 0xe2, 0xb3, 0x16, 0x1e, 0xa9, 0xbd, 0x46, 0x5e, 0xad,
- 0x46, 0x60, 0x9f, 0x19, 0xec, 0xd3, 0x59, 0x00, 0x11, 0xbf, 0x71, 0xa0, 0x39, 0xbe, 0x94, 0x0b,
- 0x7b, 0x7e, 0x96, 0x4c, 0xca, 0x39, 0x0f, 0xc7, 0x62, 0xf5, 0x41, 0x88, 0x73, 0x44, 0xc3, 0xf2,
- 0x82, 0x87, 0xe3, 0x78, 0x58, 0x94, 0x2c, 0xc8, 0xd7, 0x50, 0x8e, 0x6f, 0x5a, 0x97, 0x91, 0xc7,
- 0x32, 0x36, 0x57, 0x53, 0x60, 0x11, 0xd6, 0x65, 0x4a, 0x23, 0x1f, 0x43, 0xf9, 0xcc, 0x13, 0xcc,
- 0x4d, 0xb8, 0xa3, 0x5f, 0x0f, 0x4b, 0x19, 0x13, 0x84, 0xbe, 0x80, 0xb2, 0x08, 0xbc, 0x89, 0x78,
- 0x13, 0x46, 0x8b, 0x63, 0xed, 0x1d, 0x8b, 0xc3, 0x8a, 0x5d, 0x70, 0x73, 0x5e, 0xc5, 0xb3, 0xa0,
- 0x6a, 0xbc, 0x5d, 0x3e, 0xa4, 0x99, 0x9e, 0x5d, 0x64, 0xba, 0xbe, 0xe4, 0xda, 0x4f, 0x06, 0xd8,
- 0x7a, 0x29, 0xb0, 0xc9, 0xc8, 0x1f, 0x78, 0xd2, 0x0f, 0x03, 0xf2, 0x04, 0xf2, 0x41, 0x38, 0x64,
- 0x6a, 0x73, 0x2a, 0x84, 0x3f, 0x5a, 0xda, 0x03, 0x29, 0xd7, 0x46, 0x27, 0x1c, 0x32, 0xaa, 0xbd,
- 0xab, 0xcf, 0x20, 0xa7, 0x54, 0xb5, 0x7f, 0xa3, 0x16, 0x6e, 0xb2, 0x7f, 0xe5, 0x5c, 0xa9, 0x9d,
- 0x42, 0x25, 0xfa, 0xc2, 0x39, 0xe3, 0x2c, 0x18, 0x30, 0xf5, 0xd3, 0x23, 0xc5, 0x30, 0x94, 0x3f,
- 0x78, 0xc5, 0xd6, 0x7e, 0x36, 0x80, 0x60, 0xde, 0xc5, 0xd1, 0xbb, 0x8d, 0xdc, 0xe4, 0x31, 0x6c,
- 0xbe, 0xbd, 0x62, 0x7c, 0xa6, 0x37, 0xde, 0x80, 0xb9, 0x43, 0x5f, 0xa8, 0xaf, 0xe8, 0x0d, 0x62,
- 0xd2, 0x0d, 0x3c, 0xed, 0xe9, 0xc3, 0xfd, 0xe8, 0xac, 0xf6, 0x57, 0x0e, 0x4a, 0x3d, 0x3e, 0x4d,
- 0x68, 0xf3, 0x2d, 0xc0, 0xc4, 0xe3, 0xd2, 0x57, 0x98, 0xc6, 0xb0, 0x7f, 0x92, 0x82, 0x7d, 0xee,
- 0x9a, 0x30, 0xb4, 0x1b, 0xfb, 0xd3, 0x54, 0xe8, 0xb5, 0x13, 0x9a, 0xf9, 0xe0, 0x09, 0xcd, 0xfe,
- 0x87, 0x09, 0x6d, 0x42, 0x29, 0x35, 0xa1, 0xd1, 0x80, 0x6e, 0xbd, 0xbb, 0x8f, 0xd4, 0x8c, 0xc2,
- 0x7c, 0x46, 0xab, 0x7f, 0x1a, 0x70, 0x77, 0xa5, 0x45, 0x35, 0x15, 0xa9, 0x47, 0xf2, 0xfd, 0x53,
- 0x31, 0x7f, 0x1d, 0x49, 0x0b, 0x6c, 0xac, 0xd2, 0xe5, 0x31, 0xa1, 0xf4, 0x80, 0x94, 0xd2, 0x7d,
- 0x2d, 0x32, 0x8e, 0xae, 0x8b, 0x05, 0x5d, 0x90, 0x2e, 0xdc, 0xd7, 0x49, 0x96, 0x5f, 0x49, 0xfd,
- 0x52, 0xff, 0x7f, 0x29, 0xd3, 0xe2, 0x23, 0x79, 0x4f, 0xac, 0xd8, 0x44, 0xd5, 0xbd, 0x8d, 0x89,
- 0x7f, 0xcf, 0x2b, 0x16, 0xad, 0xee, 0x43, 0x30, 0x5b, 0x6c, 0x34, 0x3a, 0x08, 0xce, 0x43, 0xf5,
- 0x3b, 0x11, 0x71, 0xe1, 0xae, 0x37, 0x1c, 0x72, 0x26, 0x44, 0xc4, 0xfa, 0xb2, 0xb6, 0x36, 0xb5,
- 0x51, 0x8d, 0x04, 0x0f, 0x43, 0x19, 0x25, 0x44, 0x39, 0x5a, 0x14, 0x35, 0x00, 0x95, 0x4c, 0xe8,
- 0x1f, 0x4a, 0xef, 0x5c, 0x37, 0xdb, 0x75, 0xb0, 0xd2, 0xfb, 0x93, 0x00, 0x14, 0x3a, 0x27, 0xf4,
- 0xb8, 0x79, 0x64, 0xdf, 0x21, 0x16, 0x98, 0xbd, 0x4e, 0xb3, 0xdb, 0x7b, 0x79, 0xd2, 0xb7, 0x8d,
- 0xed, 0x5d, 0xa8, 0x2c, 0xd2, 0x89, 0x14, 0x21, 0x7f, 0xda, 0xe9, 0xb5, 0xfb, 0xf6, 0x1d, 0x15,
- 0x76, 0x7a, 0xd0, 0xe9, 0x7f, 0xf9, 0xd8, 0x36, 0x94, 0xf9, 0xf9, 0xeb, 0x7e, 0xbb, 0x67, 0x67,
- 0xb6, 0x7f, 0x31, 0x00, 0xe6, 0x58, 0x90, 0x12, 0xac, 0x9d, 0x76, 0x0e, 0x3b, 0x27, 0xdf, 0x75,
- 0x74, 0xc8, 0x71, 0xb3, 0xd7, 0x6f, 0x53, 0xdb, 0x50, 0x07, 0xb4, 0xdd, 0x3d, 0x3a, 0x68, 0x35,
- 0xed, 0x8c, 0x3a, 0xa0, 0xfb, 0x27, 0x9d, 0xa3, 0xd7, 0x76, 0x16, 0x73, 0x35, 0xfb, 0xad, 0x97,
- 0x5a, 0xec, 0x75, 0x9b, 0xb4, 0x6d, 0xe7, 0x88, 0x0d, 0x56, 0xfb, 0xfb, 0x6e, 0x9b, 0x1e, 0x1c,
- 0xb7, 0x3b, 0xfd, 0xe6, 0x91, 0x9d, 0x57, 0x31, 0xcf, 0x9b, 0xad, 0xc3, 0xd3, 0xae, 0x5d, 0xd0,
- 0xc9, 0x7a, 0xfd, 0x13, 0xda, 0xb6, 0xd7, 0x94, 0xb2, 0x4f, 0x9b, 0x07, 0x9d, 0xf6, 0xbe, 0x6d,
- 0x56, 0x33, 0xb6, 0xf1, 0x7c, 0x0f, 0xd6, 0xfd, 0xb0, 0x31, 0xf5, 0x25, 0x13, 0x42, 0xff, 0xdd,
- 0xfa, 0xe1, 0x61, 0xa4, 0xf9, 0xe1, 0x8e, 0x96, 0x76, 0x2e, 0xc2, 0x9d, 0xa9, 0xdc, 0xc1, 0xd3,
- 0x9d, 0xf8, 0x52, 0xcf, 0x0a, 0xa8, 0x3f, 0xfa, 0x27, 0x00, 0x00, 0xff, 0xff, 0x51, 0xac, 0x2b,
- 0xc1, 0xc6, 0x0d, 0x00, 0x00,
+ // 1470 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x57, 0x4f, 0x6f, 0xdb, 0xc6,
+ 0x12, 0x0f, 0xf5, 0xcf, 0xd2, 0x88, 0x92, 0x99, 0x8d, 0x63, 0x10, 0xca, 0x8b, 0x9f, 0xa1, 0x87,
+ 0xe0, 0x19, 0x7e, 0x78, 0x72, 0xeb, 0x24, 0x6d, 0x90, 0xa2, 0x40, 0x14, 0x59, 0xa9, 0x1d, 0xdb,
+ 0xb2, 0xb0, 0x92, 0xdb, 0x26, 0x17, 0x82, 0x96, 0xd6, 0x0e, 0x61, 0x8a, 0x54, 0xb8, 0x2b, 0xa1,
+ 0xea, 0x57, 0xe8, 0xa1, 0x3d, 0x16, 0xfd, 0x06, 0xfd, 0x26, 0x3d, 0xf6, 0xd0, 0x63, 0x0f, 0xad,
+ 0xfb, 0x35, 0x7a, 0x28, 0x76, 0x96, 0xa4, 0x28, 0xc9, 0x4e, 0x9d, 0xc2, 0xb7, 0x9d, 0xd9, 0x99,
+ 0xd9, 0x99, 0xdf, 0xfe, 0x66, 0x96, 0x84, 0xb2, 0xf0, 0x87, 0x7e, 0xdf, 0x16, 0x76, 0x6d, 0x18,
+ 0xf8, 0xc2, 0x27, 0xf9, 0x48, 0xae, 0xe8, 0x63, 0x21, 0x9c, 0x01, 0x53, 0xfa, 0xea, 0x36, 0xe4,
+ 0xf7, 0xd9, 0x84, 0xda, 0xde, 0x19, 0x23, 0x2b, 0x90, 0xe5, 0xc2, 0x0e, 0x84, 0xa9, 0xad, 0x6b,
+ 0x1b, 0x3a, 0x55, 0x02, 0x31, 0x20, 0xcd, 0xbc, 0xbe, 0x99, 0x42, 0x9d, 0x5c, 0x56, 0x1f, 0x42,
+ 0xb1, 0x6b, 0x9f, 0xb8, 0x4c, 0xd4, 0x5d, 0xc7, 0xe6, 0x84, 0x40, 0xa6, 0xc7, 0x5c, 0x17, 0xbd,
+ 0x0a, 0x14, 0xd7, 0xd2, 0x69, 0xe4, 0x28, 0xa7, 0x12, 0x95, 0xcb, 0xea, 0x9f, 0x19, 0xc8, 0x29,
+ 0x2f, 0xf2, 0x3f, 0xc8, 0xda, 0xd2, 0x13, 0x3d, 0x8a, 0xdb, 0x77, 0x6b, 0x71, 0xae, 0x89, 0xb0,
+ 0x54, 0xd9, 0x90, 0x0a, 0xe4, 0xdf, 0xf8, 0x5c, 0x78, 0xf6, 0x80, 0x61, 0xb8, 0x02, 0x8d, 0x65,
+ 0xf2, 0x04, 0xf2, 0x43, 0x3f, 0x10, 0xd6, 0xc0, 0x1e, 0x9a, 0x99, 0xf5, 0xf4, 0x46, 0x71, 0xfb,
+ 0xfe, 0x7c, 0xac, 0x5a, 0xdb, 0x0f, 0xc4, 0xa1, 0x3d, 0x6c, 0x7a, 0x22, 0x98, 0xd0, 0xa5, 0xa1,
+ 0x92, 0x64, 0xd4, 0x73, 0x36, 0xe1, 0x43, 0xbb, 0xc7, 0xcc, 0xac, 0x8a, 0x1a, 0xc9, 0x08, 0xc3,
+ 0x1b, 0x3b, 0xe8, 0x9b, 0x39, 0xdc, 0x50, 0x02, 0xd9, 0x82, 0xc2, 0x39, 0x9b, 0x58, 0x81, 0x44,
+ 0xca, 0x5c, 0xc2, 0xc4, 0xc9, 0xf4, 0xb0, 0x08, 0x43, 0x0c, 0xa3, 0xd0, 0xdc, 0x80, 0x8c, 0x98,
+ 0x0c, 0x99, 0x99, 0x5f, 0xd7, 0x36, 0xca, 0xdb, 0x2b, 0xf3, 0x89, 0x75, 0x27, 0x43, 0x46, 0xd1,
+ 0x82, 0x6c, 0x80, 0xd1, 0x3f, 0xb1, 0x64, 0x45, 0x96, 0x3f, 0x66, 0x41, 0xe0, 0xf4, 0x99, 0x59,
+ 0xc0, 0xb3, 0xcb, 0xfd, 0x93, 0x96, 0x3d, 0x60, 0x47, 0xa1, 0x96, 0xd4, 0x20, 0x23, 0xec, 0x33,
+ 0x6e, 0x02, 0x16, 0x5b, 0x59, 0x28, 0xb6, 0x6b, 0x9f, 0x71, 0x55, 0x29, 0xda, 0x91, 0x07, 0x50,
+ 0x1e, 0x4c, 0xf8, 0x5b, 0xd7, 0x8a, 0x21, 0xd4, 0x31, 0x6e, 0x09, 0xb5, 0xbb, 0x11, 0x8e, 0xf7,
+ 0x01, 0x94, 0x99, 0x84, 0xc7, 0x2c, 0xad, 0x6b, 0x1b, 0x59, 0x5a, 0x40, 0x8d, 0x44, 0x8f, 0xd4,
+ 0x61, 0x75, 0x60, 0x73, 0xc1, 0x02, 0x4b, 0xb0, 0x60, 0x60, 0x21, 0x2d, 0x2c, 0xc9, 0x21, 0xb3,
+ 0x8c, 0x38, 0xe8, 0xb5, 0x90, 0x52, 0x5d, 0x67, 0xc0, 0xe8, 0x1d, 0x65, 0xdb, 0x65, 0xc1, 0xa0,
+ 0x23, 0x2d, 0xa5, 0xb2, 0xf2, 0x14, 0xf4, 0xe4, 0x45, 0x48, 0x7e, 0x9c, 0xb3, 0x49, 0x48, 0x19,
+ 0xb9, 0x94, 0xa8, 0x8f, 0x6d, 0x77, 0xa4, 0x2e, 0x39, 0x4b, 0x95, 0xf0, 0x34, 0xf5, 0x44, 0xab,
+ 0x7c, 0x0c, 0x85, 0xb8, 0xae, 0xbf, 0x73, 0x2c, 0x24, 0x1c, 0x5f, 0x66, 0xf2, 0x69, 0x23, 0xf3,
+ 0x32, 0x93, 0x2f, 0x1a, 0x7a, 0xf5, 0x97, 0x1c, 0x64, 0x3b, 0x78, 0x91, 0x4f, 0x40, 0x0f, 0xab,
+ 0xb9, 0x06, 0x09, 0x8b, 0xca, 0x54, 0x11, 0xfd, 0x6a, 0x1c, 0xf2, 0xd7, 0xc4, 0x61, 0x96, 0x45,
+ 0xa9, 0x6b, 0xb0, 0xe8, 0x53, 0xd0, 0x39, 0x0b, 0xc6, 0xac, 0x6f, 0x49, 0xaa, 0x70, 0x33, 0x3d,
+ 0x7f, 0xf3, 0x58, 0x54, 0xad, 0x83, 0x36, 0xc8, 0xa9, 0x22, 0x8f, 0xd7, 0x9c, 0x3c, 0x83, 0x12,
+ 0xf7, 0x47, 0x41, 0x8f, 0x59, 0xc8, 0x62, 0x1e, 0xb6, 0xc9, 0xbd, 0x05, 0x7f, 0x34, 0xc2, 0x35,
+ 0xd5, 0xf9, 0x54, 0xe0, 0xe4, 0x05, 0x2c, 0x0b, 0x04, 0xc4, 0xea, 0xf9, 0x9e, 0x08, 0x7c, 0x97,
+ 0x9b, 0xb9, 0xf9, 0x56, 0x53, 0x31, 0x14, 0x6e, 0x0d, 0x65, 0x45, 0xcb, 0x22, 0x29, 0x72, 0xb2,
+ 0x09, 0xb7, 0x1d, 0x6e, 0x85, 0xf8, 0xc9, 0x14, 0x1d, 0xef, 0x0c, 0xfb, 0x28, 0x4f, 0x97, 0x1d,
+ 0x7e, 0x88, 0xfa, 0x8e, 0x52, 0x57, 0x5e, 0x01, 0x4c, 0x0b, 0x22, 0x8f, 0xa1, 0x18, 0x66, 0x80,
+ 0xfd, 0xa4, 0xbd, 0xa3, 0x9f, 0x40, 0xc4, 0x6b, 0xc9, 0x0b, 0x39, 0x8a, 0xb8, 0x99, 0x5a, 0x4f,
+ 0x4b, 0x5e, 0xa0, 0x50, 0xf9, 0x41, 0x83, 0x62, 0xa2, 0xd8, 0x68, 0x50, 0x69, 0xf1, 0xa0, 0x9a,
+ 0x19, 0x0d, 0xa9, 0xab, 0x46, 0x43, 0xfa, 0xca, 0xd1, 0x90, 0xb9, 0xc6, 0xa5, 0xae, 0x42, 0x0e,
+ 0x13, 0xe5, 0x66, 0x16, 0x73, 0x0b, 0xa5, 0xca, 0x8f, 0x1a, 0x94, 0x66, 0x50, 0xbc, 0xd1, 0xda,
+ 0xc9, 0xff, 0x81, 0x9c, 0xb8, 0x76, 0xef, 0xdc, 0x75, 0xb8, 0x90, 0x84, 0x52, 0x29, 0x64, 0xd0,
+ 0xe4, 0x76, 0x62, 0x07, 0x83, 0x72, 0x99, 0xe5, 0x69, 0xe0, 0x7f, 0xcd, 0x3c, 0x9c, 0x90, 0x79,
+ 0x1a, 0x4a, 0x71, 0x5b, 0x65, 0x8d, 0x5c, 0xf5, 0xd7, 0x34, 0xbe, 0x1f, 0x0a, 0x9d, 0x0f, 0x60,
+ 0x05, 0x01, 0x71, 0xbc, 0x33, 0xab, 0xe7, 0xbb, 0xa3, 0x81, 0x87, 0x43, 0x2d, 0x6c, 0x56, 0x12,
+ 0xed, 0x35, 0x70, 0x4b, 0xce, 0x35, 0xf2, 0x72, 0xd1, 0x03, 0xeb, 0x4c, 0x61, 0x9d, 0xe6, 0x0c,
+ 0x88, 0x78, 0xc6, 0x9e, 0xe2, 0xf8, 0x5c, 0x2c, 0xac, 0xf9, 0x59, 0xdc, 0x29, 0xa7, 0x81, 0x3f,
+ 0xe0, 0x8b, 0x0f, 0x42, 0x14, 0x23, 0x6c, 0x96, 0x17, 0x81, 0x3f, 0x88, 0x9a, 0x45, 0xae, 0x39,
+ 0xf9, 0x04, 0x4a, 0xd1, 0x4d, 0xab, 0x34, 0xb2, 0x98, 0xc6, 0xea, 0x62, 0x08, 0x4c, 0x42, 0x3f,
+ 0x4f, 0x48, 0xe4, 0x3f, 0x50, 0x3a, 0xb1, 0x39, 0xb3, 0x62, 0xee, 0xa8, 0xd7, 0x43, 0x97, 0xca,
+ 0x18, 0xa1, 0x0f, 0xa1, 0xc4, 0x3d, 0x7b, 0xc8, 0xdf, 0xf8, 0xe1, 0xe0, 0x58, 0xba, 0x64, 0x70,
+ 0xe8, 0x91, 0x09, 0x4e, 0xce, 0x51, 0xd4, 0x0b, 0x32, 0xc7, 0x9b, 0xe5, 0x43, 0x92, 0xe9, 0xe9,
+ 0x59, 0xa6, 0xab, 0x4b, 0xae, 0x7e, 0xa3, 0x81, 0xa1, 0x86, 0x02, 0x1b, 0xba, 0x4e, 0xcf, 0x16,
+ 0x8e, 0xef, 0x91, 0xc7, 0x90, 0xf5, 0xfc, 0x3e, 0x93, 0x93, 0x53, 0x22, 0xfc, 0xef, 0xb9, 0x39,
+ 0x90, 0x30, 0xad, 0xb5, 0xfc, 0x3e, 0xa3, 0xca, 0xba, 0xf2, 0x0c, 0x32, 0x52, 0x94, 0xf3, 0x37,
+ 0x2c, 0xe1, 0x3a, 0xf3, 0x57, 0x4c, 0x85, 0xea, 0x31, 0x94, 0xc3, 0x13, 0x4e, 0x59, 0xc0, 0xbc,
+ 0x1e, 0x93, 0x9f, 0x1e, 0x09, 0x86, 0xe1, 0xfa, 0xbd, 0x47, 0x6c, 0xf5, 0x5b, 0x0d, 0x08, 0xc6,
+ 0x9d, 0x6d, 0xbd, 0x9b, 0x88, 0x4d, 0x1e, 0xc1, 0xea, 0xdb, 0x11, 0x0b, 0x26, 0x6a, 0xe2, 0xf5,
+ 0x98, 0xd5, 0x77, 0xb8, 0x3c, 0x45, 0x4d, 0x90, 0x3c, 0x5d, 0xc1, 0xdd, 0x8e, 0xda, 0xdc, 0x09,
+ 0xf7, 0xaa, 0x17, 0x19, 0x28, 0x76, 0x82, 0x71, 0x4c, 0x9b, 0xcf, 0x00, 0x86, 0x76, 0x20, 0x1c,
+ 0x89, 0x69, 0x04, 0xfb, 0x7f, 0x13, 0xb0, 0x4f, 0x4d, 0x63, 0x86, 0xb6, 0x23, 0x7b, 0x9a, 0x70,
+ 0xbd, 0xb2, 0x43, 0x53, 0xef, 0xdd, 0xa1, 0xe9, 0x7f, 0xd0, 0xa1, 0x75, 0x28, 0x26, 0x3a, 0x34,
+ 0x6c, 0xd0, 0xf5, 0xcb, 0xeb, 0x48, 0xf4, 0x28, 0x4c, 0x7b, 0xb4, 0xf2, 0xbb, 0x06, 0xb7, 0x17,
+ 0x4a, 0x94, 0x5d, 0x91, 0x78, 0x24, 0xdf, 0xdd, 0x15, 0xd3, 0xd7, 0x91, 0x34, 0xc0, 0xc0, 0x2c,
+ 0xad, 0x20, 0x22, 0x94, 0x6a, 0x90, 0x62, 0xb2, 0xae, 0x59, 0xc6, 0xd1, 0x65, 0x3e, 0x23, 0x73,
+ 0xd2, 0x86, 0xbb, 0x2a, 0xc8, 0xfc, 0x2b, 0xa9, 0x5e, 0xea, 0x7f, 0xcd, 0x45, 0x9a, 0x7d, 0x24,
+ 0xef, 0xf0, 0x05, 0x1d, 0xaf, 0x58, 0x37, 0xd1, 0xf1, 0xef, 0x78, 0xc5, 0xc2, 0xd1, 0xbd, 0x0f,
+ 0xf9, 0x06, 0x73, 0xdd, 0x3d, 0xef, 0xd4, 0x97, 0xdf, 0x89, 0x88, 0x4b, 0x60, 0xd9, 0xfd, 0x7e,
+ 0xc0, 0x38, 0x0f, 0x59, 0x5f, 0x52, 0xda, 0xba, 0x52, 0xca, 0x96, 0x08, 0x7c, 0x5f, 0x84, 0x01,
+ 0x71, 0x1d, 0x0e, 0x8a, 0x2a, 0x80, 0x0c, 0xc6, 0xd5, 0x87, 0xd2, 0xa5, 0xe3, 0xa6, 0x7a, 0x0c,
+ 0xd0, 0xf5, 0x87, 0x7e, 0xc3, 0xf7, 0x4e, 0x9d, 0x33, 0x72, 0x0f, 0x0a, 0xb2, 0x86, 0x69, 0x55,
+ 0x05, 0x8a, 0xff, 0x28, 0x98, 0xfd, 0x2a, 0xe4, 0xd4, 0xc9, 0xe1, 0x51, 0xa1, 0x14, 0x27, 0x90,
+ 0x9e, 0x26, 0x50, 0x6d, 0xc1, 0xdd, 0xe6, 0x57, 0x82, 0x05, 0x9e, 0xed, 0x7e, 0xee, 0x08, 0xc6,
+ 0x79, 0xc3, 0x1d, 0xc9, 0x8f, 0x09, 0x44, 0x4e, 0x9e, 0xd0, 0xc3, 0x03, 0xc3, 0x39, 0x93, 0x44,
+ 0x2e, 0x4e, 0x86, 0x82, 0x88, 0xd7, 0xd5, 0xd7, 0x60, 0x44, 0xf1, 0xc2, 0x48, 0xf2, 0x23, 0xa8,
+ 0x3c, 0xc6, 0xd8, 0x56, 0x4f, 0xa9, 0x16, 0x67, 0xdf, 0xa5, 0x39, 0xd0, 0xd2, 0x38, 0x29, 0x6e,
+ 0x6e, 0x80, 0x9e, 0x7c, 0x42, 0x08, 0x40, 0xae, 0x75, 0x44, 0x0f, 0xeb, 0x07, 0xc6, 0x2d, 0xa2,
+ 0x43, 0xbe, 0xd3, 0xaa, 0xb7, 0x3b, 0xbb, 0x47, 0x5d, 0x43, 0xdb, 0xdc, 0x86, 0xf2, 0x6c, 0x47,
+ 0x91, 0x02, 0x64, 0x8f, 0x5b, 0x9d, 0x66, 0xd7, 0xb8, 0x25, 0xdd, 0x8e, 0xf7, 0x5a, 0xdd, 0x8f,
+ 0x1e, 0x19, 0x9a, 0x54, 0x3f, 0x7f, 0xd5, 0x6d, 0x76, 0x8c, 0xd4, 0xe6, 0x77, 0x1a, 0xc0, 0x94,
+ 0x0e, 0xa4, 0x08, 0x4b, 0xc7, 0xad, 0xfd, 0xd6, 0xd1, 0x17, 0x2d, 0xe5, 0x72, 0x58, 0xef, 0x74,
+ 0x9b, 0xd4, 0xd0, 0xe4, 0x06, 0x6d, 0xb6, 0x0f, 0xf6, 0x1a, 0x75, 0x23, 0x25, 0x37, 0xe8, 0xce,
+ 0x51, 0xeb, 0xe0, 0x95, 0x91, 0xc6, 0x58, 0xf5, 0x6e, 0x63, 0x57, 0x2d, 0x3b, 0xed, 0x3a, 0x6d,
+ 0x1a, 0x19, 0x62, 0x80, 0xde, 0xfc, 0xb2, 0xdd, 0xa4, 0x7b, 0x87, 0xcd, 0x56, 0xb7, 0x7e, 0x60,
+ 0x64, 0xa5, 0xcf, 0xf3, 0x7a, 0x63, 0xff, 0xb8, 0x6d, 0xe4, 0x54, 0xb0, 0x4e, 0xf7, 0x88, 0x36,
+ 0x8d, 0x25, 0x29, 0xec, 0xd0, 0xfa, 0x5e, 0xab, 0xb9, 0x63, 0xe4, 0x2b, 0x29, 0x43, 0x7b, 0xbe,
+ 0xfb, 0xd3, 0xc5, 0x9a, 0xf6, 0xf3, 0xc5, 0x9a, 0xf6, 0xdb, 0xc5, 0x9a, 0xf6, 0xfd, 0x1f, 0x6b,
+ 0xb7, 0x60, 0xd9, 0xf1, 0x6b, 0x0a, 0x14, 0xf5, 0x07, 0xfa, 0xfa, 0x41, 0x28, 0x39, 0xfe, 0x96,
+ 0x5a, 0x6d, 0x9d, 0xf9, 0x5b, 0x63, 0xb1, 0x85, 0xbb, 0x5b, 0x11, 0xbe, 0x27, 0x39, 0x94, 0x1f,
+ 0xfe, 0x15, 0x00, 0x00, 0xff, 0xff, 0x0c, 0xd6, 0x3a, 0x79, 0xd9, 0x0e, 0x00, 0x00,
+}
+
+func (m *KeyRange) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *KeyRange) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *KeyRange) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.End) > 0 {
+ i -= len(m.End)
+ copy(dAtA[i:], m.End)
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.End)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Start) > 0 {
+ i -= len(m.Start)
+ copy(dAtA[i:], m.Start)
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.Start)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *TabletAlias) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *TabletAlias) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *TabletAlias) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Uid != 0 {
+ i = encodeVarintTopodata(dAtA, i, uint64(m.Uid))
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.Cell) > 0 {
+ i -= len(m.Cell)
+ copy(dAtA[i:], m.Cell)
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.Cell)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Tablet) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Tablet) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Tablet) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.MasterTermStartTime != nil {
+ {
+ size, err := m.MasterTermStartTime.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTopodata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x72
+ }
+ if m.MysqlPort != 0 {
+ i = encodeVarintTopodata(dAtA, i, uint64(m.MysqlPort))
+ i--
+ dAtA[i] = 0x68
+ }
+ if len(m.MysqlHostname) > 0 {
+ i -= len(m.MysqlHostname)
+ copy(dAtA[i:], m.MysqlHostname)
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.MysqlHostname)))
+ i--
+ dAtA[i] = 0x62
+ }
+ if len(m.Tags) > 0 {
+ for k := range m.Tags {
+ v := m.Tags[k]
+ baseI := i
+ i -= len(v)
+ copy(dAtA[i:], v)
+ i = encodeVarintTopodata(dAtA, i, uint64(len(v)))
+ i--
+ dAtA[i] = 0x12
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintTopodata(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintTopodata(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x52
+ }
+ }
+ if len(m.DbNameOverride) > 0 {
+ i -= len(m.DbNameOverride)
+ copy(dAtA[i:], m.DbNameOverride)
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.DbNameOverride)))
+ i--
+ dAtA[i] = 0x4a
+ }
+ if m.Type != 0 {
+ i = encodeVarintTopodata(dAtA, i, uint64(m.Type))
+ i--
+ dAtA[i] = 0x40
+ }
+ if m.KeyRange != nil {
+ {
+ size, err := m.KeyRange.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTopodata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x3a
+ }
+ if len(m.Shard) > 0 {
+ i -= len(m.Shard)
+ copy(dAtA[i:], m.Shard)
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.Shard)))
+ i--
+ dAtA[i] = 0x32
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if len(m.PortMap) > 0 {
+ for k := range m.PortMap {
+ v := m.PortMap[k]
+ baseI := i
+ i = encodeVarintTopodata(dAtA, i, uint64(v))
+ i--
+ dAtA[i] = 0x10
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintTopodata(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintTopodata(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if len(m.Hostname) > 0 {
+ i -= len(m.Hostname)
+ copy(dAtA[i:], m.Hostname)
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.Hostname)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Alias != nil {
+ {
+ size, err := m.Alias.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTopodata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Shard) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Shard) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Shard) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.MasterTermStartTime != nil {
+ {
+ size, err := m.MasterTermStartTime.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTopodata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x42
+ }
+ if m.IsMasterServing {
+ i--
+ if m.IsMasterServing {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x38
+ }
+ if len(m.TabletControls) > 0 {
+ for iNdEx := len(m.TabletControls) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.TabletControls[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTopodata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x32
+ }
+ }
+ if len(m.SourceShards) > 0 {
+ for iNdEx := len(m.SourceShards) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.SourceShards[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTopodata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if len(m.ServedTypes) > 0 {
+ for iNdEx := len(m.ServedTypes) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.ServedTypes[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTopodata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if m.KeyRange != nil {
+ {
+ size, err := m.KeyRange.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTopodata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.MasterAlias != nil {
+ {
+ size, err := m.MasterAlias.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTopodata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Shard_ServedType) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Shard_ServedType) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Shard_ServedType) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Cells) > 0 {
+ for iNdEx := len(m.Cells) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Cells[iNdEx])
+ copy(dAtA[i:], m.Cells[iNdEx])
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.Cells[iNdEx])))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if m.TabletType != 0 {
+ i = encodeVarintTopodata(dAtA, i, uint64(m.TabletType))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Shard_SourceShard) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Shard_SourceShard) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Shard_SourceShard) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Tables) > 0 {
+ for iNdEx := len(m.Tables) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Tables[iNdEx])
+ copy(dAtA[i:], m.Tables[iNdEx])
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.Tables[iNdEx])))
+ i--
+ dAtA[i] = 0x2a
+ }
+ }
+ if m.KeyRange != nil {
+ {
+ size, err := m.KeyRange.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTopodata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ if len(m.Shard) > 0 {
+ i -= len(m.Shard)
+ copy(dAtA[i:], m.Shard)
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.Shard)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Uid != 0 {
+ i = encodeVarintTopodata(dAtA, i, uint64(m.Uid))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Shard_TabletControl) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Shard_TabletControl) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Shard_TabletControl) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Frozen {
+ i--
+ if m.Frozen {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x28
+ }
+ if len(m.BlacklistedTables) > 0 {
+ for iNdEx := len(m.BlacklistedTables) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.BlacklistedTables[iNdEx])
+ copy(dAtA[i:], m.BlacklistedTables[iNdEx])
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.BlacklistedTables[iNdEx])))
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if len(m.Cells) > 0 {
+ for iNdEx := len(m.Cells) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Cells[iNdEx])
+ copy(dAtA[i:], m.Cells[iNdEx])
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.Cells[iNdEx])))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if m.TabletType != 0 {
+ i = encodeVarintTopodata(dAtA, i, uint64(m.TabletType))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Keyspace) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Keyspace) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Keyspace) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.SnapshotTime != nil {
+ {
+ size, err := m.SnapshotTime.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTopodata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x3a
+ }
+ if len(m.BaseKeyspace) > 0 {
+ i -= len(m.BaseKeyspace)
+ copy(dAtA[i:], m.BaseKeyspace)
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.BaseKeyspace)))
+ i--
+ dAtA[i] = 0x32
+ }
+ if m.KeyspaceType != 0 {
+ i = encodeVarintTopodata(dAtA, i, uint64(m.KeyspaceType))
+ i--
+ dAtA[i] = 0x28
+ }
+ if len(m.ServedFroms) > 0 {
+ for iNdEx := len(m.ServedFroms) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.ServedFroms[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTopodata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if m.ShardingColumnType != 0 {
+ i = encodeVarintTopodata(dAtA, i, uint64(m.ShardingColumnType))
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.ShardingColumnName) > 0 {
+ i -= len(m.ShardingColumnName)
+ copy(dAtA[i:], m.ShardingColumnName)
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.ShardingColumnName)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Keyspace_ServedFrom) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Keyspace_ServedFrom) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Keyspace_ServedFrom) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Cells) > 0 {
+ for iNdEx := len(m.Cells) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Cells[iNdEx])
+ copy(dAtA[i:], m.Cells[iNdEx])
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.Cells[iNdEx])))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if m.TabletType != 0 {
+ i = encodeVarintTopodata(dAtA, i, uint64(m.TabletType))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ShardReplication) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ShardReplication) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ShardReplication) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Nodes) > 0 {
+ for iNdEx := len(m.Nodes) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Nodes[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTopodata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ShardReplication_Node) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ShardReplication_Node) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ShardReplication_Node) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.TabletAlias != nil {
+ {
+ size, err := m.TabletAlias.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTopodata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ShardReference) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ShardReference) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ShardReference) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.KeyRange != nil {
+ {
+ size, err := m.KeyRange.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTopodata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ShardTabletControl) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ShardTabletControl) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
}
+
+func (m *ShardTabletControl) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.QueryServiceDisabled {
+ i--
+ if m.QueryServiceDisabled {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.KeyRange != nil {
+ {
+ size, err := m.KeyRange.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTopodata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *SrvKeyspace) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SrvKeyspace) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *SrvKeyspace) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.ServedFrom) > 0 {
+ for iNdEx := len(m.ServedFrom) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.ServedFrom[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTopodata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if m.ShardingColumnType != 0 {
+ i = encodeVarintTopodata(dAtA, i, uint64(m.ShardingColumnType))
+ i--
+ dAtA[i] = 0x18
+ }
+ if len(m.ShardingColumnName) > 0 {
+ i -= len(m.ShardingColumnName)
+ copy(dAtA[i:], m.ShardingColumnName)
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.ShardingColumnName)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Partitions) > 0 {
+ for iNdEx := len(m.Partitions) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Partitions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTopodata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *SrvKeyspace_KeyspacePartition) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SrvKeyspace_KeyspacePartition) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *SrvKeyspace_KeyspacePartition) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.ShardTabletControls) > 0 {
+ for iNdEx := len(m.ShardTabletControls) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.ShardTabletControls[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTopodata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if len(m.ShardReferences) > 0 {
+ for iNdEx := len(m.ShardReferences) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.ShardReferences[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTopodata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if m.ServedType != 0 {
+ i = encodeVarintTopodata(dAtA, i, uint64(m.ServedType))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *SrvKeyspace_ServedFrom) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SrvKeyspace_ServedFrom) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *SrvKeyspace_ServedFrom) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.TabletType != 0 {
+ i = encodeVarintTopodata(dAtA, i, uint64(m.TabletType))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *CellInfo) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *CellInfo) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *CellInfo) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Root) > 0 {
+ i -= len(m.Root)
+ copy(dAtA[i:], m.Root)
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.Root)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.ServerAddress) > 0 {
+ i -= len(m.ServerAddress)
+ copy(dAtA[i:], m.ServerAddress)
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.ServerAddress)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *CellsAlias) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *CellsAlias) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *CellsAlias) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Cells) > 0 {
+ for iNdEx := len(m.Cells) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Cells[iNdEx])
+ copy(dAtA[i:], m.Cells[iNdEx])
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.Cells[iNdEx])))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *TopoConfig) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *TopoConfig) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *TopoConfig) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Root) > 0 {
+ i -= len(m.Root)
+ copy(dAtA[i:], m.Root)
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.Root)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Server) > 0 {
+ i -= len(m.Server)
+ copy(dAtA[i:], m.Server)
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.Server)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.TopoType) > 0 {
+ i -= len(m.TopoType)
+ copy(dAtA[i:], m.TopoType)
+ i = encodeVarintTopodata(dAtA, i, uint64(len(m.TopoType)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ExternalVitessCluster) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExternalVitessCluster) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ExternalVitessCluster) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.TopoConfig != nil {
+ {
+ size, err := m.TopoConfig.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTopodata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ExternalClusters) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExternalClusters) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ExternalClusters) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.VitessCluster) > 0 {
+ for iNdEx := len(m.VitessCluster) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.VitessCluster[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintTopodata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func encodeVarintTopodata(dAtA []byte, offset int, v uint64) int {
+ offset -= sovTopodata(v)
+ base := offset
+ for v >= 1<<7 {
+ dAtA[offset] = uint8(v&0x7f | 0x80)
+ v >>= 7
+ offset++
+ }
+ dAtA[offset] = uint8(v)
+ return base
+}
+func (m *KeyRange) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Start)
+ if l > 0 {
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ l = len(m.End)
+ if l > 0 {
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *TabletAlias) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Cell)
+ if l > 0 {
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ if m.Uid != 0 {
+ n += 1 + sovTopodata(uint64(m.Uid))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Tablet) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Alias != nil {
+ l = m.Alias.Size()
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ l = len(m.Hostname)
+ if l > 0 {
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ if len(m.PortMap) > 0 {
+ for k, v := range m.PortMap {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovTopodata(uint64(len(k))) + 1 + sovTopodata(uint64(v))
+ n += mapEntrySize + 1 + sovTopodata(uint64(mapEntrySize))
+ }
+ }
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ l = len(m.Shard)
+ if l > 0 {
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ if m.KeyRange != nil {
+ l = m.KeyRange.Size()
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ if m.Type != 0 {
+ n += 1 + sovTopodata(uint64(m.Type))
+ }
+ l = len(m.DbNameOverride)
+ if l > 0 {
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ if len(m.Tags) > 0 {
+ for k, v := range m.Tags {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovTopodata(uint64(len(k))) + 1 + len(v) + sovTopodata(uint64(len(v)))
+ n += mapEntrySize + 1 + sovTopodata(uint64(mapEntrySize))
+ }
+ }
+ l = len(m.MysqlHostname)
+ if l > 0 {
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ if m.MysqlPort != 0 {
+ n += 1 + sovTopodata(uint64(m.MysqlPort))
+ }
+ if m.MasterTermStartTime != nil {
+ l = m.MasterTermStartTime.Size()
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Shard) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.MasterAlias != nil {
+ l = m.MasterAlias.Size()
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ if m.KeyRange != nil {
+ l = m.KeyRange.Size()
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ if len(m.ServedTypes) > 0 {
+ for _, e := range m.ServedTypes {
+ l = e.Size()
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ }
+ if len(m.SourceShards) > 0 {
+ for _, e := range m.SourceShards {
+ l = e.Size()
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ }
+ if len(m.TabletControls) > 0 {
+ for _, e := range m.TabletControls {
+ l = e.Size()
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ }
+ if m.IsMasterServing {
+ n += 2
+ }
+ if m.MasterTermStartTime != nil {
+ l = m.MasterTermStartTime.Size()
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Shard_ServedType) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.TabletType != 0 {
+ n += 1 + sovTopodata(uint64(m.TabletType))
+ }
+ if len(m.Cells) > 0 {
+ for _, s := range m.Cells {
+ l = len(s)
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Shard_SourceShard) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Uid != 0 {
+ n += 1 + sovTopodata(uint64(m.Uid))
+ }
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ l = len(m.Shard)
+ if l > 0 {
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ if m.KeyRange != nil {
+ l = m.KeyRange.Size()
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ if len(m.Tables) > 0 {
+ for _, s := range m.Tables {
+ l = len(s)
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Shard_TabletControl) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.TabletType != 0 {
+ n += 1 + sovTopodata(uint64(m.TabletType))
+ }
+ if len(m.Cells) > 0 {
+ for _, s := range m.Cells {
+ l = len(s)
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ }
+ if len(m.BlacklistedTables) > 0 {
+ for _, s := range m.BlacklistedTables {
+ l = len(s)
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ }
+ if m.Frozen {
+ n += 2
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Keyspace) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.ShardingColumnName)
+ if l > 0 {
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ if m.ShardingColumnType != 0 {
+ n += 1 + sovTopodata(uint64(m.ShardingColumnType))
+ }
+ if len(m.ServedFroms) > 0 {
+ for _, e := range m.ServedFroms {
+ l = e.Size()
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ }
+ if m.KeyspaceType != 0 {
+ n += 1 + sovTopodata(uint64(m.KeyspaceType))
+ }
+ l = len(m.BaseKeyspace)
+ if l > 0 {
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ if m.SnapshotTime != nil {
+ l = m.SnapshotTime.Size()
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Keyspace_ServedFrom) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.TabletType != 0 {
+ n += 1 + sovTopodata(uint64(m.TabletType))
+ }
+ if len(m.Cells) > 0 {
+ for _, s := range m.Cells {
+ l = len(s)
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ }
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ShardReplication) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Nodes) > 0 {
+ for _, e := range m.Nodes {
+ l = e.Size()
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ShardReplication_Node) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.TabletAlias != nil {
+ l = m.TabletAlias.Size()
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ShardReference) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ if m.KeyRange != nil {
+ l = m.KeyRange.Size()
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ShardTabletControl) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ if m.KeyRange != nil {
+ l = m.KeyRange.Size()
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ if m.QueryServiceDisabled {
+ n += 2
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *SrvKeyspace) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Partitions) > 0 {
+ for _, e := range m.Partitions {
+ l = e.Size()
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ }
+ l = len(m.ShardingColumnName)
+ if l > 0 {
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ if m.ShardingColumnType != 0 {
+ n += 1 + sovTopodata(uint64(m.ShardingColumnType))
+ }
+ if len(m.ServedFrom) > 0 {
+ for _, e := range m.ServedFrom {
+ l = e.Size()
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *SrvKeyspace_KeyspacePartition) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.ServedType != 0 {
+ n += 1 + sovTopodata(uint64(m.ServedType))
+ }
+ if len(m.ShardReferences) > 0 {
+ for _, e := range m.ShardReferences {
+ l = e.Size()
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ }
+ if len(m.ShardTabletControls) > 0 {
+ for _, e := range m.ShardTabletControls {
+ l = e.Size()
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *SrvKeyspace_ServedFrom) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.TabletType != 0 {
+ n += 1 + sovTopodata(uint64(m.TabletType))
+ }
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *CellInfo) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.ServerAddress)
+ if l > 0 {
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ l = len(m.Root)
+ if l > 0 {
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *CellsAlias) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Cells) > 0 {
+ for _, s := range m.Cells {
+ l = len(s)
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *TopoConfig) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.TopoType)
+ if l > 0 {
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ l = len(m.Server)
+ if l > 0 {
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ l = len(m.Root)
+ if l > 0 {
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ExternalVitessCluster) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.TopoConfig != nil {
+ l = m.TopoConfig.Size()
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ExternalClusters) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.VitessCluster) > 0 {
+ for _, e := range m.VitessCluster {
+ l = e.Size()
+ n += 1 + l + sovTopodata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func sovTopodata(x uint64) (n int) {
+ return (math_bits.Len64(x|1) + 6) / 7
+}
+func sozTopodata(x uint64) (n int) {
+ return sovTopodata(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+}
+func (m *KeyRange) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: KeyRange: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: KeyRange: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Start", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Start = append(m.Start[:0], dAtA[iNdEx:postIndex]...)
+ if m.Start == nil {
+ m.Start = []byte{}
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field End", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.End = append(m.End[:0], dAtA[iNdEx:postIndex]...)
+ if m.End == nil {
+ m.End = []byte{}
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTopodata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *TabletAlias) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: TabletAlias: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: TabletAlias: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cell", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Cell = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Uid", wireType)
+ }
+ m.Uid = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Uid |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTopodata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Tablet) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Tablet: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Tablet: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Alias", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Alias == nil {
+ m.Alias = &TabletAlias{}
+ }
+ if err := m.Alias.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Hostname", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Hostname = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PortMap", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.PortMap == nil {
+ m.PortMap = make(map[string]int32)
+ }
+ var mapkey string
+ var mapvalue int32
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ mapvalue |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipTopodata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.PortMap[mapkey] = mapvalue
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Shard", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Shard = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field KeyRange", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.KeyRange == nil {
+ m.KeyRange = &KeyRange{}
+ }
+ if err := m.KeyRange.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 8:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
+ }
+ m.Type = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Type |= TabletType(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 9:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field DbNameOverride", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.DbNameOverride = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 10:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Tags", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Tags == nil {
+ m.Tags = make(map[string]string)
+ }
+ var mapkey string
+ var mapvalue string
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipTopodata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.Tags[mapkey] = mapvalue
+ iNdEx = postIndex
+ case 12:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MysqlHostname", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.MysqlHostname = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 13:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MysqlPort", wireType)
+ }
+ m.MysqlPort = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.MysqlPort |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 14:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MasterTermStartTime", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.MasterTermStartTime == nil {
+ m.MasterTermStartTime = &vttime.Time{}
+ }
+ if err := m.MasterTermStartTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTopodata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Shard) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Shard: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Shard: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MasterAlias", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.MasterAlias == nil {
+ m.MasterAlias = &TabletAlias{}
+ }
+ if err := m.MasterAlias.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field KeyRange", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.KeyRange == nil {
+ m.KeyRange = &KeyRange{}
+ }
+ if err := m.KeyRange.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ServedTypes", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ServedTypes = append(m.ServedTypes, &Shard_ServedType{})
+ if err := m.ServedTypes[len(m.ServedTypes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SourceShards", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.SourceShards = append(m.SourceShards, &Shard_SourceShard{})
+ if err := m.SourceShards[len(m.SourceShards)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletControls", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.TabletControls = append(m.TabletControls, &Shard_TabletControl{})
+ if err := m.TabletControls[len(m.TabletControls)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 7:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field IsMasterServing", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.IsMasterServing = bool(v != 0)
+ case 8:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MasterTermStartTime", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.MasterTermStartTime == nil {
+ m.MasterTermStartTime = &vttime.Time{}
+ }
+ if err := m.MasterTermStartTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTopodata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Shard_ServedType) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ServedType: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ServedType: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletType", wireType)
+ }
+ m.TabletType = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TabletType |= TabletType(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cells", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Cells = append(m.Cells, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTopodata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Shard_SourceShard) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SourceShard: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SourceShard: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Uid", wireType)
+ }
+ m.Uid = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Uid |= uint32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Shard", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Shard = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field KeyRange", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.KeyRange == nil {
+ m.KeyRange = &KeyRange{}
+ }
+ if err := m.KeyRange.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Tables", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Tables = append(m.Tables, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTopodata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Shard_TabletControl) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: TabletControl: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: TabletControl: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletType", wireType)
+ }
+ m.TabletType = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TabletType |= TabletType(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cells", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Cells = append(m.Cells, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field BlacklistedTables", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.BlacklistedTables = append(m.BlacklistedTables, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 5:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Frozen", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Frozen = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTopodata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Keyspace) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Keyspace: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Keyspace: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ShardingColumnName", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ShardingColumnName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ShardingColumnType", wireType)
+ }
+ m.ShardingColumnType = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.ShardingColumnType |= KeyspaceIdType(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ServedFroms", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ServedFroms = append(m.ServedFroms, &Keyspace_ServedFrom{})
+ if err := m.ServedFroms[len(m.ServedFroms)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 5:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field KeyspaceType", wireType)
+ }
+ m.KeyspaceType = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.KeyspaceType |= KeyspaceType(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field BaseKeyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.BaseKeyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SnapshotTime", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.SnapshotTime == nil {
+ m.SnapshotTime = &vttime.Time{}
+ }
+ if err := m.SnapshotTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTopodata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Keyspace_ServedFrom) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ServedFrom: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ServedFrom: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletType", wireType)
+ }
+ m.TabletType = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TabletType |= TabletType(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cells", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Cells = append(m.Cells, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTopodata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ShardReplication) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ShardReplication: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ShardReplication: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Nodes", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Nodes = append(m.Nodes, &ShardReplication_Node{})
+ if err := m.Nodes[len(m.Nodes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTopodata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ShardReplication_Node) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Node: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Node: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletAlias", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.TabletAlias == nil {
+ m.TabletAlias = &TabletAlias{}
+ }
+ if err := m.TabletAlias.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTopodata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ShardReference) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ShardReference: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ShardReference: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field KeyRange", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.KeyRange == nil {
+ m.KeyRange = &KeyRange{}
+ }
+ if err := m.KeyRange.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTopodata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ShardTabletControl) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ShardTabletControl: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ShardTabletControl: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field KeyRange", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.KeyRange == nil {
+ m.KeyRange = &KeyRange{}
+ }
+ if err := m.KeyRange.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field QueryServiceDisabled", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.QueryServiceDisabled = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTopodata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *SrvKeyspace) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SrvKeyspace: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SrvKeyspace: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Partitions", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Partitions = append(m.Partitions, &SrvKeyspace_KeyspacePartition{})
+ if err := m.Partitions[len(m.Partitions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ShardingColumnName", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ShardingColumnName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ShardingColumnType", wireType)
+ }
+ m.ShardingColumnType = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.ShardingColumnType |= KeyspaceIdType(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ServedFrom", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ServedFrom = append(m.ServedFrom, &SrvKeyspace_ServedFrom{})
+ if err := m.ServedFrom[len(m.ServedFrom)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTopodata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *SrvKeyspace_KeyspacePartition) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: KeyspacePartition: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: KeyspacePartition: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ServedType", wireType)
+ }
+ m.ServedType = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.ServedType |= TabletType(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ShardReferences", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ShardReferences = append(m.ShardReferences, &ShardReference{})
+ if err := m.ShardReferences[len(m.ShardReferences)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ShardTabletControls", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ShardTabletControls = append(m.ShardTabletControls, &ShardTabletControl{})
+ if err := m.ShardTabletControls[len(m.ShardTabletControls)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTopodata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *SrvKeyspace_ServedFrom) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ServedFrom: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ServedFrom: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletType", wireType)
+ }
+ m.TabletType = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TabletType |= TabletType(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTopodata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *CellInfo) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: CellInfo: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: CellInfo: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ServerAddress", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ServerAddress = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Root", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Root = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTopodata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *CellsAlias) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: CellsAlias: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: CellsAlias: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cells", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Cells = append(m.Cells, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTopodata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *TopoConfig) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: TopoConfig: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: TopoConfig: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TopoType", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.TopoType = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Server", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Server = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Root", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Root = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTopodata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ExternalVitessCluster) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExternalVitessCluster: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExternalVitessCluster: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TopoConfig", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.TopoConfig == nil {
+ m.TopoConfig = &TopoConfig{}
+ }
+ if err := m.TopoConfig.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTopodata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ExternalClusters) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExternalClusters: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExternalClusters: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field VitessCluster", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.VitessCluster = append(m.VitessCluster, &ExternalVitessCluster{})
+ if err := m.VitessCluster[len(m.VitessCluster)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipTopodata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthTopodata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func skipTopodata(dAtA []byte) (n int, err error) {
+ l := len(dAtA)
+ iNdEx := 0
+ depth := 0
+ for iNdEx < l {
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ wireType := int(wire & 0x7)
+ switch wireType {
+ case 0:
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ iNdEx++
+ if dAtA[iNdEx-1] < 0x80 {
+ break
+ }
+ }
+ case 1:
+ iNdEx += 8
+ case 2:
+ var length int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowTopodata
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ length |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if length < 0 {
+ return 0, ErrInvalidLengthTopodata
+ }
+ iNdEx += length
+ case 3:
+ depth++
+ case 4:
+ if depth == 0 {
+ return 0, ErrUnexpectedEndOfGroupTopodata
+ }
+ depth--
+ case 5:
+ iNdEx += 4
+ default:
+ return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
+ }
+ if iNdEx < 0 {
+ return 0, ErrInvalidLengthTopodata
+ }
+ if depth == 0 {
+ return iNdEx, nil
+ }
+ }
+ return 0, io.ErrUnexpectedEOF
+}
+
+var (
+ ErrInvalidLengthTopodata = fmt.Errorf("proto: negative length found during unmarshaling")
+ ErrIntOverflowTopodata = fmt.Errorf("proto: integer overflow")
+ ErrUnexpectedEndOfGroupTopodata = fmt.Errorf("proto: unexpected end of group")
+)
diff --git a/go/vt/proto/vschema/vschema.pb.go b/go/vt/proto/vschema/vschema.pb.go
index 0cdf2bb471e..b399bc37a5c 100644
--- a/go/vt/proto/vschema/vschema.pb.go
+++ b/go/vt/proto/vschema/vschema.pb.go
@@ -1,14 +1,15 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: vschema.proto
package vschema
import (
fmt "fmt"
+ io "io"
math "math"
+ math_bits "math/bits"
proto "github.com/golang/protobuf/proto"
-
query "vitess.io/vitess/go/vt/proto/query"
)
@@ -40,18 +41,26 @@ func (*RoutingRules) ProtoMessage() {}
func (*RoutingRules) Descriptor() ([]byte, []int) {
return fileDescriptor_3f6849254fea3e77, []int{0}
}
-
func (m *RoutingRules) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_RoutingRules.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *RoutingRules) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_RoutingRules.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_RoutingRules.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *RoutingRules) XXX_Merge(src proto.Message) {
xxx_messageInfo_RoutingRules.Merge(m, src)
}
func (m *RoutingRules) XXX_Size() int {
- return xxx_messageInfo_RoutingRules.Size(m)
+ return m.Size()
}
func (m *RoutingRules) XXX_DiscardUnknown() {
xxx_messageInfo_RoutingRules.DiscardUnknown(m)
@@ -81,18 +90,26 @@ func (*RoutingRule) ProtoMessage() {}
func (*RoutingRule) Descriptor() ([]byte, []int) {
return fileDescriptor_3f6849254fea3e77, []int{1}
}
-
func (m *RoutingRule) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_RoutingRule.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *RoutingRule) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_RoutingRule.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_RoutingRule.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *RoutingRule) XXX_Merge(src proto.Message) {
xxx_messageInfo_RoutingRule.Merge(m, src)
}
func (m *RoutingRule) XXX_Size() int {
- return xxx_messageInfo_RoutingRule.Size(m)
+ return m.Size()
}
func (m *RoutingRule) XXX_DiscardUnknown() {
xxx_messageInfo_RoutingRule.DiscardUnknown(m)
@@ -133,18 +150,26 @@ func (*Keyspace) ProtoMessage() {}
func (*Keyspace) Descriptor() ([]byte, []int) {
return fileDescriptor_3f6849254fea3e77, []int{2}
}
-
func (m *Keyspace) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Keyspace.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Keyspace) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Keyspace.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Keyspace.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Keyspace) XXX_Merge(src proto.Message) {
xxx_messageInfo_Keyspace.Merge(m, src)
}
func (m *Keyspace) XXX_Size() int {
- return xxx_messageInfo_Keyspace.Size(m)
+ return m.Size()
}
func (m *Keyspace) XXX_DiscardUnknown() {
xxx_messageInfo_Keyspace.DiscardUnknown(m)
@@ -206,18 +231,26 @@ func (*Vindex) ProtoMessage() {}
func (*Vindex) Descriptor() ([]byte, []int) {
return fileDescriptor_3f6849254fea3e77, []int{3}
}
-
func (m *Vindex) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Vindex.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Vindex) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Vindex.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Vindex.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Vindex) XXX_Merge(src proto.Message) {
xxx_messageInfo_Vindex.Merge(m, src)
}
func (m *Vindex) XXX_Size() int {
- return xxx_messageInfo_Vindex.Size(m)
+ return m.Size()
}
func (m *Vindex) XXX_DiscardUnknown() {
xxx_messageInfo_Vindex.DiscardUnknown(m)
@@ -284,18 +317,26 @@ func (*Table) ProtoMessage() {}
func (*Table) Descriptor() ([]byte, []int) {
return fileDescriptor_3f6849254fea3e77, []int{4}
}
-
func (m *Table) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Table.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Table) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Table.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Table.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Table) XXX_Merge(src proto.Message) {
xxx_messageInfo_Table.Merge(m, src)
}
func (m *Table) XXX_Size() int {
- return xxx_messageInfo_Table.Size(m)
+ return m.Size()
}
func (m *Table) XXX_DiscardUnknown() {
xxx_messageInfo_Table.DiscardUnknown(m)
@@ -364,18 +405,26 @@ func (*ColumnVindex) ProtoMessage() {}
func (*ColumnVindex) Descriptor() ([]byte, []int) {
return fileDescriptor_3f6849254fea3e77, []int{5}
}
-
func (m *ColumnVindex) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ColumnVindex.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ColumnVindex) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ColumnVindex.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ColumnVindex.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ColumnVindex) XXX_Merge(src proto.Message) {
xxx_messageInfo_ColumnVindex.Merge(m, src)
}
func (m *ColumnVindex) XXX_Size() int {
- return xxx_messageInfo_ColumnVindex.Size(m)
+ return m.Size()
}
func (m *ColumnVindex) XXX_DiscardUnknown() {
xxx_messageInfo_ColumnVindex.DiscardUnknown(m)
@@ -420,18 +469,26 @@ func (*AutoIncrement) ProtoMessage() {}
func (*AutoIncrement) Descriptor() ([]byte, []int) {
return fileDescriptor_3f6849254fea3e77, []int{6}
}
-
func (m *AutoIncrement) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_AutoIncrement.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *AutoIncrement) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_AutoIncrement.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_AutoIncrement.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *AutoIncrement) XXX_Merge(src proto.Message) {
xxx_messageInfo_AutoIncrement.Merge(m, src)
}
func (m *AutoIncrement) XXX_Size() int {
- return xxx_messageInfo_AutoIncrement.Size(m)
+ return m.Size()
}
func (m *AutoIncrement) XXX_DiscardUnknown() {
xxx_messageInfo_AutoIncrement.DiscardUnknown(m)
@@ -468,18 +525,26 @@ func (*Column) ProtoMessage() {}
func (*Column) Descriptor() ([]byte, []int) {
return fileDescriptor_3f6849254fea3e77, []int{7}
}
-
func (m *Column) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Column.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Column) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Column.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Column.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Column) XXX_Merge(src proto.Message) {
xxx_messageInfo_Column.Merge(m, src)
}
func (m *Column) XXX_Size() int {
- return xxx_messageInfo_Column.Size(m)
+ return m.Size()
}
func (m *Column) XXX_DiscardUnknown() {
xxx_messageInfo_Column.DiscardUnknown(m)
@@ -517,18 +582,26 @@ func (*SrvVSchema) ProtoMessage() {}
func (*SrvVSchema) Descriptor() ([]byte, []int) {
return fileDescriptor_3f6849254fea3e77, []int{8}
}
-
func (m *SrvVSchema) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_SrvVSchema.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *SrvVSchema) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_SrvVSchema.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_SrvVSchema.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *SrvVSchema) XXX_Merge(src proto.Message) {
xxx_messageInfo_SrvVSchema.Merge(m, src)
}
func (m *SrvVSchema) XXX_Size() int {
- return xxx_messageInfo_SrvVSchema.Size(m)
+ return m.Size()
}
func (m *SrvVSchema) XXX_DiscardUnknown() {
xxx_messageInfo_SrvVSchema.DiscardUnknown(m)
@@ -569,48 +642,2562 @@ func init() {
func init() { proto.RegisterFile("vschema.proto", fileDescriptor_3f6849254fea3e77) }
var fileDescriptor_3f6849254fea3e77 = []byte{
- // 673 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x54, 0xcf, 0x4e, 0xdb, 0x4e,
- 0x10, 0x96, 0x13, 0x62, 0x92, 0x31, 0x09, 0xbf, 0xdf, 0x0a, 0xa8, 0x1b, 0x84, 0x88, 0x2c, 0xda,
- 0xa6, 0x3d, 0x24, 0x52, 0x50, 0x25, 0x9a, 0x8a, 0xaa, 0x14, 0x71, 0x40, 0x45, 0x6a, 0x65, 0x10,
- 0x87, 0x5e, 0x2c, 0xe3, 0x6c, 0x61, 0x45, 0xe2, 0x35, 0xbb, 0x6b, 0x97, 0x3c, 0x4a, 0xaf, 0x7d,
- 0xad, 0x3e, 0x42, 0x5f, 0xa2, 0xf2, 0xfe, 0x31, 0x1b, 0x48, 0x6f, 0x3b, 0x3b, 0xf3, 0x7d, 0xf3,
- 0xed, 0xec, 0xcc, 0x40, 0xbb, 0xe0, 0xc9, 0x0d, 0x9e, 0xc5, 0x83, 0x8c, 0x51, 0x41, 0xd1, 0xaa,
- 0x36, 0xbb, 0xde, 0x5d, 0x8e, 0xd9, 0x5c, 0xdd, 0x06, 0x63, 0x58, 0x0b, 0x69, 0x2e, 0x48, 0x7a,
- 0x1d, 0xe6, 0x53, 0xcc, 0xd1, 0x1b, 0x68, 0xb0, 0xf2, 0xe0, 0x3b, 0xbd, 0x7a, 0xdf, 0x1b, 0x6d,
- 0x0c, 0x0c, 0x89, 0x15, 0x15, 0xaa, 0x90, 0xe0, 0x14, 0x3c, 0xeb, 0x16, 0xed, 0x00, 0x7c, 0x67,
- 0x74, 0x16, 0x89, 0xf8, 0x6a, 0x8a, 0x7d, 0xa7, 0xe7, 0xf4, 0x5b, 0x61, 0xab, 0xbc, 0xb9, 0x28,
- 0x2f, 0xd0, 0x36, 0xb4, 0x04, 0x55, 0x4e, 0xee, 0xd7, 0x7a, 0xf5, 0x7e, 0x2b, 0x6c, 0x0a, 0x2a,
- 0x7d, 0x3c, 0xf8, 0x53, 0x83, 0xe6, 0x67, 0x3c, 0xe7, 0x59, 0x9c, 0x60, 0xe4, 0xc3, 0x2a, 0xbf,
- 0x89, 0xd9, 0x04, 0x4f, 0x24, 0x4b, 0x33, 0x34, 0x26, 0x7a, 0x0f, 0xcd, 0x82, 0xa4, 0x13, 0x7c,
- 0xaf, 0x29, 0xbc, 0xd1, 0x6e, 0x25, 0xd0, 0xc0, 0x07, 0x97, 0x3a, 0xe2, 0x24, 0x15, 0x6c, 0x1e,
- 0x56, 0x00, 0xf4, 0x16, 0x5c, 0x9d, 0xbd, 0x2e, 0xa1, 0x3b, 0x4f, 0xa1, 0x4a, 0x8d, 0x02, 0xea,
- 0x60, 0x74, 0x00, 0x3e, 0xc3, 0x77, 0x39, 0x61, 0x38, 0xc2, 0xf7, 0xd9, 0x94, 0x24, 0x44, 0x44,
- 0x4c, 0x3d, 0xdb, 0x5f, 0x91, 0xf2, 0xb6, 0xb4, 0xff, 0x44, 0xbb, 0x75, 0x51, 0xba, 0x67, 0xd0,
- 0x5e, 0xd0, 0x82, 0xfe, 0x83, 0xfa, 0x2d, 0x9e, 0xeb, 0xd2, 0x94, 0x47, 0xf4, 0x02, 0x1a, 0x45,
- 0x3c, 0xcd, 0xb1, 0x5f, 0xeb, 0x39, 0x7d, 0x6f, 0xb4, 0x5e, 0x49, 0x52, 0xc0, 0x50, 0x79, 0xc7,
- 0xb5, 0x03, 0xa7, 0x7b, 0x0a, 0x9e, 0x25, 0x6f, 0x09, 0xd7, 0xde, 0x22, 0x57, 0xa7, 0xe2, 0x92,
- 0x30, 0x8b, 0x2a, 0xf8, 0xe5, 0x80, 0xab, 0x12, 0x20, 0x04, 0x2b, 0x62, 0x9e, 0x99, 0xef, 0x92,
- 0x67, 0xb4, 0x0f, 0x6e, 0x16, 0xb3, 0x78, 0x66, 0x6a, 0xbc, 0xfd, 0x48, 0xd5, 0xe0, 0xab, 0xf4,
- 0xea, 0x32, 0xa9, 0x50, 0xb4, 0x01, 0x0d, 0xfa, 0x23, 0xc5, 0xcc, 0xaf, 0x4b, 0x26, 0x65, 0x74,
- 0xdf, 0x81, 0x67, 0x05, 0x2f, 0x11, 0xbd, 0x61, 0x8b, 0x6e, 0xd9, 0x22, 0x7f, 0xd6, 0xa0, 0xa1,
- 0x3a, 0x67, 0x99, 0xc6, 0x0f, 0xb0, 0x9e, 0xd0, 0x69, 0x3e, 0x4b, 0xa3, 0x47, 0x0d, 0xb1, 0x59,
- 0x89, 0x3d, 0x96, 0x7e, 0x5d, 0xc8, 0x4e, 0x62, 0x59, 0x98, 0xa3, 0x43, 0xe8, 0xc4, 0xb9, 0xa0,
- 0x11, 0x49, 0x13, 0x86, 0x67, 0x38, 0x15, 0x52, 0xb7, 0x37, 0xda, 0xaa, 0xe0, 0x47, 0xb9, 0xa0,
- 0xa7, 0xc6, 0x1b, 0xb6, 0x63, 0xdb, 0x44, 0xaf, 0x61, 0x55, 0x11, 0x72, 0x7f, 0x45, 0xa6, 0x5d,
- 0x7f, 0x94, 0x36, 0x34, 0x7e, 0xb4, 0x05, 0x6e, 0x46, 0xd2, 0x14, 0x4f, 0xfc, 0x86, 0xd4, 0xaf,
- 0x2d, 0x34, 0x86, 0xe7, 0xfa, 0x05, 0x53, 0xc2, 0x45, 0x14, 0xe7, 0xe2, 0x86, 0x32, 0x22, 0x62,
- 0x41, 0x0a, 0xec, 0xbb, 0xb2, 0xb1, 0x9e, 0xa9, 0x80, 0x33, 0xc2, 0xc5, 0x91, 0xed, 0x0e, 0x2e,
- 0x60, 0xcd, 0x7e, 0x5d, 0x99, 0x43, 0x85, 0xea, 0x1a, 0x69, 0xab, 0xac, 0x5c, 0x1a, 0xcf, 0x4c,
- 0x71, 0xe5, 0xb9, 0x9c, 0x2e, 0x23, 0xbd, 0x2e, 0xa7, 0xd0, 0x98, 0xc1, 0x31, 0xb4, 0x17, 0x1e,
- 0xfd, 0x4f, 0xda, 0x2e, 0x34, 0x39, 0xbe, 0xcb, 0x71, 0x9a, 0x18, 0xea, 0xca, 0x0e, 0x0e, 0xc1,
- 0x3d, 0x5e, 0x4c, 0xee, 0x58, 0xc9, 0x77, 0xf5, 0x57, 0x96, 0xa8, 0xce, 0xc8, 0x1b, 0xa8, 0x55,
- 0x74, 0x31, 0xcf, 0xb0, 0xfa, 0xd7, 0xe0, 0xb7, 0x03, 0x70, 0xce, 0x8a, 0xcb, 0x73, 0x59, 0x4c,
- 0xf4, 0x11, 0x5a, 0xb7, 0x7a, 0x38, 0xcd, 0x4a, 0x0a, 0xaa, 0x4a, 0x3f, 0xc4, 0x55, 0x13, 0xac,
- 0x9b, 0xf2, 0x01, 0x84, 0xc6, 0xd0, 0xd6, 0xd3, 0x1a, 0xa9, 0xc5, 0xa6, 0xa6, 0x63, 0x73, 0xd9,
- 0x62, 0xe3, 0xe1, 0x1a, 0xb3, 0xac, 0xee, 0x17, 0xe8, 0x2c, 0x12, 0x2f, 0x69, 0xe0, 0x57, 0x8b,
- 0x53, 0xf7, 0xff, 0x93, 0xa5, 0x62, 0xf5, 0xf4, 0xa7, 0x97, 0xdf, 0xf6, 0x0a, 0x22, 0x30, 0xe7,
- 0x03, 0x42, 0x87, 0xea, 0x34, 0xbc, 0xa6, 0xc3, 0x42, 0x0c, 0xe5, 0x36, 0x1e, 0x6a, 0xec, 0x95,
- 0x2b, 0xcd, 0xfd, 0xbf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xb8, 0xa7, 0x99, 0x19, 0xc3, 0x05, 0x00,
- 0x00,
+ // 695 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x54, 0xc1, 0x4e, 0xdb, 0x4c,
+ 0x10, 0xfe, 0x9d, 0x90, 0x90, 0x8c, 0x49, 0xf8, 0xbb, 0x02, 0xea, 0x06, 0x11, 0x22, 0x8b, 0xaa,
+ 0x69, 0x0f, 0x89, 0x14, 0xd4, 0x8a, 0xa6, 0xa2, 0x2a, 0x45, 0x1c, 0x50, 0x91, 0x5a, 0x19, 0xc4,
+ 0xa1, 0x17, 0xcb, 0x38, 0x5b, 0x58, 0x91, 0x78, 0xcd, 0xee, 0xda, 0x25, 0x6f, 0xd2, 0x5e, 0xfb,
+ 0x34, 0x3d, 0xf6, 0xde, 0x4b, 0x45, 0x8f, 0x7d, 0x89, 0xca, 0xbb, 0x6b, 0xb3, 0x81, 0xf4, 0xb6,
+ 0xdf, 0xce, 0xcc, 0x37, 0xdf, 0xce, 0xce, 0x0c, 0x34, 0x52, 0x1e, 0x5e, 0xe0, 0x49, 0xd0, 0x8b,
+ 0x19, 0x15, 0x14, 0x2d, 0x6a, 0xd8, 0xb2, 0xaf, 0x12, 0xcc, 0xa6, 0xea, 0xd6, 0x1d, 0xc2, 0x92,
+ 0x47, 0x13, 0x41, 0xa2, 0x73, 0x2f, 0x19, 0x63, 0x8e, 0x9e, 0x41, 0x85, 0x65, 0x07, 0xc7, 0xea,
+ 0x94, 0xbb, 0xf6, 0x60, 0xa5, 0x97, 0x93, 0x18, 0x5e, 0x9e, 0x72, 0x71, 0x0f, 0xc1, 0x36, 0x6e,
+ 0xd1, 0x06, 0xc0, 0x27, 0x46, 0x27, 0xbe, 0x08, 0xce, 0xc6, 0xd8, 0xb1, 0x3a, 0x56, 0xb7, 0xee,
+ 0xd5, 0xb3, 0x9b, 0x93, 0xec, 0x02, 0xad, 0x43, 0x5d, 0x50, 0x65, 0xe4, 0x4e, 0xa9, 0x53, 0xee,
+ 0xd6, 0xbd, 0x9a, 0xa0, 0xd2, 0xc6, 0xdd, 0x3f, 0x25, 0xa8, 0xbd, 0xc3, 0x53, 0x1e, 0x07, 0x21,
+ 0x46, 0x0e, 0x2c, 0xf2, 0x8b, 0x80, 0x8d, 0xf0, 0x48, 0xb2, 0xd4, 0xbc, 0x1c, 0xa2, 0x57, 0x50,
+ 0x4b, 0x49, 0x34, 0xc2, 0xd7, 0x9a, 0xc2, 0x1e, 0x6c, 0x16, 0x02, 0xf3, 0xf0, 0xde, 0xa9, 0xf6,
+ 0x38, 0x88, 0x04, 0x9b, 0x7a, 0x45, 0x00, 0x7a, 0x0e, 0x55, 0x9d, 0xbd, 0x2c, 0x43, 0x37, 0xee,
+ 0x87, 0x2a, 0x35, 0x2a, 0x50, 0x3b, 0xa3, 0x1d, 0x70, 0x18, 0xbe, 0x4a, 0x08, 0xc3, 0x3e, 0xbe,
+ 0x8e, 0xc7, 0x24, 0x24, 0xc2, 0x67, 0xea, 0xd9, 0xce, 0x82, 0x94, 0xb7, 0xa6, 0xed, 0x07, 0xda,
+ 0xac, 0x8b, 0xd2, 0x3a, 0x82, 0xc6, 0x8c, 0x16, 0xf4, 0x3f, 0x94, 0x2f, 0xf1, 0x54, 0x97, 0x26,
+ 0x3b, 0xa2, 0xc7, 0x50, 0x49, 0x83, 0x71, 0x82, 0x9d, 0x52, 0xc7, 0xea, 0xda, 0x83, 0xe5, 0x42,
+ 0x92, 0x0a, 0xf4, 0x94, 0x75, 0x58, 0xda, 0xb1, 0x5a, 0x87, 0x60, 0x1b, 0xf2, 0xe6, 0x70, 0x6d,
+ 0xcd, 0x72, 0x35, 0x0b, 0x2e, 0x19, 0x66, 0x50, 0xb9, 0xdf, 0x2c, 0xa8, 0xaa, 0x04, 0x08, 0xc1,
+ 0x82, 0x98, 0xc6, 0xf9, 0x77, 0xc9, 0x33, 0xda, 0x86, 0x6a, 0x1c, 0xb0, 0x60, 0x92, 0xd7, 0x78,
+ 0xfd, 0x8e, 0xaa, 0xde, 0x07, 0x69, 0xd5, 0x65, 0x52, 0xae, 0x68, 0x05, 0x2a, 0xf4, 0x73, 0x84,
+ 0x99, 0x53, 0x96, 0x4c, 0x0a, 0xb4, 0x5e, 0x82, 0x6d, 0x38, 0xcf, 0x11, 0xbd, 0x62, 0x8a, 0xae,
+ 0x9b, 0x22, 0xbf, 0x96, 0xa0, 0xa2, 0x3a, 0x67, 0x9e, 0xc6, 0xd7, 0xb0, 0x1c, 0xd2, 0x71, 0x32,
+ 0x89, 0xfc, 0x3b, 0x0d, 0xb1, 0x5a, 0x88, 0xdd, 0x97, 0x76, 0x5d, 0xc8, 0x66, 0x68, 0x20, 0xcc,
+ 0xd1, 0x2e, 0x34, 0x83, 0x44, 0x50, 0x9f, 0x44, 0x21, 0xc3, 0x13, 0x1c, 0x09, 0xa9, 0xdb, 0x1e,
+ 0xac, 0x15, 0xe1, 0x7b, 0x89, 0xa0, 0x87, 0xb9, 0xd5, 0x6b, 0x04, 0x26, 0x44, 0x4f, 0x61, 0x51,
+ 0x11, 0x72, 0x67, 0x41, 0xa6, 0x5d, 0xbe, 0x93, 0xd6, 0xcb, 0xed, 0x68, 0x0d, 0xaa, 0x31, 0x89,
+ 0x22, 0x3c, 0x72, 0x2a, 0x52, 0xbf, 0x46, 0x68, 0x08, 0x8f, 0xf4, 0x0b, 0xc6, 0x84, 0x0b, 0x3f,
+ 0x48, 0xc4, 0x05, 0x65, 0x44, 0x04, 0x82, 0xa4, 0xd8, 0xa9, 0xca, 0xc6, 0x7a, 0xa8, 0x1c, 0x8e,
+ 0x08, 0x17, 0x7b, 0xa6, 0xd9, 0x3d, 0x81, 0x25, 0xf3, 0x75, 0x59, 0x0e, 0xe5, 0xaa, 0x6b, 0xa4,
+ 0x51, 0x56, 0xb9, 0x28, 0x98, 0xe4, 0xc5, 0x95, 0xe7, 0x6c, 0xba, 0x72, 0xe9, 0x65, 0x39, 0x85,
+ 0x39, 0x74, 0xf7, 0xa1, 0x31, 0xf3, 0xe8, 0x7f, 0xd2, 0xb6, 0xa0, 0xc6, 0xf1, 0x55, 0x82, 0xa3,
+ 0x30, 0xa7, 0x2e, 0xb0, 0xbb, 0x0b, 0xd5, 0xfd, 0xd9, 0xe4, 0x96, 0x91, 0x7c, 0x53, 0x7f, 0x65,
+ 0x16, 0xd5, 0x1c, 0xd8, 0x3d, 0xb5, 0x8a, 0x4e, 0xa6, 0x31, 0x56, 0xff, 0xea, 0xfe, 0xb4, 0x00,
+ 0x8e, 0x59, 0x7a, 0x7a, 0x2c, 0x8b, 0x89, 0xde, 0x40, 0xfd, 0x52, 0x0f, 0x67, 0xbe, 0x92, 0xdc,
+ 0xa2, 0xd2, 0xb7, 0x7e, 0xc5, 0x04, 0xeb, 0xa6, 0xbc, 0x0d, 0x42, 0x43, 0x68, 0xe8, 0x69, 0xf5,
+ 0xd5, 0x62, 0x53, 0xd3, 0xb1, 0x3a, 0x6f, 0xb1, 0x71, 0x6f, 0x89, 0x19, 0xa8, 0xf5, 0x1e, 0x9a,
+ 0xb3, 0xc4, 0x73, 0x1a, 0xf8, 0xc9, 0xec, 0xd4, 0x3d, 0xb8, 0xb7, 0x54, 0x8c, 0x9e, 0x7e, 0xfb,
+ 0xe2, 0xfb, 0x4d, 0xdb, 0xfa, 0x71, 0xd3, 0xb6, 0x7e, 0xdd, 0xb4, 0xad, 0x2f, 0xbf, 0xdb, 0xff,
+ 0x7d, 0xdc, 0x4a, 0x89, 0xc0, 0x9c, 0xf7, 0x08, 0xed, 0xab, 0x53, 0xff, 0x9c, 0xf6, 0x53, 0xd1,
+ 0x97, 0xdb, 0xb9, 0xaf, 0xb9, 0xce, 0xaa, 0x12, 0x6e, 0xff, 0x0d, 0x00, 0x00, 0xff, 0xff, 0x68,
+ 0x39, 0x77, 0x25, 0xd3, 0x05, 0x00, 0x00,
+}
+
+func (m *RoutingRules) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RoutingRules) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RoutingRules) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Rules) > 0 {
+ for iNdEx := len(m.Rules) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Rules[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVschema(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RoutingRule) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
}
+
+func (m *RoutingRule) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RoutingRule) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.ToTables) > 0 {
+ for iNdEx := len(m.ToTables) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.ToTables[iNdEx])
+ copy(dAtA[i:], m.ToTables[iNdEx])
+ i = encodeVarintVschema(dAtA, i, uint64(len(m.ToTables[iNdEx])))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.FromTable) > 0 {
+ i -= len(m.FromTable)
+ copy(dAtA[i:], m.FromTable)
+ i = encodeVarintVschema(dAtA, i, uint64(len(m.FromTable)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Keyspace) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Keyspace) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Keyspace) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.RequireExplicitRouting {
+ i--
+ if m.RequireExplicitRouting {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x20
+ }
+ if len(m.Tables) > 0 {
+ for k := range m.Tables {
+ v := m.Tables[k]
+ baseI := i
+ if v != nil {
+ {
+ size, err := v.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVschema(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintVschema(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintVschema(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if len(m.Vindexes) > 0 {
+ for k := range m.Vindexes {
+ v := m.Vindexes[k]
+ baseI := i
+ if v != nil {
+ {
+ size, err := v.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVschema(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintVschema(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintVschema(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if m.Sharded {
+ i--
+ if m.Sharded {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Vindex) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Vindex) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Vindex) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Owner) > 0 {
+ i -= len(m.Owner)
+ copy(dAtA[i:], m.Owner)
+ i = encodeVarintVschema(dAtA, i, uint64(len(m.Owner)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Params) > 0 {
+ for k := range m.Params {
+ v := m.Params[k]
+ baseI := i
+ i -= len(v)
+ copy(dAtA[i:], v)
+ i = encodeVarintVschema(dAtA, i, uint64(len(v)))
+ i--
+ dAtA[i] = 0x12
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintVschema(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintVschema(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Type) > 0 {
+ i -= len(m.Type)
+ copy(dAtA[i:], m.Type)
+ i = encodeVarintVschema(dAtA, i, uint64(len(m.Type)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Table) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Table) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Table) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.ColumnListAuthoritative {
+ i--
+ if m.ColumnListAuthoritative {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x30
+ }
+ if len(m.Pinned) > 0 {
+ i -= len(m.Pinned)
+ copy(dAtA[i:], m.Pinned)
+ i = encodeVarintVschema(dAtA, i, uint64(len(m.Pinned)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if len(m.Columns) > 0 {
+ for iNdEx := len(m.Columns) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Columns[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVschema(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if m.AutoIncrement != nil {
+ {
+ size, err := m.AutoIncrement.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVschema(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.ColumnVindexes) > 0 {
+ for iNdEx := len(m.ColumnVindexes) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.ColumnVindexes[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVschema(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Type) > 0 {
+ i -= len(m.Type)
+ copy(dAtA[i:], m.Type)
+ i = encodeVarintVschema(dAtA, i, uint64(len(m.Type)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ColumnVindex) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ColumnVindex) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ColumnVindex) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Columns) > 0 {
+ for iNdEx := len(m.Columns) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Columns[iNdEx])
+ copy(dAtA[i:], m.Columns[iNdEx])
+ i = encodeVarintVschema(dAtA, i, uint64(len(m.Columns[iNdEx])))
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = encodeVarintVschema(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Column) > 0 {
+ i -= len(m.Column)
+ copy(dAtA[i:], m.Column)
+ i = encodeVarintVschema(dAtA, i, uint64(len(m.Column)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *AutoIncrement) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *AutoIncrement) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *AutoIncrement) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Sequence) > 0 {
+ i -= len(m.Sequence)
+ copy(dAtA[i:], m.Sequence)
+ i = encodeVarintVschema(dAtA, i, uint64(len(m.Sequence)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Column) > 0 {
+ i -= len(m.Column)
+ copy(dAtA[i:], m.Column)
+ i = encodeVarintVschema(dAtA, i, uint64(len(m.Column)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Column) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Column) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Column) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Type != 0 {
+ i = encodeVarintVschema(dAtA, i, uint64(m.Type))
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = encodeVarintVschema(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *SrvVSchema) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *SrvVSchema) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *SrvVSchema) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.RoutingRules != nil {
+ {
+ size, err := m.RoutingRules.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVschema(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Keyspaces) > 0 {
+ for k := range m.Keyspaces {
+ v := m.Keyspaces[k]
+ baseI := i
+ if v != nil {
+ {
+ size, err := v.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVschema(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintVschema(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintVschema(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func encodeVarintVschema(dAtA []byte, offset int, v uint64) int {
+ offset -= sovVschema(v)
+ base := offset
+ for v >= 1<<7 {
+ dAtA[offset] = uint8(v&0x7f | 0x80)
+ v >>= 7
+ offset++
+ }
+ dAtA[offset] = uint8(v)
+ return base
+}
+func (m *RoutingRules) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Rules) > 0 {
+ for _, e := range m.Rules {
+ l = e.Size()
+ n += 1 + l + sovVschema(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RoutingRule) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.FromTable)
+ if l > 0 {
+ n += 1 + l + sovVschema(uint64(l))
+ }
+ if len(m.ToTables) > 0 {
+ for _, s := range m.ToTables {
+ l = len(s)
+ n += 1 + l + sovVschema(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Keyspace) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Sharded {
+ n += 2
+ }
+ if len(m.Vindexes) > 0 {
+ for k, v := range m.Vindexes {
+ _ = k
+ _ = v
+ l = 0
+ if v != nil {
+ l = v.Size()
+ l += 1 + sovVschema(uint64(l))
+ }
+ mapEntrySize := 1 + len(k) + sovVschema(uint64(len(k))) + l
+ n += mapEntrySize + 1 + sovVschema(uint64(mapEntrySize))
+ }
+ }
+ if len(m.Tables) > 0 {
+ for k, v := range m.Tables {
+ _ = k
+ _ = v
+ l = 0
+ if v != nil {
+ l = v.Size()
+ l += 1 + sovVschema(uint64(l))
+ }
+ mapEntrySize := 1 + len(k) + sovVschema(uint64(len(k))) + l
+ n += mapEntrySize + 1 + sovVschema(uint64(mapEntrySize))
+ }
+ }
+ if m.RequireExplicitRouting {
+ n += 2
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Vindex) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Type)
+ if l > 0 {
+ n += 1 + l + sovVschema(uint64(l))
+ }
+ if len(m.Params) > 0 {
+ for k, v := range m.Params {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovVschema(uint64(len(k))) + 1 + len(v) + sovVschema(uint64(len(v)))
+ n += mapEntrySize + 1 + sovVschema(uint64(mapEntrySize))
+ }
+ }
+ l = len(m.Owner)
+ if l > 0 {
+ n += 1 + l + sovVschema(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Table) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Type)
+ if l > 0 {
+ n += 1 + l + sovVschema(uint64(l))
+ }
+ if len(m.ColumnVindexes) > 0 {
+ for _, e := range m.ColumnVindexes {
+ l = e.Size()
+ n += 1 + l + sovVschema(uint64(l))
+ }
+ }
+ if m.AutoIncrement != nil {
+ l = m.AutoIncrement.Size()
+ n += 1 + l + sovVschema(uint64(l))
+ }
+ if len(m.Columns) > 0 {
+ for _, e := range m.Columns {
+ l = e.Size()
+ n += 1 + l + sovVschema(uint64(l))
+ }
+ }
+ l = len(m.Pinned)
+ if l > 0 {
+ n += 1 + l + sovVschema(uint64(l))
+ }
+ if m.ColumnListAuthoritative {
+ n += 2
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ColumnVindex) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Column)
+ if l > 0 {
+ n += 1 + l + sovVschema(uint64(l))
+ }
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovVschema(uint64(l))
+ }
+ if len(m.Columns) > 0 {
+ for _, s := range m.Columns {
+ l = len(s)
+ n += 1 + l + sovVschema(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *AutoIncrement) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Column)
+ if l > 0 {
+ n += 1 + l + sovVschema(uint64(l))
+ }
+ l = len(m.Sequence)
+ if l > 0 {
+ n += 1 + l + sovVschema(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Column) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovVschema(uint64(l))
+ }
+ if m.Type != 0 {
+ n += 1 + sovVschema(uint64(m.Type))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *SrvVSchema) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Keyspaces) > 0 {
+ for k, v := range m.Keyspaces {
+ _ = k
+ _ = v
+ l = 0
+ if v != nil {
+ l = v.Size()
+ l += 1 + sovVschema(uint64(l))
+ }
+ mapEntrySize := 1 + len(k) + sovVschema(uint64(len(k))) + l
+ n += mapEntrySize + 1 + sovVschema(uint64(mapEntrySize))
+ }
+ }
+ if m.RoutingRules != nil {
+ l = m.RoutingRules.Size()
+ n += 1 + l + sovVschema(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func sovVschema(x uint64) (n int) {
+ return (math_bits.Len64(x|1) + 6) / 7
+}
+func sozVschema(x uint64) (n int) {
+ return sovVschema(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+}
+func (m *RoutingRules) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RoutingRules: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RoutingRules: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Rules", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Rules = append(m.Rules, &RoutingRule{})
+ if err := m.Rules[len(m.Rules)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVschema(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RoutingRule) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RoutingRule: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RoutingRule: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field FromTable", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.FromTable = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ToTables", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ToTables = append(m.ToTables, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVschema(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Keyspace) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Keyspace: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Keyspace: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Sharded", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Sharded = bool(v != 0)
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Vindexes", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Vindexes == nil {
+ m.Vindexes = make(map[string]*Vindex)
+ }
+ var mapkey string
+ var mapvalue *Vindex
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var mapmsglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ mapmsglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if mapmsglen < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postmsgIndex := iNdEx + mapmsglen
+ if postmsgIndex < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postmsgIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = &Vindex{}
+ if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
+ return err
+ }
+ iNdEx = postmsgIndex
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipVschema(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.Vindexes[mapkey] = mapvalue
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Tables", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Tables == nil {
+ m.Tables = make(map[string]*Table)
+ }
+ var mapkey string
+ var mapvalue *Table
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var mapmsglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ mapmsglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if mapmsglen < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postmsgIndex := iNdEx + mapmsglen
+ if postmsgIndex < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postmsgIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = &Table{}
+ if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
+ return err
+ }
+ iNdEx = postmsgIndex
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipVschema(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.Tables[mapkey] = mapvalue
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RequireExplicitRouting", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.RequireExplicitRouting = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVschema(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Vindex) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Vindex: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Vindex: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Type = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Params", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Params == nil {
+ m.Params = make(map[string]string)
+ }
+ var mapkey string
+ var mapvalue string
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipVschema(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.Params[mapkey] = mapvalue
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Owner", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Owner = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVschema(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Table) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Table: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Table: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Type = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ColumnVindexes", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ColumnVindexes = append(m.ColumnVindexes, &ColumnVindex{})
+ if err := m.ColumnVindexes[len(m.ColumnVindexes)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field AutoIncrement", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.AutoIncrement == nil {
+ m.AutoIncrement = &AutoIncrement{}
+ }
+ if err := m.AutoIncrement.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Columns", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Columns = append(m.Columns, &Column{})
+ if err := m.Columns[len(m.Columns)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Pinned", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Pinned = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 6:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ColumnListAuthoritative", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.ColumnListAuthoritative = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVschema(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ColumnVindex) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ColumnVindex: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ColumnVindex: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Column", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Column = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Columns", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Columns = append(m.Columns, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVschema(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *AutoIncrement) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: AutoIncrement: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: AutoIncrement: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Column", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Column = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Sequence", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Sequence = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVschema(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Column) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Column: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Column: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
+ }
+ m.Type = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Type |= query.Type(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVschema(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *SrvVSchema) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: SrvVSchema: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: SrvVSchema: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspaces", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Keyspaces == nil {
+ m.Keyspaces = make(map[string]*Keyspace)
+ }
+ var mapkey string
+ var mapvalue *Keyspace
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var mapmsglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ mapmsglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if mapmsglen < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postmsgIndex := iNdEx + mapmsglen
+ if postmsgIndex < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postmsgIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = &Keyspace{}
+ if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
+ return err
+ }
+ iNdEx = postmsgIndex
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipVschema(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.Keyspaces[mapkey] = mapvalue
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RoutingRules", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVschema
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.RoutingRules == nil {
+ m.RoutingRules = &RoutingRules{}
+ }
+ if err := m.RoutingRules.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVschema(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVschema
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func skipVschema(dAtA []byte) (n int, err error) {
+ l := len(dAtA)
+ iNdEx := 0
+ depth := 0
+ for iNdEx < l {
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ wireType := int(wire & 0x7)
+ switch wireType {
+ case 0:
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ iNdEx++
+ if dAtA[iNdEx-1] < 0x80 {
+ break
+ }
+ }
+ case 1:
+ iNdEx += 8
+ case 2:
+ var length int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowVschema
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ length |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if length < 0 {
+ return 0, ErrInvalidLengthVschema
+ }
+ iNdEx += length
+ case 3:
+ depth++
+ case 4:
+ if depth == 0 {
+ return 0, ErrUnexpectedEndOfGroupVschema
+ }
+ depth--
+ case 5:
+ iNdEx += 4
+ default:
+ return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
+ }
+ if iNdEx < 0 {
+ return 0, ErrInvalidLengthVschema
+ }
+ if depth == 0 {
+ return iNdEx, nil
+ }
+ }
+ return 0, io.ErrUnexpectedEOF
+}
+
+var (
+ ErrInvalidLengthVschema = fmt.Errorf("proto: negative length found during unmarshaling")
+ ErrIntOverflowVschema = fmt.Errorf("proto: integer overflow")
+ ErrUnexpectedEndOfGroupVschema = fmt.Errorf("proto: unexpected end of group")
+)
diff --git a/go/vt/proto/vtadmin/vtadmin.pb.go b/go/vt/proto/vtadmin/vtadmin.pb.go
index c65c6cc7f42..90beb3595b4 100644
--- a/go/vt/proto/vtadmin/vtadmin.pb.go
+++ b/go/vt/proto/vtadmin/vtadmin.pb.go
@@ -1,4 +1,4 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: vtadmin.proto
package vtadmin
@@ -6,14 +6,18 @@ package vtadmin
import (
context "context"
fmt "fmt"
+ io "io"
math "math"
+ math_bits "math/bits"
proto "github.com/golang/protobuf/proto"
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
-
+ tabletmanagerdata "vitess.io/vitess/go/vt/proto/tabletmanagerdata"
topodata "vitess.io/vitess/go/vt/proto/topodata"
+ vschema "vitess.io/vitess/go/vt/proto/vschema"
+ vtctldata "vitess.io/vitess/go/vt/proto/vtctldata"
)
// Reference imports to suppress errors if they are not otherwise used.
@@ -52,7 +56,7 @@ func (x Tablet_ServingState) String() string {
}
func (Tablet_ServingState) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_609739e22a0a50b3, []int{1, 0}
+ return fileDescriptor_609739e22a0a50b3, []int{4, 0}
}
// Cluster represents information about a Vitess cluster.
@@ -70,18 +74,26 @@ func (*Cluster) ProtoMessage() {}
func (*Cluster) Descriptor() ([]byte, []int) {
return fileDescriptor_609739e22a0a50b3, []int{0}
}
-
func (m *Cluster) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Cluster.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Cluster) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Cluster.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Cluster.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Cluster) XXX_Merge(src proto.Message) {
xxx_messageInfo_Cluster.Merge(m, src)
}
func (m *Cluster) XXX_Size() int {
- return xxx_messageInfo_Cluster.Size(m)
+ return m.Size()
}
func (m *Cluster) XXX_DiscardUnknown() {
xxx_messageInfo_Cluster.DiscardUnknown(m)
@@ -103,6 +115,320 @@ func (m *Cluster) GetName() string {
return ""
}
+type ClusterWorkflows struct {
+ Workflows []*Workflow `protobuf:"bytes,1,rep,name=workflows,proto3" json:"workflows,omitempty"`
+ // Warnings is a list of non-fatal errors encountered when fetching
+ // workflows for a particular cluster.
+ Warnings []string `protobuf:"bytes,2,rep,name=warnings,proto3" json:"warnings,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *ClusterWorkflows) Reset() { *m = ClusterWorkflows{} }
+func (m *ClusterWorkflows) String() string { return proto.CompactTextString(m) }
+func (*ClusterWorkflows) ProtoMessage() {}
+func (*ClusterWorkflows) Descriptor() ([]byte, []int) {
+ return fileDescriptor_609739e22a0a50b3, []int{1}
+}
+func (m *ClusterWorkflows) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *ClusterWorkflows) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_ClusterWorkflows.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *ClusterWorkflows) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ClusterWorkflows.Merge(m, src)
+}
+func (m *ClusterWorkflows) XXX_Size() int {
+ return m.Size()
+}
+func (m *ClusterWorkflows) XXX_DiscardUnknown() {
+ xxx_messageInfo_ClusterWorkflows.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ClusterWorkflows proto.InternalMessageInfo
+
+func (m *ClusterWorkflows) GetWorkflows() []*Workflow {
+ if m != nil {
+ return m.Workflows
+ }
+ return nil
+}
+
+func (m *ClusterWorkflows) GetWarnings() []string {
+ if m != nil {
+ return m.Warnings
+ }
+ return nil
+}
+
+// Keyspace represents information about a keyspace in a particular Vitess
+// cluster.
+type Keyspace struct {
+ Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"`
+ Keyspace *vtctldata.Keyspace `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ Shards map[string]*vtctldata.Shard `protobuf:"bytes,3,rep,name=shards,proto3" json:"shards,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Keyspace) Reset() { *m = Keyspace{} }
+func (m *Keyspace) String() string { return proto.CompactTextString(m) }
+func (*Keyspace) ProtoMessage() {}
+func (*Keyspace) Descriptor() ([]byte, []int) {
+ return fileDescriptor_609739e22a0a50b3, []int{2}
+}
+func (m *Keyspace) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *Keyspace) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_Keyspace.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *Keyspace) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Keyspace.Merge(m, src)
+}
+func (m *Keyspace) XXX_Size() int {
+ return m.Size()
+}
+func (m *Keyspace) XXX_DiscardUnknown() {
+ xxx_messageInfo_Keyspace.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Keyspace proto.InternalMessageInfo
+
+func (m *Keyspace) GetCluster() *Cluster {
+ if m != nil {
+ return m.Cluster
+ }
+ return nil
+}
+
+func (m *Keyspace) GetKeyspace() *vtctldata.Keyspace {
+ if m != nil {
+ return m.Keyspace
+ }
+ return nil
+}
+
+func (m *Keyspace) GetShards() map[string]*vtctldata.Shard {
+ if m != nil {
+ return m.Shards
+ }
+ return nil
+}
+
+type Schema struct {
+ Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"`
+ Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ TableDefinitions []*tabletmanagerdata.TableDefinition `protobuf:"bytes,3,rep,name=table_definitions,json=tableDefinitions,proto3" json:"table_definitions,omitempty"`
+ // TableSizes is a mapping of table name to TableSize information.
+ TableSizes map[string]*Schema_TableSize `protobuf:"bytes,4,rep,name=table_sizes,json=tableSizes,proto3" json:"table_sizes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Schema) Reset() { *m = Schema{} }
+func (m *Schema) String() string { return proto.CompactTextString(m) }
+func (*Schema) ProtoMessage() {}
+func (*Schema) Descriptor() ([]byte, []int) {
+ return fileDescriptor_609739e22a0a50b3, []int{3}
+}
+func (m *Schema) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *Schema) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_Schema.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *Schema) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Schema.Merge(m, src)
+}
+func (m *Schema) XXX_Size() int {
+ return m.Size()
+}
+func (m *Schema) XXX_DiscardUnknown() {
+ xxx_messageInfo_Schema.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Schema proto.InternalMessageInfo
+
+func (m *Schema) GetCluster() *Cluster {
+ if m != nil {
+ return m.Cluster
+ }
+ return nil
+}
+
+func (m *Schema) GetKeyspace() string {
+ if m != nil {
+ return m.Keyspace
+ }
+ return ""
+}
+
+func (m *Schema) GetTableDefinitions() []*tabletmanagerdata.TableDefinition {
+ if m != nil {
+ return m.TableDefinitions
+ }
+ return nil
+}
+
+func (m *Schema) GetTableSizes() map[string]*Schema_TableSize {
+ if m != nil {
+ return m.TableSizes
+ }
+ return nil
+}
+
+type Schema_ShardTableSize struct {
+ RowCount uint64 `protobuf:"varint,1,opt,name=row_count,json=rowCount,proto3" json:"row_count,omitempty"`
+ DataLength uint64 `protobuf:"varint,2,opt,name=data_length,json=dataLength,proto3" json:"data_length,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Schema_ShardTableSize) Reset() { *m = Schema_ShardTableSize{} }
+func (m *Schema_ShardTableSize) String() string { return proto.CompactTextString(m) }
+func (*Schema_ShardTableSize) ProtoMessage() {}
+func (*Schema_ShardTableSize) Descriptor() ([]byte, []int) {
+ return fileDescriptor_609739e22a0a50b3, []int{3, 1}
+}
+func (m *Schema_ShardTableSize) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *Schema_ShardTableSize) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_Schema_ShardTableSize.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *Schema_ShardTableSize) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Schema_ShardTableSize.Merge(m, src)
+}
+func (m *Schema_ShardTableSize) XXX_Size() int {
+ return m.Size()
+}
+func (m *Schema_ShardTableSize) XXX_DiscardUnknown() {
+ xxx_messageInfo_Schema_ShardTableSize.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Schema_ShardTableSize proto.InternalMessageInfo
+
+func (m *Schema_ShardTableSize) GetRowCount() uint64 {
+ if m != nil {
+ return m.RowCount
+ }
+ return 0
+}
+
+func (m *Schema_ShardTableSize) GetDataLength() uint64 {
+ if m != nil {
+ return m.DataLength
+ }
+ return 0
+}
+
+// TableSize aggregates table size information across all shards containing
+// in the given keyspace and cluster, as well as per-shard size information.
+type Schema_TableSize struct {
+ RowCount uint64 `protobuf:"varint,1,opt,name=row_count,json=rowCount,proto3" json:"row_count,omitempty"`
+ DataLength uint64 `protobuf:"varint,2,opt,name=data_length,json=dataLength,proto3" json:"data_length,omitempty"`
+ ByShard map[string]*Schema_ShardTableSize `protobuf:"bytes,3,rep,name=by_shard,json=byShard,proto3" json:"by_shard,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Schema_TableSize) Reset() { *m = Schema_TableSize{} }
+func (m *Schema_TableSize) String() string { return proto.CompactTextString(m) }
+func (*Schema_TableSize) ProtoMessage() {}
+func (*Schema_TableSize) Descriptor() ([]byte, []int) {
+ return fileDescriptor_609739e22a0a50b3, []int{3, 2}
+}
+func (m *Schema_TableSize) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *Schema_TableSize) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_Schema_TableSize.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *Schema_TableSize) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Schema_TableSize.Merge(m, src)
+}
+func (m *Schema_TableSize) XXX_Size() int {
+ return m.Size()
+}
+func (m *Schema_TableSize) XXX_DiscardUnknown() {
+ xxx_messageInfo_Schema_TableSize.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Schema_TableSize proto.InternalMessageInfo
+
+func (m *Schema_TableSize) GetRowCount() uint64 {
+ if m != nil {
+ return m.RowCount
+ }
+ return 0
+}
+
+func (m *Schema_TableSize) GetDataLength() uint64 {
+ if m != nil {
+ return m.DataLength
+ }
+ return 0
+}
+
+func (m *Schema_TableSize) GetByShard() map[string]*Schema_ShardTableSize {
+ if m != nil {
+ return m.ByShard
+ }
+ return nil
+}
+
// Tablet groups the topo information of a tablet together with the Vitess
// cluster it belongs to.
type Tablet struct {
@@ -118,20 +444,28 @@ func (m *Tablet) Reset() { *m = Tablet{} }
func (m *Tablet) String() string { return proto.CompactTextString(m) }
func (*Tablet) ProtoMessage() {}
func (*Tablet) Descriptor() ([]byte, []int) {
- return fileDescriptor_609739e22a0a50b3, []int{1}
+ return fileDescriptor_609739e22a0a50b3, []int{4}
}
-
func (m *Tablet) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Tablet.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Tablet) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Tablet.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Tablet.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Tablet) XXX_Merge(src proto.Message) {
xxx_messageInfo_Tablet.Merge(m, src)
}
func (m *Tablet) XXX_Size() int {
- return xxx_messageInfo_Tablet.Size(m)
+ return m.Size()
}
func (m *Tablet) XXX_DiscardUnknown() {
xxx_messageInfo_Tablet.DiscardUnknown(m)
@@ -160,6 +494,127 @@ func (m *Tablet) GetState() Tablet_ServingState {
return Tablet_UNKNOWN
}
+// VSchema represents the vschema for a keyspace in the cluster it belongs to.
+type VSchema struct {
+ Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"`
+ // Name is the name of the keyspace this VSchema is for.
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ VSchema *vschema.Keyspace `protobuf:"bytes,3,opt,name=v_schema,json=vSchema,proto3" json:"v_schema,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *VSchema) Reset() { *m = VSchema{} }
+func (m *VSchema) String() string { return proto.CompactTextString(m) }
+func (*VSchema) ProtoMessage() {}
+func (*VSchema) Descriptor() ([]byte, []int) {
+ return fileDescriptor_609739e22a0a50b3, []int{5}
+}
+func (m *VSchema) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *VSchema) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_VSchema.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *VSchema) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_VSchema.Merge(m, src)
+}
+func (m *VSchema) XXX_Size() int {
+ return m.Size()
+}
+func (m *VSchema) XXX_DiscardUnknown() {
+ xxx_messageInfo_VSchema.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_VSchema proto.InternalMessageInfo
+
+func (m *VSchema) GetCluster() *Cluster {
+ if m != nil {
+ return m.Cluster
+ }
+ return nil
+}
+
+func (m *VSchema) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *VSchema) GetVSchema() *vschema.Keyspace {
+ if m != nil {
+ return m.VSchema
+ }
+ return nil
+}
+
+// Vtctld represents information about a single Vtctld host.
+type Vtctld struct {
+ Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"`
+ Cluster *Cluster `protobuf:"bytes,2,opt,name=cluster,proto3" json:"cluster,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Vtctld) Reset() { *m = Vtctld{} }
+func (m *Vtctld) String() string { return proto.CompactTextString(m) }
+func (*Vtctld) ProtoMessage() {}
+func (*Vtctld) Descriptor() ([]byte, []int) {
+ return fileDescriptor_609739e22a0a50b3, []int{6}
+}
+func (m *Vtctld) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *Vtctld) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_Vtctld.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *Vtctld) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Vtctld.Merge(m, src)
+}
+func (m *Vtctld) XXX_Size() int {
+ return m.Size()
+}
+func (m *Vtctld) XXX_DiscardUnknown() {
+ xxx_messageInfo_Vtctld.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Vtctld proto.InternalMessageInfo
+
+func (m *Vtctld) GetHostname() string {
+ if m != nil {
+ return m.Hostname
+ }
+ return ""
+}
+
+func (m *Vtctld) GetCluster() *Cluster {
+ if m != nil {
+ return m.Cluster
+ }
+ return nil
+}
+
// VTGate represents information about a single VTGate host.
type VTGate struct {
// Hostname is the shortname of the VTGate.
@@ -183,20 +638,28 @@ func (m *VTGate) Reset() { *m = VTGate{} }
func (m *VTGate) String() string { return proto.CompactTextString(m) }
func (*VTGate) ProtoMessage() {}
func (*VTGate) Descriptor() ([]byte, []int) {
- return fileDescriptor_609739e22a0a50b3, []int{2}
+ return fileDescriptor_609739e22a0a50b3, []int{7}
}
-
func (m *VTGate) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_VTGate.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *VTGate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_VTGate.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_VTGate.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *VTGate) XXX_Merge(src proto.Message) {
xxx_messageInfo_VTGate.Merge(m, src)
}
func (m *VTGate) XXX_Size() int {
- return xxx_messageInfo_VTGate.Size(m)
+ return m.Size()
}
func (m *VTGate) XXX_DiscardUnknown() {
xxx_messageInfo_VTGate.DiscardUnknown(m)
@@ -239,84 +702,626 @@ func (m *VTGate) GetKeyspaces() []string {
return nil
}
-type GetGatesRequest struct {
- ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
+type Workflow struct {
+ Cluster *Cluster `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"`
+ Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ Workflow *vtctldata.Workflow `protobuf:"bytes,3,opt,name=workflow,proto3" json:"workflow,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
}
-func (m *GetGatesRequest) Reset() { *m = GetGatesRequest{} }
-func (m *GetGatesRequest) String() string { return proto.CompactTextString(m) }
-func (*GetGatesRequest) ProtoMessage() {}
-func (*GetGatesRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_609739e22a0a50b3, []int{3}
+func (m *Workflow) Reset() { *m = Workflow{} }
+func (m *Workflow) String() string { return proto.CompactTextString(m) }
+func (*Workflow) ProtoMessage() {}
+func (*Workflow) Descriptor() ([]byte, []int) {
+ return fileDescriptor_609739e22a0a50b3, []int{8}
}
-
-func (m *GetGatesRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_GetGatesRequest.Unmarshal(m, b)
+func (m *Workflow) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
}
-func (m *GetGatesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_GetGatesRequest.Marshal(b, m, deterministic)
+func (m *Workflow) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_Workflow.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
-func (m *GetGatesRequest) XXX_Merge(src proto.Message) {
- xxx_messageInfo_GetGatesRequest.Merge(m, src)
+func (m *Workflow) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Workflow.Merge(m, src)
}
-func (m *GetGatesRequest) XXX_Size() int {
- return xxx_messageInfo_GetGatesRequest.Size(m)
+func (m *Workflow) XXX_Size() int {
+ return m.Size()
}
-func (m *GetGatesRequest) XXX_DiscardUnknown() {
- xxx_messageInfo_GetGatesRequest.DiscardUnknown(m)
+func (m *Workflow) XXX_DiscardUnknown() {
+ xxx_messageInfo_Workflow.DiscardUnknown(m)
}
-var xxx_messageInfo_GetGatesRequest proto.InternalMessageInfo
+var xxx_messageInfo_Workflow proto.InternalMessageInfo
-func (m *GetGatesRequest) GetClusterIds() []string {
+func (m *Workflow) GetCluster() *Cluster {
if m != nil {
- return m.ClusterIds
+ return m.Cluster
}
return nil
}
-type GetGatesResponse struct {
- Gates []*VTGate `protobuf:"bytes,1,rep,name=gates,proto3" json:"gates,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
+func (m *Workflow) GetKeyspace() string {
+ if m != nil {
+ return m.Keyspace
+ }
+ return ""
}
-func (m *GetGatesResponse) Reset() { *m = GetGatesResponse{} }
-func (m *GetGatesResponse) String() string { return proto.CompactTextString(m) }
-func (*GetGatesResponse) ProtoMessage() {}
-func (*GetGatesResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_609739e22a0a50b3, []int{4}
+func (m *Workflow) GetWorkflow() *vtctldata.Workflow {
+ if m != nil {
+ return m.Workflow
+ }
+ return nil
}
-func (m *GetGatesResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_GetGatesResponse.Unmarshal(m, b)
+type FindSchemaRequest struct {
+ Table string `protobuf:"bytes,1,opt,name=table,proto3" json:"table,omitempty"`
+ ClusterIds []string `protobuf:"bytes,2,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"`
+ TableSizeOptions *GetSchemaTableSizeOptions `protobuf:"bytes,3,opt,name=table_size_options,json=tableSizeOptions,proto3" json:"table_size_options,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
}
-func (m *GetGatesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_GetGatesResponse.Marshal(b, m, deterministic)
+
+func (m *FindSchemaRequest) Reset() { *m = FindSchemaRequest{} }
+func (m *FindSchemaRequest) String() string { return proto.CompactTextString(m) }
+func (*FindSchemaRequest) ProtoMessage() {}
+func (*FindSchemaRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_609739e22a0a50b3, []int{9}
}
-func (m *GetGatesResponse) XXX_Merge(src proto.Message) {
- xxx_messageInfo_GetGatesResponse.Merge(m, src)
+func (m *FindSchemaRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
}
-func (m *GetGatesResponse) XXX_Size() int {
- return xxx_messageInfo_GetGatesResponse.Size(m)
+func (m *FindSchemaRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_FindSchemaRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
-func (m *GetGatesResponse) XXX_DiscardUnknown() {
- xxx_messageInfo_GetGatesResponse.DiscardUnknown(m)
+func (m *FindSchemaRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_FindSchemaRequest.Merge(m, src)
+}
+func (m *FindSchemaRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *FindSchemaRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_FindSchemaRequest.DiscardUnknown(m)
}
-var xxx_messageInfo_GetGatesResponse proto.InternalMessageInfo
+var xxx_messageInfo_FindSchemaRequest proto.InternalMessageInfo
-func (m *GetGatesResponse) GetGates() []*VTGate {
+func (m *FindSchemaRequest) GetTable() string {
if m != nil {
- return m.Gates
+ return m.Table
+ }
+ return ""
+}
+
+func (m *FindSchemaRequest) GetClusterIds() []string {
+ if m != nil {
+ return m.ClusterIds
+ }
+ return nil
+}
+
+func (m *FindSchemaRequest) GetTableSizeOptions() *GetSchemaTableSizeOptions {
+ if m != nil {
+ return m.TableSizeOptions
+ }
+ return nil
+}
+
+type GetClustersRequest struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetClustersRequest) Reset() { *m = GetClustersRequest{} }
+func (m *GetClustersRequest) String() string { return proto.CompactTextString(m) }
+func (*GetClustersRequest) ProtoMessage() {}
+func (*GetClustersRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_609739e22a0a50b3, []int{10}
+}
+func (m *GetClustersRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetClustersRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetClustersRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetClustersRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetClustersRequest.Merge(m, src)
+}
+func (m *GetClustersRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetClustersRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetClustersRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetClustersRequest proto.InternalMessageInfo
+
+type GetClustersResponse struct {
+ Clusters []*Cluster `protobuf:"bytes,1,rep,name=clusters,proto3" json:"clusters,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetClustersResponse) Reset() { *m = GetClustersResponse{} }
+func (m *GetClustersResponse) String() string { return proto.CompactTextString(m) }
+func (*GetClustersResponse) ProtoMessage() {}
+func (*GetClustersResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_609739e22a0a50b3, []int{11}
+}
+func (m *GetClustersResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetClustersResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetClustersResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetClustersResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetClustersResponse.Merge(m, src)
+}
+func (m *GetClustersResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetClustersResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetClustersResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetClustersResponse proto.InternalMessageInfo
+
+func (m *GetClustersResponse) GetClusters() []*Cluster {
+ if m != nil {
+ return m.Clusters
+ }
+ return nil
+}
+
+type GetGatesRequest struct {
+ ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetGatesRequest) Reset() { *m = GetGatesRequest{} }
+func (m *GetGatesRequest) String() string { return proto.CompactTextString(m) }
+func (*GetGatesRequest) ProtoMessage() {}
+func (*GetGatesRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_609739e22a0a50b3, []int{12}
+}
+func (m *GetGatesRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetGatesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetGatesRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetGatesRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetGatesRequest.Merge(m, src)
+}
+func (m *GetGatesRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetGatesRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetGatesRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetGatesRequest proto.InternalMessageInfo
+
+func (m *GetGatesRequest) GetClusterIds() []string {
+ if m != nil {
+ return m.ClusterIds
+ }
+ return nil
+}
+
+type GetGatesResponse struct {
+ Gates []*VTGate `protobuf:"bytes,1,rep,name=gates,proto3" json:"gates,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetGatesResponse) Reset() { *m = GetGatesResponse{} }
+func (m *GetGatesResponse) String() string { return proto.CompactTextString(m) }
+func (*GetGatesResponse) ProtoMessage() {}
+func (*GetGatesResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_609739e22a0a50b3, []int{13}
+}
+func (m *GetGatesResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetGatesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetGatesResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetGatesResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetGatesResponse.Merge(m, src)
+}
+func (m *GetGatesResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetGatesResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetGatesResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetGatesResponse proto.InternalMessageInfo
+
+func (m *GetGatesResponse) GetGates() []*VTGate {
+ if m != nil {
+ return m.Gates
+ }
+ return nil
+}
+
+type GetKeyspacesRequest struct {
+ ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetKeyspacesRequest) Reset() { *m = GetKeyspacesRequest{} }
+func (m *GetKeyspacesRequest) String() string { return proto.CompactTextString(m) }
+func (*GetKeyspacesRequest) ProtoMessage() {}
+func (*GetKeyspacesRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_609739e22a0a50b3, []int{14}
+}
+func (m *GetKeyspacesRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetKeyspacesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetKeyspacesRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetKeyspacesRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetKeyspacesRequest.Merge(m, src)
+}
+func (m *GetKeyspacesRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetKeyspacesRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetKeyspacesRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetKeyspacesRequest proto.InternalMessageInfo
+
+func (m *GetKeyspacesRequest) GetClusterIds() []string {
+ if m != nil {
+ return m.ClusterIds
+ }
+ return nil
+}
+
+type GetKeyspacesResponse struct {
+ Keyspaces []*Keyspace `protobuf:"bytes,1,rep,name=keyspaces,proto3" json:"keyspaces,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetKeyspacesResponse) Reset() { *m = GetKeyspacesResponse{} }
+func (m *GetKeyspacesResponse) String() string { return proto.CompactTextString(m) }
+func (*GetKeyspacesResponse) ProtoMessage() {}
+func (*GetKeyspacesResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_609739e22a0a50b3, []int{15}
+}
+func (m *GetKeyspacesResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetKeyspacesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetKeyspacesResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetKeyspacesResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetKeyspacesResponse.Merge(m, src)
+}
+func (m *GetKeyspacesResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetKeyspacesResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetKeyspacesResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetKeyspacesResponse proto.InternalMessageInfo
+
+func (m *GetKeyspacesResponse) GetKeyspaces() []*Keyspace {
+ if m != nil {
+ return m.Keyspaces
+ }
+ return nil
+}
+
+type GetSchemaRequest struct {
+ ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ Table string `protobuf:"bytes,3,opt,name=table,proto3" json:"table,omitempty"`
+ TableSizeOptions *GetSchemaTableSizeOptions `protobuf:"bytes,4,opt,name=table_size_options,json=tableSizeOptions,proto3" json:"table_size_options,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetSchemaRequest) Reset() { *m = GetSchemaRequest{} }
+func (m *GetSchemaRequest) String() string { return proto.CompactTextString(m) }
+func (*GetSchemaRequest) ProtoMessage() {}
+func (*GetSchemaRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_609739e22a0a50b3, []int{16}
+}
+func (m *GetSchemaRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetSchemaRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetSchemaRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetSchemaRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetSchemaRequest.Merge(m, src)
+}
+func (m *GetSchemaRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetSchemaRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetSchemaRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetSchemaRequest proto.InternalMessageInfo
+
+func (m *GetSchemaRequest) GetClusterId() string {
+ if m != nil {
+ return m.ClusterId
+ }
+ return ""
+}
+
+func (m *GetSchemaRequest) GetKeyspace() string {
+ if m != nil {
+ return m.Keyspace
+ }
+ return ""
+}
+
+func (m *GetSchemaRequest) GetTable() string {
+ if m != nil {
+ return m.Table
+ }
+ return ""
+}
+
+func (m *GetSchemaRequest) GetTableSizeOptions() *GetSchemaTableSizeOptions {
+ if m != nil {
+ return m.TableSizeOptions
+ }
+ return nil
+}
+
+type GetSchemasRequest struct {
+ ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"`
+ TableSizeOptions *GetSchemaTableSizeOptions `protobuf:"bytes,2,opt,name=table_size_options,json=tableSizeOptions,proto3" json:"table_size_options,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetSchemasRequest) Reset() { *m = GetSchemasRequest{} }
+func (m *GetSchemasRequest) String() string { return proto.CompactTextString(m) }
+func (*GetSchemasRequest) ProtoMessage() {}
+func (*GetSchemasRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_609739e22a0a50b3, []int{17}
+}
+func (m *GetSchemasRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetSchemasRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetSchemasRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetSchemasRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetSchemasRequest.Merge(m, src)
+}
+func (m *GetSchemasRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetSchemasRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetSchemasRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetSchemasRequest proto.InternalMessageInfo
+
+func (m *GetSchemasRequest) GetClusterIds() []string {
+ if m != nil {
+ return m.ClusterIds
+ }
+ return nil
+}
+
+func (m *GetSchemasRequest) GetTableSizeOptions() *GetSchemaTableSizeOptions {
+ if m != nil {
+ return m.TableSizeOptions
+ }
+ return nil
+}
+
+type GetSchemasResponse struct {
+ Schemas []*Schema `protobuf:"bytes,1,rep,name=schemas,proto3" json:"schemas,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetSchemasResponse) Reset() { *m = GetSchemasResponse{} }
+func (m *GetSchemasResponse) String() string { return proto.CompactTextString(m) }
+func (*GetSchemasResponse) ProtoMessage() {}
+func (*GetSchemasResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_609739e22a0a50b3, []int{18}
+}
+func (m *GetSchemasResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetSchemasResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetSchemasResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetSchemasResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetSchemasResponse.Merge(m, src)
+}
+func (m *GetSchemasResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetSchemasResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetSchemasResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetSchemasResponse proto.InternalMessageInfo
+
+func (m *GetSchemasResponse) GetSchemas() []*Schema {
+ if m != nil {
+ return m.Schemas
}
return nil
}
+type GetSchemaTableSizeOptions struct {
+ AggregateSizes bool `protobuf:"varint,1,opt,name=aggregate_sizes,json=aggregateSizes,proto3" json:"aggregate_sizes,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetSchemaTableSizeOptions) Reset() { *m = GetSchemaTableSizeOptions{} }
+func (m *GetSchemaTableSizeOptions) String() string { return proto.CompactTextString(m) }
+func (*GetSchemaTableSizeOptions) ProtoMessage() {}
+func (*GetSchemaTableSizeOptions) Descriptor() ([]byte, []int) {
+ return fileDescriptor_609739e22a0a50b3, []int{19}
+}
+func (m *GetSchemaTableSizeOptions) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetSchemaTableSizeOptions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetSchemaTableSizeOptions.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetSchemaTableSizeOptions) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetSchemaTableSizeOptions.Merge(m, src)
+}
+func (m *GetSchemaTableSizeOptions) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetSchemaTableSizeOptions) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetSchemaTableSizeOptions.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetSchemaTableSizeOptions proto.InternalMessageInfo
+
+func (m *GetSchemaTableSizeOptions) GetAggregateSizes() bool {
+ if m != nil {
+ return m.AggregateSizes
+ }
+ return false
+}
+
type GetTabletRequest struct {
Hostname string `protobuf:"bytes,1,opt,name=hostname,proto3" json:"hostname,omitempty"`
// ClusterIDs is an optional parameter to narrow the scope of the search, if
@@ -332,20 +1337,28 @@ func (m *GetTabletRequest) Reset() { *m = GetTabletRequest{} }
func (m *GetTabletRequest) String() string { return proto.CompactTextString(m) }
func (*GetTabletRequest) ProtoMessage() {}
func (*GetTabletRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_609739e22a0a50b3, []int{5}
+ return fileDescriptor_609739e22a0a50b3, []int{20}
}
-
func (m *GetTabletRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_GetTabletRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *GetTabletRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_GetTabletRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_GetTabletRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *GetTabletRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetTabletRequest.Merge(m, src)
}
func (m *GetTabletRequest) XXX_Size() int {
- return xxx_messageInfo_GetTabletRequest.Size(m)
+ return m.Size()
}
func (m *GetTabletRequest) XXX_DiscardUnknown() {
xxx_messageInfo_GetTabletRequest.DiscardUnknown(m)
@@ -378,20 +1391,28 @@ func (m *GetTabletsRequest) Reset() { *m = GetTabletsRequest{} }
func (m *GetTabletsRequest) String() string { return proto.CompactTextString(m) }
func (*GetTabletsRequest) ProtoMessage() {}
func (*GetTabletsRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_609739e22a0a50b3, []int{6}
+ return fileDescriptor_609739e22a0a50b3, []int{21}
}
-
func (m *GetTabletsRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_GetTabletsRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *GetTabletsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_GetTabletsRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_GetTabletsRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *GetTabletsRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetTabletsRequest.Merge(m, src)
}
func (m *GetTabletsRequest) XXX_Size() int {
- return xxx_messageInfo_GetTabletsRequest.Size(m)
+ return m.Size()
}
func (m *GetTabletsRequest) XXX_DiscardUnknown() {
xxx_messageInfo_GetTabletsRequest.DiscardUnknown(m)
@@ -417,20 +1438,28 @@ func (m *GetTabletsResponse) Reset() { *m = GetTabletsResponse{} }
func (m *GetTabletsResponse) String() string { return proto.CompactTextString(m) }
func (*GetTabletsResponse) ProtoMessage() {}
func (*GetTabletsResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_609739e22a0a50b3, []int{7}
+ return fileDescriptor_609739e22a0a50b3, []int{22}
}
-
func (m *GetTabletsResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_GetTabletsResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *GetTabletsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_GetTabletsResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_GetTabletsResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *GetTabletsResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_GetTabletsResponse.Merge(m, src)
}
func (m *GetTabletsResponse) XXX_Size() int {
- return xxx_messageInfo_GetTabletsResponse.Size(m)
+ return m.Size()
}
func (m *GetTabletsResponse) XXX_DiscardUnknown() {
xxx_messageInfo_GetTabletsResponse.DiscardUnknown(m)
@@ -445,52 +1474,606 @@ func (m *GetTabletsResponse) GetTablets() []*Tablet {
return nil
}
-func init() {
- proto.RegisterEnum("vtadmin.Tablet_ServingState", Tablet_ServingState_name, Tablet_ServingState_value)
- proto.RegisterType((*Cluster)(nil), "vtadmin.Cluster")
- proto.RegisterType((*Tablet)(nil), "vtadmin.Tablet")
- proto.RegisterType((*VTGate)(nil), "vtadmin.VTGate")
- proto.RegisterType((*GetGatesRequest)(nil), "vtadmin.GetGatesRequest")
- proto.RegisterType((*GetGatesResponse)(nil), "vtadmin.GetGatesResponse")
- proto.RegisterType((*GetTabletRequest)(nil), "vtadmin.GetTabletRequest")
+type GetVSchemaRequest struct {
+ ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetVSchemaRequest) Reset() { *m = GetVSchemaRequest{} }
+func (m *GetVSchemaRequest) String() string { return proto.CompactTextString(m) }
+func (*GetVSchemaRequest) ProtoMessage() {}
+func (*GetVSchemaRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_609739e22a0a50b3, []int{23}
+}
+func (m *GetVSchemaRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetVSchemaRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetVSchemaRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetVSchemaRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetVSchemaRequest.Merge(m, src)
+}
+func (m *GetVSchemaRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetVSchemaRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetVSchemaRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetVSchemaRequest proto.InternalMessageInfo
+
+func (m *GetVSchemaRequest) GetClusterId() string {
+ if m != nil {
+ return m.ClusterId
+ }
+ return ""
+}
+
+func (m *GetVSchemaRequest) GetKeyspace() string {
+ if m != nil {
+ return m.Keyspace
+ }
+ return ""
+}
+
+type GetVSchemasRequest struct {
+ ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetVSchemasRequest) Reset() { *m = GetVSchemasRequest{} }
+func (m *GetVSchemasRequest) String() string { return proto.CompactTextString(m) }
+func (*GetVSchemasRequest) ProtoMessage() {}
+func (*GetVSchemasRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_609739e22a0a50b3, []int{24}
+}
+func (m *GetVSchemasRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetVSchemasRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetVSchemasRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetVSchemasRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetVSchemasRequest.Merge(m, src)
+}
+func (m *GetVSchemasRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetVSchemasRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetVSchemasRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetVSchemasRequest proto.InternalMessageInfo
+
+func (m *GetVSchemasRequest) GetClusterIds() []string {
+ if m != nil {
+ return m.ClusterIds
+ }
+ return nil
+}
+
+type GetVSchemasResponse struct {
+ VSchemas []*VSchema `protobuf:"bytes,1,rep,name=v_schemas,json=vSchemas,proto3" json:"v_schemas,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetVSchemasResponse) Reset() { *m = GetVSchemasResponse{} }
+func (m *GetVSchemasResponse) String() string { return proto.CompactTextString(m) }
+func (*GetVSchemasResponse) ProtoMessage() {}
+func (*GetVSchemasResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_609739e22a0a50b3, []int{25}
+}
+func (m *GetVSchemasResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetVSchemasResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetVSchemasResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetVSchemasResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetVSchemasResponse.Merge(m, src)
+}
+func (m *GetVSchemasResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetVSchemasResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetVSchemasResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetVSchemasResponse proto.InternalMessageInfo
+
+func (m *GetVSchemasResponse) GetVSchemas() []*VSchema {
+ if m != nil {
+ return m.VSchemas
+ }
+ return nil
+}
+
+type GetWorkflowRequest struct {
+ ClusterId string `protobuf:"bytes,1,opt,name=cluster_id,json=clusterId,proto3" json:"cluster_id,omitempty"`
+ Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
+ ActiveOnly bool `protobuf:"varint,4,opt,name=active_only,json=activeOnly,proto3" json:"active_only,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetWorkflowRequest) Reset() { *m = GetWorkflowRequest{} }
+func (m *GetWorkflowRequest) String() string { return proto.CompactTextString(m) }
+func (*GetWorkflowRequest) ProtoMessage() {}
+func (*GetWorkflowRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_609739e22a0a50b3, []int{26}
+}
+func (m *GetWorkflowRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetWorkflowRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetWorkflowRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetWorkflowRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetWorkflowRequest.Merge(m, src)
+}
+func (m *GetWorkflowRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetWorkflowRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetWorkflowRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetWorkflowRequest proto.InternalMessageInfo
+
+func (m *GetWorkflowRequest) GetClusterId() string {
+ if m != nil {
+ return m.ClusterId
+ }
+ return ""
+}
+
+func (m *GetWorkflowRequest) GetKeyspace() string {
+ if m != nil {
+ return m.Keyspace
+ }
+ return ""
+}
+
+func (m *GetWorkflowRequest) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *GetWorkflowRequest) GetActiveOnly() bool {
+ if m != nil {
+ return m.ActiveOnly
+ }
+ return false
+}
+
+type GetWorkflowsRequest struct {
+ ClusterIds []string `protobuf:"bytes,1,rep,name=cluster_ids,json=clusterIds,proto3" json:"cluster_ids,omitempty"`
+ // ActiveOnly specifies whether to return workflows that are currently
+ // active (running or paused) instead of all workflows.
+ ActiveOnly bool `protobuf:"varint,2,opt,name=active_only,json=activeOnly,proto3" json:"active_only,omitempty"`
+ // Keyspaces is a list of keyspaces to restrict the workflow search to. Note
+ // that the keyspaces list applies across all cluster IDs in the request.
+ //
+ // If, for example, you have two clusters, each with a keyspace called "foo"
+ // and want the workflows from "foo" in cluster1 but not from cluster2, you
+ // must make two requests.
+ //
+ // Keyspaces and IgnoreKeyspaces are mutually-exclusive, and Keyspaces takes
+ // precedence; if Keyspaces is a non-empty list, then IgnoreKeyspaces is
+ // ignored completely.
+ Keyspaces []string `protobuf:"bytes,3,rep,name=keyspaces,proto3" json:"keyspaces,omitempty"`
+ // IgnoreKeyspaces is a list of keyspaces to skip during the workflow
+ // search. It has the same semantics as the Keyspaces parameter, so refer to
+ // that documentation for more details.
+ IgnoreKeyspaces []string `protobuf:"bytes,4,rep,name=ignore_keyspaces,json=ignoreKeyspaces,proto3" json:"ignore_keyspaces,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetWorkflowsRequest) Reset() { *m = GetWorkflowsRequest{} }
+func (m *GetWorkflowsRequest) String() string { return proto.CompactTextString(m) }
+func (*GetWorkflowsRequest) ProtoMessage() {}
+func (*GetWorkflowsRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_609739e22a0a50b3, []int{27}
+}
+func (m *GetWorkflowsRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetWorkflowsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetWorkflowsRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetWorkflowsRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetWorkflowsRequest.Merge(m, src)
+}
+func (m *GetWorkflowsRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetWorkflowsRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetWorkflowsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetWorkflowsRequest proto.InternalMessageInfo
+
+func (m *GetWorkflowsRequest) GetClusterIds() []string {
+ if m != nil {
+ return m.ClusterIds
+ }
+ return nil
+}
+
+func (m *GetWorkflowsRequest) GetActiveOnly() bool {
+ if m != nil {
+ return m.ActiveOnly
+ }
+ return false
+}
+
+func (m *GetWorkflowsRequest) GetKeyspaces() []string {
+ if m != nil {
+ return m.Keyspaces
+ }
+ return nil
+}
+
+func (m *GetWorkflowsRequest) GetIgnoreKeyspaces() []string {
+ if m != nil {
+ return m.IgnoreKeyspaces
+ }
+ return nil
+}
+
+type GetWorkflowsResponse struct {
+ WorkflowsByCluster map[string]*ClusterWorkflows `protobuf:"bytes,1,rep,name=workflows_by_cluster,json=workflowsByCluster,proto3" json:"workflows_by_cluster,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetWorkflowsResponse) Reset() { *m = GetWorkflowsResponse{} }
+func (m *GetWorkflowsResponse) String() string { return proto.CompactTextString(m) }
+func (*GetWorkflowsResponse) ProtoMessage() {}
+func (*GetWorkflowsResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_609739e22a0a50b3, []int{28}
+}
+func (m *GetWorkflowsResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetWorkflowsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetWorkflowsResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetWorkflowsResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetWorkflowsResponse.Merge(m, src)
+}
+func (m *GetWorkflowsResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetWorkflowsResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetWorkflowsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetWorkflowsResponse proto.InternalMessageInfo
+
+func (m *GetWorkflowsResponse) GetWorkflowsByCluster() map[string]*ClusterWorkflows {
+ if m != nil {
+ return m.WorkflowsByCluster
+ }
+ return nil
+}
+
+type VTExplainRequest struct {
+ Cluster string `protobuf:"bytes,1,opt,name=cluster,proto3" json:"cluster,omitempty"`
+ Keyspace string `protobuf:"bytes,2,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ Sql string `protobuf:"bytes,3,opt,name=sql,proto3" json:"sql,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *VTExplainRequest) Reset() { *m = VTExplainRequest{} }
+func (m *VTExplainRequest) String() string { return proto.CompactTextString(m) }
+func (*VTExplainRequest) ProtoMessage() {}
+func (*VTExplainRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_609739e22a0a50b3, []int{29}
+}
+func (m *VTExplainRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *VTExplainRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_VTExplainRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *VTExplainRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_VTExplainRequest.Merge(m, src)
+}
+func (m *VTExplainRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *VTExplainRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_VTExplainRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_VTExplainRequest proto.InternalMessageInfo
+
+func (m *VTExplainRequest) GetCluster() string {
+ if m != nil {
+ return m.Cluster
+ }
+ return ""
+}
+
+func (m *VTExplainRequest) GetKeyspace() string {
+ if m != nil {
+ return m.Keyspace
+ }
+ return ""
+}
+
+func (m *VTExplainRequest) GetSql() string {
+ if m != nil {
+ return m.Sql
+ }
+ return ""
+}
+
+type VTExplainResponse struct {
+ Response string `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *VTExplainResponse) Reset() { *m = VTExplainResponse{} }
+func (m *VTExplainResponse) String() string { return proto.CompactTextString(m) }
+func (*VTExplainResponse) ProtoMessage() {}
+func (*VTExplainResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_609739e22a0a50b3, []int{30}
+}
+func (m *VTExplainResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *VTExplainResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_VTExplainResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *VTExplainResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_VTExplainResponse.Merge(m, src)
+}
+func (m *VTExplainResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *VTExplainResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_VTExplainResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_VTExplainResponse proto.InternalMessageInfo
+
+func (m *VTExplainResponse) GetResponse() string {
+ if m != nil {
+ return m.Response
+ }
+ return ""
+}
+
+func init() {
+ proto.RegisterEnum("vtadmin.Tablet_ServingState", Tablet_ServingState_name, Tablet_ServingState_value)
+ proto.RegisterType((*Cluster)(nil), "vtadmin.Cluster")
+ proto.RegisterType((*ClusterWorkflows)(nil), "vtadmin.ClusterWorkflows")
+ proto.RegisterType((*Keyspace)(nil), "vtadmin.Keyspace")
+ proto.RegisterMapType((map[string]*vtctldata.Shard)(nil), "vtadmin.Keyspace.ShardsEntry")
+ proto.RegisterType((*Schema)(nil), "vtadmin.Schema")
+ proto.RegisterMapType((map[string]*Schema_TableSize)(nil), "vtadmin.Schema.TableSizesEntry")
+ proto.RegisterType((*Schema_ShardTableSize)(nil), "vtadmin.Schema.ShardTableSize")
+ proto.RegisterType((*Schema_TableSize)(nil), "vtadmin.Schema.TableSize")
+ proto.RegisterMapType((map[string]*Schema_ShardTableSize)(nil), "vtadmin.Schema.TableSize.ByShardEntry")
+ proto.RegisterType((*Tablet)(nil), "vtadmin.Tablet")
+ proto.RegisterType((*VSchema)(nil), "vtadmin.VSchema")
+ proto.RegisterType((*Vtctld)(nil), "vtadmin.Vtctld")
+ proto.RegisterType((*VTGate)(nil), "vtadmin.VTGate")
+ proto.RegisterType((*Workflow)(nil), "vtadmin.Workflow")
+ proto.RegisterType((*FindSchemaRequest)(nil), "vtadmin.FindSchemaRequest")
+ proto.RegisterType((*GetClustersRequest)(nil), "vtadmin.GetClustersRequest")
+ proto.RegisterType((*GetClustersResponse)(nil), "vtadmin.GetClustersResponse")
+ proto.RegisterType((*GetGatesRequest)(nil), "vtadmin.GetGatesRequest")
+ proto.RegisterType((*GetGatesResponse)(nil), "vtadmin.GetGatesResponse")
+ proto.RegisterType((*GetKeyspacesRequest)(nil), "vtadmin.GetKeyspacesRequest")
+ proto.RegisterType((*GetKeyspacesResponse)(nil), "vtadmin.GetKeyspacesResponse")
+ proto.RegisterType((*GetSchemaRequest)(nil), "vtadmin.GetSchemaRequest")
+ proto.RegisterType((*GetSchemasRequest)(nil), "vtadmin.GetSchemasRequest")
+ proto.RegisterType((*GetSchemasResponse)(nil), "vtadmin.GetSchemasResponse")
+ proto.RegisterType((*GetSchemaTableSizeOptions)(nil), "vtadmin.GetSchemaTableSizeOptions")
+ proto.RegisterType((*GetTabletRequest)(nil), "vtadmin.GetTabletRequest")
proto.RegisterType((*GetTabletsRequest)(nil), "vtadmin.GetTabletsRequest")
proto.RegisterType((*GetTabletsResponse)(nil), "vtadmin.GetTabletsResponse")
+ proto.RegisterType((*GetVSchemaRequest)(nil), "vtadmin.GetVSchemaRequest")
+ proto.RegisterType((*GetVSchemasRequest)(nil), "vtadmin.GetVSchemasRequest")
+ proto.RegisterType((*GetVSchemasResponse)(nil), "vtadmin.GetVSchemasResponse")
+ proto.RegisterType((*GetWorkflowRequest)(nil), "vtadmin.GetWorkflowRequest")
+ proto.RegisterType((*GetWorkflowsRequest)(nil), "vtadmin.GetWorkflowsRequest")
+ proto.RegisterType((*GetWorkflowsResponse)(nil), "vtadmin.GetWorkflowsResponse")
+ proto.RegisterMapType((map[string]*ClusterWorkflows)(nil), "vtadmin.GetWorkflowsResponse.WorkflowsByClusterEntry")
+ proto.RegisterType((*VTExplainRequest)(nil), "vtadmin.VTExplainRequest")
+ proto.RegisterType((*VTExplainResponse)(nil), "vtadmin.VTExplainResponse")
}
func init() { proto.RegisterFile("vtadmin.proto", fileDescriptor_609739e22a0a50b3) }
var fileDescriptor_609739e22a0a50b3 = []byte{
- // 474 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x53, 0x5f, 0x8b, 0xd3, 0x4e,
- 0x14, 0x6d, 0xb2, 0xdb, 0x66, 0x73, 0xf3, 0xfb, 0xb5, 0xf5, 0x3e, 0xc5, 0xb8, 0x60, 0x19, 0x54,
- 0xaa, 0x60, 0x03, 0xd1, 0x97, 0x3e, 0xc9, 0x2a, 0x52, 0x16, 0x21, 0x85, 0x69, 0xad, 0xe0, 0xcb,
- 0x92, 0x6d, 0x86, 0x1a, 0xcc, 0x76, 0x62, 0x67, 0xb6, 0xe0, 0x17, 0xf1, 0x5b, 0x09, 0x7e, 0x24,
- 0x99, 0x3f, 0x49, 0xbb, 0xed, 0xa2, 0xbe, 0xdd, 0x7b, 0xcf, 0x39, 0x77, 0xce, 0x3d, 0x6d, 0xe0,
- 0xff, 0xad, 0xcc, 0xf2, 0x9b, 0x62, 0x3d, 0xaa, 0x36, 0x5c, 0x72, 0xf4, 0x6c, 0x1b, 0x75, 0x25,
- 0xaf, 0x78, 0x9e, 0xc9, 0xcc, 0x00, 0xe4, 0x25, 0x78, 0xef, 0xca, 0x5b, 0x21, 0xd9, 0x06, 0xbb,
- 0xe0, 0x16, 0x79, 0xe8, 0x0c, 0x9c, 0xa1, 0x4f, 0xdd, 0x22, 0x47, 0x84, 0xd3, 0x75, 0x76, 0xc3,
- 0x42, 0x57, 0x4f, 0x74, 0x4d, 0x7e, 0x3a, 0xd0, 0x99, 0x67, 0xd7, 0x25, 0x93, 0xf8, 0x02, 0xbc,
- 0xa5, 0x51, 0x6a, 0x4d, 0x90, 0xf4, 0x47, 0xf5, 0x9b, 0x76, 0x23, 0xad, 0x09, 0x38, 0x84, 0x8e,
- 0xd4, 0x2a, 0xbd, 0x4c, 0x51, 0x1b, 0x1b, 0x66, 0x1b, 0xb5, 0x38, 0x26, 0xd0, 0x16, 0x32, 0x93,
- 0x2c, 0x3c, 0x19, 0x38, 0xc3, 0x6e, 0x72, 0xde, 0xec, 0x34, 0xbc, 0xd1, 0x8c, 0x6d, 0xb6, 0xc5,
- 0x7a, 0x35, 0x53, 0x1c, 0x6a, 0xa8, 0x64, 0x0c, 0xff, 0xed, 0x8f, 0x31, 0x00, 0xef, 0x63, 0xfa,
- 0x21, 0x9d, 0x7e, 0x4a, 0xfb, 0x2d, 0xd5, 0xcc, 0xde, 0xd3, 0xc5, 0x65, 0x3a, 0xe9, 0x3b, 0xd8,
- 0x83, 0x20, 0x9d, 0xce, 0xaf, 0xea, 0x81, 0x4b, 0x7e, 0x38, 0xd0, 0x59, 0xcc, 0x27, 0x4a, 0x15,
- 0xc1, 0xd9, 0x17, 0x2e, 0xa4, 0x3e, 0xd9, 0x84, 0xd0, 0xf4, 0x2a, 0x8a, 0x8a, 0xf3, 0xb2, 0x8e,
- 0x42, 0xd5, 0x6a, 0xb6, 0x64, 0x65, 0xa9, 0x8d, 0xfa, 0x54, 0xd7, 0xfb, 0x99, 0x9c, 0xfe, 0x2d,
- 0x93, 0x73, 0xf0, 0xbf, 0xb2, 0xef, 0xa2, 0xca, 0x96, 0x4c, 0x84, 0xed, 0xc1, 0xc9, 0xd0, 0xa7,
- 0xbb, 0x01, 0x49, 0xa0, 0x37, 0x61, 0x52, 0x19, 0x13, 0x94, 0x7d, 0xbb, 0x65, 0x42, 0xe2, 0x63,
- 0x08, 0xac, 0xf6, 0xaa, 0xc8, 0x45, 0xe8, 0x68, 0x09, 0xd8, 0xd1, 0x65, 0x2e, 0xc8, 0x18, 0xfa,
- 0x3b, 0x8d, 0xa8, 0xf8, 0x5a, 0x30, 0x7c, 0x0a, 0xed, 0x95, 0x1a, 0x68, 0x7a, 0x90, 0xf4, 0x1a,
- 0x3f, 0xe6, 0x6a, 0x6a, 0x50, 0x32, 0xd5, 0x52, 0xfb, 0x5b, 0xd8, 0xf7, 0xfe, 0x14, 0xc8, 0x81,
- 0x17, 0xf7, 0xc8, 0xcb, 0x6b, 0x78, 0xd0, 0x2c, 0xfc, 0xf7, 0x0b, 0xde, 0x00, 0xee, 0xab, 0xec,
- 0x0d, 0xcf, 0xc1, 0x33, 0xff, 0x8e, 0xe3, 0x2b, 0xac, 0xe3, 0x1a, 0x4f, 0x7e, 0x39, 0xe0, 0x2d,
- 0xe6, 0x17, 0x0a, 0xc3, 0x0b, 0x38, 0xab, 0xe3, 0xc0, 0xb0, 0x51, 0x1c, 0xa4, 0x1a, 0x3d, 0xbc,
- 0x07, 0x31, 0xef, 0x92, 0x16, 0x8e, 0xc1, 0x6f, 0xfc, 0xe0, 0x1d, 0xe6, 0x9d, 0xa8, 0xa2, 0x43,
- 0x43, 0xa4, 0x85, 0x13, 0x80, 0xdd, 0x29, 0x18, 0x1d, 0x6b, 0x1b, 0x07, 0x8f, 0xee, 0xc5, 0x6a,
- 0x0f, 0x6f, 0x9f, 0x7d, 0x7e, 0xb2, 0x2d, 0x24, 0x13, 0x62, 0x54, 0xf0, 0xd8, 0x54, 0xf1, 0x8a,
- 0xc7, 0x5b, 0x19, 0xeb, 0x2f, 0x38, 0xb6, 0xe2, 0xeb, 0x8e, 0x6e, 0x5f, 0xfd, 0x0e, 0x00, 0x00,
- 0xff, 0xff, 0x34, 0xe6, 0x6b, 0x4d, 0xfa, 0x03, 0x00, 0x00,
+ // 1465 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x5f, 0x6f, 0xdb, 0x54,
+ 0x14, 0xaf, 0x93, 0x34, 0x89, 0x4f, 0xb6, 0x26, 0xbd, 0xab, 0xb4, 0xd4, 0xed, 0xba, 0xea, 0x0a,
+ 0x46, 0x87, 0x58, 0x22, 0x85, 0x6d, 0x62, 0x80, 0x34, 0xb6, 0x75, 0x44, 0x63, 0x90, 0x4e, 0x4e,
+ 0xc9, 0xd0, 0x5e, 0x8c, 0x9b, 0x78, 0xa9, 0xb5, 0xd4, 0xce, 0xec, 0xdb, 0x84, 0xf0, 0x0a, 0xe2,
+ 0x89, 0x67, 0xc4, 0x03, 0x0f, 0x7c, 0x09, 0xbe, 0x03, 0x2f, 0x48, 0x7c, 0x04, 0x18, 0x2f, 0x48,
+ 0x7c, 0x01, 0x1e, 0x91, 0xef, 0x3f, 0x5f, 0xdb, 0x49, 0xd7, 0xb2, 0xbd, 0xf9, 0x9e, 0x73, 0x7c,
+ 0xce, 0xef, 0x9e, 0xfb, 0xbb, 0xbf, 0xe3, 0x04, 0xce, 0x4f, 0x88, 0x3d, 0x38, 0x72, 0xbd, 0xc6,
+ 0x38, 0xf0, 0x89, 0x8f, 0x4a, 0x7c, 0x69, 0x5c, 0x24, 0xf6, 0xc1, 0xc8, 0x21, 0x47, 0xb6, 0x67,
+ 0x0f, 0x9d, 0x60, 0x60, 0x13, 0x9b, 0x45, 0x18, 0x2b, 0xc4, 0x1f, 0xfb, 0xca, 0xfa, 0xfc, 0x24,
+ 0xec, 0x1f, 0x3a, 0x47, 0x62, 0x59, 0x9d, 0x90, 0x3e, 0x19, 0xc5, 0x7e, 0x7c, 0x0d, 0x4a, 0xf7,
+ 0x46, 0xc7, 0x21, 0x71, 0x02, 0xb4, 0x02, 0x39, 0x77, 0x50, 0xd7, 0xb6, 0xb5, 0x1d, 0xdd, 0xcc,
+ 0xb9, 0x03, 0x84, 0xa0, 0xe0, 0xd9, 0x47, 0x4e, 0x3d, 0x47, 0x2d, 0xf4, 0x19, 0x5b, 0x50, 0xe3,
+ 0xe1, 0x8f, 0xfd, 0xe0, 0xd9, 0xd3, 0x91, 0x3f, 0x0d, 0x51, 0x13, 0xf4, 0xa9, 0x58, 0xd4, 0xb5,
+ 0xed, 0xfc, 0x4e, 0xa5, 0xb5, 0xda, 0x10, 0xb8, 0x45, 0x98, 0x19, 0xc7, 0x20, 0x03, 0xca, 0x53,
+ 0x3b, 0xf0, 0x5c, 0x6f, 0x18, 0xd6, 0x73, 0xdb, 0xf9, 0x1d, 0xdd, 0x94, 0x6b, 0xfc, 0x8f, 0x06,
+ 0xe5, 0x87, 0xce, 0x2c, 0x1c, 0xdb, 0x7d, 0x07, 0xbd, 0x0d, 0xa5, 0x3e, 0xab, 0x46, 0x61, 0x55,
+ 0x5a, 0x35, 0x99, 0x97, 0xa3, 0x30, 0x45, 0x00, 0x6a, 0x42, 0xf9, 0x19, 0x7f, 0x8f, 0x22, 0xae,
+ 0xb4, 0x2e, 0x34, 0xe2, 0xcd, 0x8a, 0x94, 0xa6, 0x0c, 0x42, 0x37, 0xa0, 0x18, 0x1e, 0xda, 0xc1,
+ 0x20, 0xac, 0xe7, 0x29, 0xe6, 0x4b, 0x32, 0xb7, 0x08, 0x6e, 0x74, 0xa9, 0xff, 0xbe, 0x47, 0x82,
+ 0x99, 0xc9, 0x83, 0x8d, 0x87, 0x50, 0x51, 0xcc, 0xa8, 0x06, 0xf9, 0x67, 0xce, 0x8c, 0x77, 0x2d,
+ 0x7a, 0x44, 0x57, 0x60, 0x79, 0x62, 0x8f, 0x8e, 0x05, 0x8a, 0x9a, 0x82, 0x82, 0xbe, 0x68, 0x32,
+ 0xf7, 0xfb, 0xb9, 0xf7, 0x34, 0xfc, 0x6f, 0x01, 0x8a, 0x5d, 0x7a, 0x3e, 0x67, 0xda, 0xab, 0x91,
+ 0xda, 0xab, 0xae, 0x6c, 0x6b, 0x0f, 0x56, 0x29, 0x37, 0xac, 0x81, 0xf3, 0xd4, 0xf5, 0x5c, 0xe2,
+ 0xfa, 0x9e, 0xd8, 0x21, 0x6e, 0x64, 0x59, 0xb3, 0x1f, 0x59, 0x76, 0x65, 0xa8, 0x59, 0x23, 0x49,
+ 0x43, 0x88, 0x3e, 0x82, 0x0a, 0x4b, 0x18, 0xba, 0x5f, 0x3b, 0x61, 0xbd, 0x40, 0x53, 0x5d, 0x96,
+ 0xe0, 0x18, 0x7c, 0x96, 0xa7, 0x1b, 0x45, 0xb0, 0x76, 0x01, 0x91, 0x06, 0xe3, 0x0b, 0xa8, 0xa6,
+ 0xdc, 0x73, 0xda, 0xd6, 0x4c, 0xb6, 0x6d, 0x7d, 0x61, 0x01, 0xa5, 0x7f, 0x46, 0x07, 0x56, 0x68,
+ 0x4f, 0xa5, 0x13, 0x6d, 0x80, 0x1e, 0xf8, 0x53, 0xab, 0xef, 0x1f, 0x7b, 0x84, 0xa6, 0x2f, 0x98,
+ 0xe5, 0xc0, 0x9f, 0xde, 0x8b, 0xd6, 0xe8, 0x32, 0x54, 0xa2, 0x4d, 0x5b, 0x23, 0xc7, 0x1b, 0x92,
+ 0x43, 0x5a, 0xa9, 0x60, 0x42, 0x64, 0xfa, 0x94, 0x5a, 0x8c, 0xbf, 0x35, 0xd0, 0x5f, 0x53, 0x2e,
+ 0x74, 0x07, 0xca, 0x07, 0x33, 0x8b, 0xb2, 0x86, 0xf7, 0xff, 0xca, 0xc2, 0x3d, 0x35, 0xee, 0xce,
+ 0xe8, 0x3e, 0x58, 0xef, 0x4a, 0x07, 0x6c, 0x65, 0x3c, 0x81, 0x73, 0xaa, 0x63, 0x4e, 0xd7, 0xae,
+ 0x27, 0xbb, 0xb6, 0x95, 0xae, 0x90, 0xec, 0x8e, 0x4a, 0xbd, 0xdf, 0x34, 0x28, 0x52, 0x07, 0x39,
+ 0x13, 0xf5, 0x76, 0xa0, 0xc8, 0x48, 0x24, 0xe9, 0x2d, 0x05, 0x87, 0x65, 0x33, 0xb9, 0x1f, 0xb5,
+ 0x60, 0x39, 0x24, 0x36, 0x71, 0xea, 0xf9, 0x6d, 0x6d, 0x67, 0xa5, 0xb5, 0x29, 0x73, 0xb2, 0xb8,
+ 0x46, 0xd7, 0x09, 0x26, 0xae, 0x37, 0xec, 0x46, 0x31, 0x26, 0x0b, 0xc5, 0xb7, 0xe0, 0x9c, 0x6a,
+ 0x46, 0x15, 0x28, 0x7d, 0xde, 0x79, 0xd8, 0xd9, 0x7b, 0xdc, 0xa9, 0x2d, 0x45, 0x8b, 0xee, 0x7d,
+ 0xb3, 0xf7, 0xa0, 0xd3, 0xae, 0x69, 0xa8, 0x0a, 0x95, 0xce, 0xde, 0xbe, 0x25, 0x0c, 0x39, 0x3c,
+ 0x85, 0x52, 0xef, 0x7f, 0x5c, 0xa5, 0x39, 0x22, 0x87, 0xde, 0x81, 0xf2, 0xc4, 0x62, 0xb2, 0x49,
+ 0xc1, 0x53, 0x3d, 0xe3, 0x32, 0x2a, 0x85, 0xa4, 0x34, 0x61, 0xd5, 0xf0, 0x23, 0x28, 0xf6, 0xe8,
+ 0x0d, 0x8f, 0xae, 0xe5, 0xa1, 0x1f, 0x12, 0x9a, 0x8f, 0x9d, 0x91, 0x5c, 0xab, 0x98, 0x72, 0x2f,
+ 0xc1, 0x84, 0x7f, 0xd0, 0xa0, 0xd8, 0xdb, 0x6f, 0x47, 0x0d, 0x38, 0x29, 0x25, 0x82, 0xc2, 0xd8,
+ 0xf7, 0x47, 0x02, 0x7a, 0xf4, 0x1c, 0xd9, 0xfa, 0xce, 0x68, 0x44, 0x61, 0xeb, 0x26, 0x7d, 0x56,
+ 0x4b, 0x17, 0x5e, 0xd6, 0x8e, 0x4d, 0xd0, 0x85, 0x92, 0x84, 0xf5, 0x65, 0xaa, 0xcd, 0xb1, 0x01,
+ 0x7f, 0xa3, 0x41, 0x59, 0x08, 0xfa, 0x6b, 0x13, 0xac, 0x26, 0x94, 0xc5, 0x68, 0xe0, 0xdd, 0x56,
+ 0x85, 0x5b, 0xce, 0x0f, 0x19, 0x84, 0x7f, 0xd2, 0x60, 0xf5, 0x63, 0xd7, 0x1b, 0xb0, 0xfe, 0x9b,
+ 0xce, 0xf3, 0x63, 0x27, 0x24, 0x68, 0x0d, 0x96, 0x29, 0xf1, 0x78, 0x9b, 0xd8, 0x22, 0xba, 0xa5,
+ 0x1c, 0x83, 0xe5, 0x0e, 0xc4, 0xb4, 0x01, 0x6e, 0x7a, 0x30, 0x08, 0xd1, 0x23, 0x40, 0xb1, 0xba,
+ 0x59, 0xfe, 0x58, 0xe8, 0xa5, 0x46, 0xf5, 0x52, 0x6c, 0xa8, 0xed, 0x10, 0x56, 0x4d, 0x5e, 0xa5,
+ 0x3d, 0x16, 0xc9, 0xf5, 0x52, 0xb1, 0xe0, 0x35, 0x40, 0x6d, 0x87, 0xf0, 0x16, 0x84, 0x1c, 0x1e,
+ 0xbe, 0x07, 0x17, 0x12, 0xd6, 0x70, 0xec, 0x7b, 0x21, 0xa5, 0x1a, 0x07, 0x23, 0x46, 0x67, 0xb6,
+ 0x8b, 0x32, 0x02, 0xb7, 0xa0, 0xda, 0x76, 0x48, 0x44, 0x0c, 0x91, 0x37, 0xbd, 0x41, 0x2d, 0xbd,
+ 0x41, 0x7c, 0x0b, 0x6a, 0xf1, 0x3b, 0xbc, 0xea, 0x9b, 0xb0, 0x3c, 0x8c, 0x0c, 0xbc, 0x64, 0x55,
+ 0x96, 0x64, 0xac, 0x33, 0x99, 0x17, 0xdf, 0xa4, 0x98, 0x05, 0xe3, 0x4f, 0x5f, 0xb2, 0x0d, 0x6b,
+ 0xc9, 0xf7, 0x78, 0xd9, 0xa6, 0x4a, 0xae, 0xf4, 0x87, 0x82, 0xbc, 0x58, 0x0a, 0xdf, 0x7e, 0xd1,
+ 0x28, 0xf8, 0xe4, 0x41, 0x5f, 0x02, 0x88, 0xcb, 0xf3, 0xd3, 0xd6, 0x65, 0xf5, 0x13, 0xa9, 0x26,
+ 0x39, 0x92, 0x57, 0x39, 0x32, 0x9f, 0x02, 0x85, 0x57, 0xa0, 0xc0, 0x77, 0x1a, 0xac, 0xca, 0xf8,
+ 0x53, 0xf7, 0x6d, 0x01, 0x90, 0xdc, 0x2b, 0x00, 0xb9, 0x4d, 0xb9, 0x28, 0x71, 0xf0, 0x73, 0xb8,
+ 0x0a, 0x25, 0xa6, 0x66, 0x59, 0x02, 0xf0, 0x56, 0x0b, 0x3f, 0xde, 0x85, 0xf5, 0x85, 0xf5, 0xd0,
+ 0x5b, 0x50, 0xb5, 0x87, 0xc3, 0xc0, 0x89, 0xd8, 0xc2, 0xbf, 0x0e, 0xa2, 0xe3, 0x28, 0x9b, 0x2b,
+ 0xd2, 0x4c, 0x47, 0x3e, 0xde, 0xa3, 0xc7, 0xc8, 0xe7, 0x03, 0xef, 0xc6, 0x49, 0xca, 0xf6, 0xb2,
+ 0x5b, 0x8b, 0xaf, 0xd3, 0xfe, 0xb2, 0x84, 0xa7, 0xe7, 0x25, 0xeb, 0x86, 0x7c, 0x2b, 0xee, 0x06,
+ 0x9b, 0x58, 0xd9, 0x6e, 0x70, 0xc4, 0xc2, 0x8f, 0x3b, 0xb4, 0x6c, 0xef, 0x75, 0xf1, 0x11, 0xdf,
+ 0xa0, 0x80, 0x7a, 0x67, 0xe4, 0x09, 0xde, 0xa5, 0xf7, 0xb2, 0x97, 0x3e, 0xd6, 0x6b, 0xa0, 0x8b,
+ 0xb1, 0x95, 0x15, 0x13, 0x01, 0xba, 0xcc, 0xc7, 0x56, 0x88, 0xbf, 0xd5, 0x68, 0x75, 0x29, 0xb0,
+ 0xaf, 0x7e, 0xbd, 0xc4, 0x2c, 0xcd, 0x2b, 0xb3, 0xf4, 0x32, 0x54, 0xec, 0x3e, 0x71, 0x27, 0x8e,
+ 0xe5, 0x7b, 0xa3, 0x19, 0xbd, 0x55, 0x65, 0x13, 0x98, 0x69, 0xcf, 0x1b, 0xcd, 0xf0, 0xcf, 0x1a,
+ 0xdd, 0x8d, 0xfc, 0x39, 0x71, 0xea, 0xdb, 0x92, 0xca, 0x9c, 0x4b, 0x67, 0x4e, 0xce, 0xb2, 0x7c,
+ 0x6a, 0x96, 0xa1, 0xab, 0x50, 0x73, 0x87, 0x9e, 0x1f, 0x38, 0x56, 0x1c, 0x54, 0xa0, 0x41, 0x55,
+ 0x66, 0x97, 0xfa, 0x85, 0xff, 0xd4, 0xa8, 0xa0, 0x29, 0x10, 0x79, 0xc7, 0x87, 0xb0, 0x26, 0x7f,
+ 0xd5, 0x58, 0x07, 0x33, 0x2b, 0x9e, 0x87, 0x51, 0xf3, 0x6f, 0xa8, 0x57, 0x36, 0xf3, 0xb2, 0x9c,
+ 0x6c, 0xe1, 0xdd, 0x19, 0x57, 0x7a, 0xf6, 0xf5, 0x87, 0xa6, 0x19, 0x87, 0xf1, 0x25, 0x5c, 0x5c,
+ 0x10, 0x7e, 0x96, 0x2f, 0xe9, 0xf4, 0x2f, 0x37, 0xf5, 0x73, 0xf0, 0x09, 0xd4, 0x7a, 0xfb, 0xf7,
+ 0xbf, 0x1a, 0x8f, 0x6c, 0xd7, 0x13, 0x47, 0x50, 0x4f, 0x4e, 0x78, 0xfd, 0x74, 0xf3, 0xbc, 0x06,
+ 0xf9, 0xf0, 0xb9, 0xf8, 0x02, 0x89, 0x1e, 0x71, 0x13, 0x56, 0x95, 0xdc, 0xbc, 0x77, 0x06, 0x94,
+ 0x03, 0xfe, 0x2c, 0xee, 0xbf, 0x58, 0xb7, 0xbe, 0x2f, 0x41, 0xa9, 0xb7, 0x7f, 0x27, 0x02, 0x8d,
+ 0x3e, 0x00, 0x88, 0x87, 0x3d, 0x32, 0xe4, 0x66, 0x32, 0x5f, 0x00, 0x46, 0x5a, 0xc5, 0xf0, 0x12,
+ 0xfa, 0x04, 0x2a, 0xca, 0xd4, 0x45, 0x1b, 0xea, 0x89, 0xa4, 0x26, 0xb4, 0xb1, 0x39, 0xdf, 0xc9,
+ 0x20, 0xe1, 0xa5, 0xe8, 0x7b, 0x5e, 0x0c, 0x52, 0x54, 0x57, 0x63, 0xd5, 0x79, 0x6c, 0xac, 0xcf,
+ 0xf1, 0xc8, 0x14, 0x9f, 0xc1, 0x39, 0x75, 0x30, 0xa2, 0x44, 0xc9, 0xf4, 0x9c, 0x35, 0x2e, 0x2d,
+ 0xf0, 0xca, 0x74, 0xb7, 0x40, 0x97, 0xe2, 0x8c, 0xd6, 0xb3, 0x03, 0xe2, 0x84, 0xc6, 0xb4, 0x01,
+ 0xe2, 0xc1, 0xa0, 0x74, 0x35, 0x33, 0xb5, 0x8c, 0x8d, 0xb9, 0xbe, 0x14, 0x06, 0xfe, 0x43, 0x22,
+ 0x81, 0x21, 0x21, 0xf7, 0x46, 0x5a, 0x54, 0x25, 0x06, 0x2e, 0xc7, 0x49, 0x0c, 0x49, 0x65, 0x4f,
+ 0x62, 0x48, 0xe9, 0x37, 0x5e, 0x42, 0x1f, 0xd2, 0x44, 0xbd, 0x0c, 0x45, 0x32, 0x5a, 0x6d, 0x64,
+ 0xf4, 0x50, 0x72, 0x44, 0xa8, 0x69, 0x92, 0x23, 0x29, 0x69, 0x4e, 0x72, 0xa4, 0x97, 0xed, 0xc6,
+ 0x6d, 0x9a, 0x4b, 0x7e, 0x22, 0x6f, 0xcc, 0x53, 0x00, 0x91, 0x2b, 0xfb, 0x1f, 0x89, 0x64, 0x48,
+ 0xfc, 0xdf, 0xca, 0xe6, 0x02, 0x0d, 0x99, 0xc3, 0x90, 0x8c, 0xc2, 0xe0, 0x25, 0xb4, 0x0b, 0xba,
+ 0xbc, 0x79, 0xca, 0xe9, 0xa4, 0x6f, 0xba, 0x61, 0xcc, 0x73, 0x89, 0x2c, 0x77, 0x6f, 0xfe, 0xfa,
+ 0x62, 0x4b, 0xfb, 0xfd, 0xc5, 0x96, 0xf6, 0xc7, 0x8b, 0x2d, 0xed, 0xc7, 0xbf, 0xb6, 0x96, 0x9e,
+ 0xbc, 0x31, 0x71, 0x89, 0x13, 0x86, 0x0d, 0xd7, 0x6f, 0xb2, 0xa7, 0xe6, 0xd0, 0x6f, 0x4e, 0x48,
+ 0x93, 0xfe, 0xa7, 0xd4, 0xe4, 0xb9, 0x0e, 0x8a, 0x74, 0xf9, 0xee, 0x7f, 0x01, 0x00, 0x00, 0xff,
+ 0xff, 0x30, 0xe9, 0x27, 0x5f, 0xc5, 0x12, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@@ -505,13 +2088,41 @@ const _ = grpc.SupportPackageIsVersion4
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type VTAdminClient interface {
+ // FindSchema returns a single Schema that matches the provided table name
+ // across all specified clusters IDs. Not specifying a set of cluster IDs
+ // causes the search to span all configured clusters.
+ //
+ // An error occurs if either no table exists across any of the clusters with
+ // the specified table name, or if multiple tables exist with that name.
+ FindSchema(ctx context.Context, in *FindSchemaRequest, opts ...grpc.CallOption) (*Schema, error)
+ // GetClusters returns all configured clusters.
+ GetClusters(ctx context.Context, in *GetClustersRequest, opts ...grpc.CallOption) (*GetClustersResponse, error)
// GetGates returns all gates across all the specified clusters.
GetGates(ctx context.Context, in *GetGatesRequest, opts ...grpc.CallOption) (*GetGatesResponse, error)
+ // GetKeyspaces returns all keyspaces across the specified clusters.
+ GetKeyspaces(ctx context.Context, in *GetKeyspacesRequest, opts ...grpc.CallOption) (*GetKeyspacesResponse, error)
+ // GetSchema returns the schema for the specified (cluster, keyspace, table)
+ // tuple.
+ GetSchema(ctx context.Context, in *GetSchemaRequest, opts ...grpc.CallOption) (*Schema, error)
+ // GetSchemas returns all schemas across the specified clusters.
+ GetSchemas(ctx context.Context, in *GetSchemasRequest, opts ...grpc.CallOption) (*GetSchemasResponse, error)
// GetTablet looks up a tablet by hostname across all clusters and returns
// the result.
GetTablet(ctx context.Context, in *GetTabletRequest, opts ...grpc.CallOption) (*Tablet, error)
// GetTablets returns all tablets across all the specified clusters.
GetTablets(ctx context.Context, in *GetTabletsRequest, opts ...grpc.CallOption) (*GetTabletsResponse, error)
+ // GetVSchema returns a VSchema for the specified keyspace in the specified
+ // cluster.
+ GetVSchema(ctx context.Context, in *GetVSchemaRequest, opts ...grpc.CallOption) (*VSchema, error)
+ // GetVSchemas returns the VSchemas for all specified clusters.
+ GetVSchemas(ctx context.Context, in *GetVSchemasRequest, opts ...grpc.CallOption) (*GetVSchemasResponse, error)
+ // GetWorkflow returns a single Workflow for a given cluster, keyspace, and
+ // workflow name.
+ GetWorkflow(ctx context.Context, in *GetWorkflowRequest, opts ...grpc.CallOption) (*Workflow, error)
+ // GetWorkflows returns the Workflows for all specified clusters.
+ GetWorkflows(ctx context.Context, in *GetWorkflowsRequest, opts ...grpc.CallOption) (*GetWorkflowsResponse, error)
+ // VTExplain provides information on how Vitess plans to execute a particular query.
+ VTExplain(ctx context.Context, in *VTExplainRequest, opts ...grpc.CallOption) (*VTExplainResponse, error)
}
type vTAdminClient struct {
@@ -522,6 +2133,24 @@ func NewVTAdminClient(cc *grpc.ClientConn) VTAdminClient {
return &vTAdminClient{cc}
}
+func (c *vTAdminClient) FindSchema(ctx context.Context, in *FindSchemaRequest, opts ...grpc.CallOption) (*Schema, error) {
+ out := new(Schema)
+ err := c.cc.Invoke(ctx, "/vtadmin.VTAdmin/FindSchema", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vTAdminClient) GetClusters(ctx context.Context, in *GetClustersRequest, opts ...grpc.CallOption) (*GetClustersResponse, error) {
+ out := new(GetClustersResponse)
+ err := c.cc.Invoke(ctx, "/vtadmin.VTAdmin/GetClusters", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
func (c *vTAdminClient) GetGates(ctx context.Context, in *GetGatesRequest, opts ...grpc.CallOption) (*GetGatesResponse, error) {
out := new(GetGatesResponse)
err := c.cc.Invoke(ctx, "/vtadmin.VTAdmin/GetGates", in, out, opts...)
@@ -531,6 +2160,33 @@ func (c *vTAdminClient) GetGates(ctx context.Context, in *GetGatesRequest, opts
return out, nil
}
+func (c *vTAdminClient) GetKeyspaces(ctx context.Context, in *GetKeyspacesRequest, opts ...grpc.CallOption) (*GetKeyspacesResponse, error) {
+ out := new(GetKeyspacesResponse)
+ err := c.cc.Invoke(ctx, "/vtadmin.VTAdmin/GetKeyspaces", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vTAdminClient) GetSchema(ctx context.Context, in *GetSchemaRequest, opts ...grpc.CallOption) (*Schema, error) {
+ out := new(Schema)
+ err := c.cc.Invoke(ctx, "/vtadmin.VTAdmin/GetSchema", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vTAdminClient) GetSchemas(ctx context.Context, in *GetSchemasRequest, opts ...grpc.CallOption) (*GetSchemasResponse, error) {
+ out := new(GetSchemasResponse)
+ err := c.cc.Invoke(ctx, "/vtadmin.VTAdmin/GetSchemas", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
func (c *vTAdminClient) GetTablet(ctx context.Context, in *GetTabletRequest, opts ...grpc.CallOption) (*Tablet, error) {
out := new(Tablet)
err := c.cc.Invoke(ctx, "/vtadmin.VTAdmin/GetTablet", in, out, opts...)
@@ -549,35 +2205,174 @@ func (c *vTAdminClient) GetTablets(ctx context.Context, in *GetTabletsRequest, o
return out, nil
}
-// VTAdminServer is the server API for VTAdmin service.
-type VTAdminServer interface {
- // GetGates returns all gates across all the specified clusters.
- GetGates(context.Context, *GetGatesRequest) (*GetGatesResponse, error)
- // GetTablet looks up a tablet by hostname across all clusters and returns
- // the result.
- GetTablet(context.Context, *GetTabletRequest) (*Tablet, error)
- // GetTablets returns all tablets across all the specified clusters.
- GetTablets(context.Context, *GetTabletsRequest) (*GetTabletsResponse, error)
+func (c *vTAdminClient) GetVSchema(ctx context.Context, in *GetVSchemaRequest, opts ...grpc.CallOption) (*VSchema, error) {
+ out := new(VSchema)
+ err := c.cc.Invoke(ctx, "/vtadmin.VTAdmin/GetVSchema", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
}
-// UnimplementedVTAdminServer can be embedded to have forward compatible implementations.
-type UnimplementedVTAdminServer struct {
+func (c *vTAdminClient) GetVSchemas(ctx context.Context, in *GetVSchemasRequest, opts ...grpc.CallOption) (*GetVSchemasResponse, error) {
+ out := new(GetVSchemasResponse)
+ err := c.cc.Invoke(ctx, "/vtadmin.VTAdmin/GetVSchemas", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
}
-func (*UnimplementedVTAdminServer) GetGates(ctx context.Context, req *GetGatesRequest) (*GetGatesResponse, error) {
- return nil, status.Errorf(codes.Unimplemented, "method GetGates not implemented")
-}
-func (*UnimplementedVTAdminServer) GetTablet(ctx context.Context, req *GetTabletRequest) (*Tablet, error) {
+func (c *vTAdminClient) GetWorkflow(ctx context.Context, in *GetWorkflowRequest, opts ...grpc.CallOption) (*Workflow, error) {
+ out := new(Workflow)
+ err := c.cc.Invoke(ctx, "/vtadmin.VTAdmin/GetWorkflow", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vTAdminClient) GetWorkflows(ctx context.Context, in *GetWorkflowsRequest, opts ...grpc.CallOption) (*GetWorkflowsResponse, error) {
+ out := new(GetWorkflowsResponse)
+ err := c.cc.Invoke(ctx, "/vtadmin.VTAdmin/GetWorkflows", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vTAdminClient) VTExplain(ctx context.Context, in *VTExplainRequest, opts ...grpc.CallOption) (*VTExplainResponse, error) {
+ out := new(VTExplainResponse)
+ err := c.cc.Invoke(ctx, "/vtadmin.VTAdmin/VTExplain", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// VTAdminServer is the server API for VTAdmin service.
+type VTAdminServer interface {
+ // FindSchema returns a single Schema that matches the provided table name
+ // across all specified clusters IDs. Not specifying a set of cluster IDs
+ // causes the search to span all configured clusters.
+ //
+ // An error occurs if either no table exists across any of the clusters with
+ // the specified table name, or if multiple tables exist with that name.
+ FindSchema(context.Context, *FindSchemaRequest) (*Schema, error)
+ // GetClusters returns all configured clusters.
+ GetClusters(context.Context, *GetClustersRequest) (*GetClustersResponse, error)
+ // GetGates returns all gates across all the specified clusters.
+ GetGates(context.Context, *GetGatesRequest) (*GetGatesResponse, error)
+ // GetKeyspaces returns all keyspaces across the specified clusters.
+ GetKeyspaces(context.Context, *GetKeyspacesRequest) (*GetKeyspacesResponse, error)
+ // GetSchema returns the schema for the specified (cluster, keyspace, table)
+ // tuple.
+ GetSchema(context.Context, *GetSchemaRequest) (*Schema, error)
+ // GetSchemas returns all schemas across the specified clusters.
+ GetSchemas(context.Context, *GetSchemasRequest) (*GetSchemasResponse, error)
+ // GetTablet looks up a tablet by hostname across all clusters and returns
+ // the result.
+ GetTablet(context.Context, *GetTabletRequest) (*Tablet, error)
+ // GetTablets returns all tablets across all the specified clusters.
+ GetTablets(context.Context, *GetTabletsRequest) (*GetTabletsResponse, error)
+ // GetVSchema returns a VSchema for the specified keyspace in the specified
+ // cluster.
+ GetVSchema(context.Context, *GetVSchemaRequest) (*VSchema, error)
+ // GetVSchemas returns the VSchemas for all specified clusters.
+ GetVSchemas(context.Context, *GetVSchemasRequest) (*GetVSchemasResponse, error)
+ // GetWorkflow returns a single Workflow for a given cluster, keyspace, and
+ // workflow name.
+ GetWorkflow(context.Context, *GetWorkflowRequest) (*Workflow, error)
+ // GetWorkflows returns the Workflows for all specified clusters.
+ GetWorkflows(context.Context, *GetWorkflowsRequest) (*GetWorkflowsResponse, error)
+ // VTExplain provides information on how Vitess plans to execute a particular query.
+ VTExplain(context.Context, *VTExplainRequest) (*VTExplainResponse, error)
+}
+
+// UnimplementedVTAdminServer can be embedded to have forward compatible implementations.
+type UnimplementedVTAdminServer struct {
+}
+
+func (*UnimplementedVTAdminServer) FindSchema(ctx context.Context, req *FindSchemaRequest) (*Schema, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method FindSchema not implemented")
+}
+func (*UnimplementedVTAdminServer) GetClusters(ctx context.Context, req *GetClustersRequest) (*GetClustersResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetClusters not implemented")
+}
+func (*UnimplementedVTAdminServer) GetGates(ctx context.Context, req *GetGatesRequest) (*GetGatesResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetGates not implemented")
+}
+func (*UnimplementedVTAdminServer) GetKeyspaces(ctx context.Context, req *GetKeyspacesRequest) (*GetKeyspacesResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetKeyspaces not implemented")
+}
+func (*UnimplementedVTAdminServer) GetSchema(ctx context.Context, req *GetSchemaRequest) (*Schema, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetSchema not implemented")
+}
+func (*UnimplementedVTAdminServer) GetSchemas(ctx context.Context, req *GetSchemasRequest) (*GetSchemasResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetSchemas not implemented")
+}
+func (*UnimplementedVTAdminServer) GetTablet(ctx context.Context, req *GetTabletRequest) (*Tablet, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetTablet not implemented")
}
func (*UnimplementedVTAdminServer) GetTablets(ctx context.Context, req *GetTabletsRequest) (*GetTabletsResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetTablets not implemented")
}
+func (*UnimplementedVTAdminServer) GetVSchema(ctx context.Context, req *GetVSchemaRequest) (*VSchema, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetVSchema not implemented")
+}
+func (*UnimplementedVTAdminServer) GetVSchemas(ctx context.Context, req *GetVSchemasRequest) (*GetVSchemasResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetVSchemas not implemented")
+}
+func (*UnimplementedVTAdminServer) GetWorkflow(ctx context.Context, req *GetWorkflowRequest) (*Workflow, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetWorkflow not implemented")
+}
+func (*UnimplementedVTAdminServer) GetWorkflows(ctx context.Context, req *GetWorkflowsRequest) (*GetWorkflowsResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetWorkflows not implemented")
+}
+func (*UnimplementedVTAdminServer) VTExplain(ctx context.Context, req *VTExplainRequest) (*VTExplainResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method VTExplain not implemented")
+}
func RegisterVTAdminServer(s *grpc.Server, srv VTAdminServer) {
s.RegisterService(&_VTAdmin_serviceDesc, srv)
}
+func _VTAdmin_FindSchema_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(FindSchemaRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VTAdminServer).FindSchema(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtadmin.VTAdmin/FindSchema",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VTAdminServer).FindSchema(ctx, req.(*FindSchemaRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VTAdmin_GetClusters_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(GetClustersRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VTAdminServer).GetClusters(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtadmin.VTAdmin/GetClusters",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VTAdminServer).GetClusters(ctx, req.(*GetClustersRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
func _VTAdmin_GetGates_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetGatesRequest)
if err := dec(in); err != nil {
@@ -596,6 +2391,60 @@ func _VTAdmin_GetGates_Handler(srv interface{}, ctx context.Context, dec func(in
return interceptor(ctx, in, info, handler)
}
+func _VTAdmin_GetKeyspaces_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(GetKeyspacesRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VTAdminServer).GetKeyspaces(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtadmin.VTAdmin/GetKeyspaces",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VTAdminServer).GetKeyspaces(ctx, req.(*GetKeyspacesRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VTAdmin_GetSchema_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(GetSchemaRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VTAdminServer).GetSchema(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtadmin.VTAdmin/GetSchema",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VTAdminServer).GetSchema(ctx, req.(*GetSchemaRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VTAdmin_GetSchemas_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(GetSchemasRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VTAdminServer).GetSchemas(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtadmin.VTAdmin/GetSchemas",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VTAdminServer).GetSchemas(ctx, req.(*GetSchemasRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
func _VTAdmin_GetTablet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetTabletRequest)
if err := dec(in); err != nil {
@@ -632,14 +2481,124 @@ func _VTAdmin_GetTablets_Handler(srv interface{}, ctx context.Context, dec func(
return interceptor(ctx, in, info, handler)
}
+func _VTAdmin_GetVSchema_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(GetVSchemaRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VTAdminServer).GetVSchema(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtadmin.VTAdmin/GetVSchema",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VTAdminServer).GetVSchema(ctx, req.(*GetVSchemaRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VTAdmin_GetVSchemas_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(GetVSchemasRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VTAdminServer).GetVSchemas(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtadmin.VTAdmin/GetVSchemas",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VTAdminServer).GetVSchemas(ctx, req.(*GetVSchemasRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VTAdmin_GetWorkflow_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(GetWorkflowRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VTAdminServer).GetWorkflow(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtadmin.VTAdmin/GetWorkflow",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VTAdminServer).GetWorkflow(ctx, req.(*GetWorkflowRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VTAdmin_GetWorkflows_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(GetWorkflowsRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VTAdminServer).GetWorkflows(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtadmin.VTAdmin/GetWorkflows",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VTAdminServer).GetWorkflows(ctx, req.(*GetWorkflowsRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _VTAdmin_VTExplain_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(VTExplainRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VTAdminServer).VTExplain(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtadmin.VTAdmin/VTExplain",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VTAdminServer).VTExplain(ctx, req.(*VTExplainRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
var _VTAdmin_serviceDesc = grpc.ServiceDesc{
ServiceName: "vtadmin.VTAdmin",
HandlerType: (*VTAdminServer)(nil),
Methods: []grpc.MethodDesc{
+ {
+ MethodName: "FindSchema",
+ Handler: _VTAdmin_FindSchema_Handler,
+ },
+ {
+ MethodName: "GetClusters",
+ Handler: _VTAdmin_GetClusters_Handler,
+ },
{
MethodName: "GetGates",
Handler: _VTAdmin_GetGates_Handler,
},
+ {
+ MethodName: "GetKeyspaces",
+ Handler: _VTAdmin_GetKeyspaces_Handler,
+ },
+ {
+ MethodName: "GetSchema",
+ Handler: _VTAdmin_GetSchema_Handler,
+ },
+ {
+ MethodName: "GetSchemas",
+ Handler: _VTAdmin_GetSchemas_Handler,
+ },
{
MethodName: "GetTablet",
Handler: _VTAdmin_GetTablet_Handler,
@@ -648,7 +2607,6817 @@ var _VTAdmin_serviceDesc = grpc.ServiceDesc{
MethodName: "GetTablets",
Handler: _VTAdmin_GetTablets_Handler,
},
+ {
+ MethodName: "GetVSchema",
+ Handler: _VTAdmin_GetVSchema_Handler,
+ },
+ {
+ MethodName: "GetVSchemas",
+ Handler: _VTAdmin_GetVSchemas_Handler,
+ },
+ {
+ MethodName: "GetWorkflow",
+ Handler: _VTAdmin_GetWorkflow_Handler,
+ },
+ {
+ MethodName: "GetWorkflows",
+ Handler: _VTAdmin_GetWorkflows_Handler,
+ },
+ {
+ MethodName: "VTExplain",
+ Handler: _VTAdmin_VTExplain_Handler,
+ },
},
Streams: []grpc.StreamDesc{},
Metadata: "vtadmin.proto",
}
+
+func (m *Cluster) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Cluster) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Cluster) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Id) > 0 {
+ i -= len(m.Id)
+ copy(dAtA[i:], m.Id)
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.Id)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ClusterWorkflows) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ClusterWorkflows) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ClusterWorkflows) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Warnings) > 0 {
+ for iNdEx := len(m.Warnings) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Warnings[iNdEx])
+ copy(dAtA[i:], m.Warnings[iNdEx])
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.Warnings[iNdEx])))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Workflows) > 0 {
+ for iNdEx := len(m.Workflows) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Workflows[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtadmin(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Keyspace) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Keyspace) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Keyspace) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Shards) > 0 {
+ for k := range m.Shards {
+ v := m.Shards[k]
+ baseI := i
+ if v != nil {
+ {
+ size, err := v.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtadmin(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintVtadmin(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if m.Keyspace != nil {
+ {
+ size, err := m.Keyspace.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtadmin(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Cluster != nil {
+ {
+ size, err := m.Cluster.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtadmin(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Schema) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Schema) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Schema) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.TableSizes) > 0 {
+ for k := range m.TableSizes {
+ v := m.TableSizes[k]
+ baseI := i
+ if v != nil {
+ {
+ size, err := v.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtadmin(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintVtadmin(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if len(m.TableDefinitions) > 0 {
+ for iNdEx := len(m.TableDefinitions) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.TableDefinitions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtadmin(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Cluster != nil {
+ {
+ size, err := m.Cluster.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtadmin(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Schema_ShardTableSize) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Schema_ShardTableSize) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Schema_ShardTableSize) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.DataLength != 0 {
+ i = encodeVarintVtadmin(dAtA, i, uint64(m.DataLength))
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.RowCount != 0 {
+ i = encodeVarintVtadmin(dAtA, i, uint64(m.RowCount))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Schema_TableSize) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Schema_TableSize) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Schema_TableSize) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.ByShard) > 0 {
+ for k := range m.ByShard {
+ v := m.ByShard[k]
+ baseI := i
+ if v != nil {
+ {
+ size, err := v.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtadmin(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintVtadmin(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if m.DataLength != 0 {
+ i = encodeVarintVtadmin(dAtA, i, uint64(m.DataLength))
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.RowCount != 0 {
+ i = encodeVarintVtadmin(dAtA, i, uint64(m.RowCount))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Tablet) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Tablet) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Tablet) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.State != 0 {
+ i = encodeVarintVtadmin(dAtA, i, uint64(m.State))
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.Tablet != nil {
+ {
+ size, err := m.Tablet.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtadmin(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Cluster != nil {
+ {
+ size, err := m.Cluster.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtadmin(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *VSchema) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *VSchema) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *VSchema) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.VSchema != nil {
+ {
+ size, err := m.VSchema.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtadmin(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Cluster != nil {
+ {
+ size, err := m.Cluster.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtadmin(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Vtctld) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Vtctld) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Vtctld) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Cluster != nil {
+ {
+ size, err := m.Cluster.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtadmin(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Hostname) > 0 {
+ i -= len(m.Hostname)
+ copy(dAtA[i:], m.Hostname)
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.Hostname)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *VTGate) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *VTGate) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *VTGate) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Keyspaces) > 0 {
+ for iNdEx := len(m.Keyspaces) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Keyspaces[iNdEx])
+ copy(dAtA[i:], m.Keyspaces[iNdEx])
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.Keyspaces[iNdEx])))
+ i--
+ dAtA[i] = 0x2a
+ }
+ }
+ if m.Cluster != nil {
+ {
+ size, err := m.Cluster.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtadmin(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ if len(m.Cell) > 0 {
+ i -= len(m.Cell)
+ copy(dAtA[i:], m.Cell)
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.Cell)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Pool) > 0 {
+ i -= len(m.Pool)
+ copy(dAtA[i:], m.Pool)
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.Pool)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Hostname) > 0 {
+ i -= len(m.Hostname)
+ copy(dAtA[i:], m.Hostname)
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.Hostname)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Workflow) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Workflow) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Workflow) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Workflow != nil {
+ {
+ size, err := m.Workflow.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtadmin(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Cluster != nil {
+ {
+ size, err := m.Cluster.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtadmin(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *FindSchemaRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *FindSchemaRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *FindSchemaRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.TableSizeOptions != nil {
+ {
+ size, err := m.TableSizeOptions.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtadmin(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.ClusterIds) > 0 {
+ for iNdEx := len(m.ClusterIds) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.ClusterIds[iNdEx])
+ copy(dAtA[i:], m.ClusterIds[iNdEx])
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.ClusterIds[iNdEx])))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Table) > 0 {
+ i -= len(m.Table)
+ copy(dAtA[i:], m.Table)
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.Table)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetClustersRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetClustersRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetClustersRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetClustersResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetClustersResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetClustersResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Clusters) > 0 {
+ for iNdEx := len(m.Clusters) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Clusters[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtadmin(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetGatesRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetGatesRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetGatesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.ClusterIds) > 0 {
+ for iNdEx := len(m.ClusterIds) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.ClusterIds[iNdEx])
+ copy(dAtA[i:], m.ClusterIds[iNdEx])
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.ClusterIds[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetGatesResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetGatesResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetGatesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Gates) > 0 {
+ for iNdEx := len(m.Gates) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Gates[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtadmin(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetKeyspacesRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetKeyspacesRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetKeyspacesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.ClusterIds) > 0 {
+ for iNdEx := len(m.ClusterIds) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.ClusterIds[iNdEx])
+ copy(dAtA[i:], m.ClusterIds[iNdEx])
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.ClusterIds[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetKeyspacesResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetKeyspacesResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetKeyspacesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Keyspaces) > 0 {
+ for iNdEx := len(m.Keyspaces) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Keyspaces[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtadmin(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetSchemaRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetSchemaRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetSchemaRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.TableSizeOptions != nil {
+ {
+ size, err := m.TableSizeOptions.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtadmin(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ if len(m.Table) > 0 {
+ i -= len(m.Table)
+ copy(dAtA[i:], m.Table)
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.Table)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.ClusterId) > 0 {
+ i -= len(m.ClusterId)
+ copy(dAtA[i:], m.ClusterId)
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.ClusterId)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetSchemasRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetSchemasRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetSchemasRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.TableSizeOptions != nil {
+ {
+ size, err := m.TableSizeOptions.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtadmin(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.ClusterIds) > 0 {
+ for iNdEx := len(m.ClusterIds) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.ClusterIds[iNdEx])
+ copy(dAtA[i:], m.ClusterIds[iNdEx])
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.ClusterIds[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetSchemasResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetSchemasResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetSchemasResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Schemas) > 0 {
+ for iNdEx := len(m.Schemas) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Schemas[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtadmin(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetSchemaTableSizeOptions) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetSchemaTableSizeOptions) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetSchemaTableSizeOptions) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.AggregateSizes {
+ i--
+ if m.AggregateSizes {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetTabletRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetTabletRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetTabletRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.ClusterIds) > 0 {
+ for iNdEx := len(m.ClusterIds) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.ClusterIds[iNdEx])
+ copy(dAtA[i:], m.ClusterIds[iNdEx])
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.ClusterIds[iNdEx])))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Hostname) > 0 {
+ i -= len(m.Hostname)
+ copy(dAtA[i:], m.Hostname)
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.Hostname)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetTabletsRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetTabletsRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetTabletsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.ClusterIds) > 0 {
+ for iNdEx := len(m.ClusterIds) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.ClusterIds[iNdEx])
+ copy(dAtA[i:], m.ClusterIds[iNdEx])
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.ClusterIds[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetTabletsResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetTabletsResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetTabletsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Tablets) > 0 {
+ for iNdEx := len(m.Tablets) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Tablets[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtadmin(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetVSchemaRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetVSchemaRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetVSchemaRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.ClusterId) > 0 {
+ i -= len(m.ClusterId)
+ copy(dAtA[i:], m.ClusterId)
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.ClusterId)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetVSchemasRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetVSchemasRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetVSchemasRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.ClusterIds) > 0 {
+ for iNdEx := len(m.ClusterIds) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.ClusterIds[iNdEx])
+ copy(dAtA[i:], m.ClusterIds[iNdEx])
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.ClusterIds[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetVSchemasResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetVSchemasResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetVSchemasResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.VSchemas) > 0 {
+ for iNdEx := len(m.VSchemas) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.VSchemas[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtadmin(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetWorkflowRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetWorkflowRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetWorkflowRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.ActiveOnly {
+ i--
+ if m.ActiveOnly {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x20
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.ClusterId) > 0 {
+ i -= len(m.ClusterId)
+ copy(dAtA[i:], m.ClusterId)
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.ClusterId)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetWorkflowsRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetWorkflowsRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetWorkflowsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.IgnoreKeyspaces) > 0 {
+ for iNdEx := len(m.IgnoreKeyspaces) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.IgnoreKeyspaces[iNdEx])
+ copy(dAtA[i:], m.IgnoreKeyspaces[iNdEx])
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.IgnoreKeyspaces[iNdEx])))
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if len(m.Keyspaces) > 0 {
+ for iNdEx := len(m.Keyspaces) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Keyspaces[iNdEx])
+ copy(dAtA[i:], m.Keyspaces[iNdEx])
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.Keyspaces[iNdEx])))
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if m.ActiveOnly {
+ i--
+ if m.ActiveOnly {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.ClusterIds) > 0 {
+ for iNdEx := len(m.ClusterIds) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.ClusterIds[iNdEx])
+ copy(dAtA[i:], m.ClusterIds[iNdEx])
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.ClusterIds[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetWorkflowsResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetWorkflowsResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetWorkflowsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.WorkflowsByCluster) > 0 {
+ for k := range m.WorkflowsByCluster {
+ v := m.WorkflowsByCluster[k]
+ baseI := i
+ if v != nil {
+ {
+ size, err := v.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtadmin(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintVtadmin(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *VTExplainRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *VTExplainRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *VTExplainRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Sql) > 0 {
+ i -= len(m.Sql)
+ copy(dAtA[i:], m.Sql)
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.Sql)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Cluster) > 0 {
+ i -= len(m.Cluster)
+ copy(dAtA[i:], m.Cluster)
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.Cluster)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *VTExplainResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *VTExplainResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *VTExplainResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Response) > 0 {
+ i -= len(m.Response)
+ copy(dAtA[i:], m.Response)
+ i = encodeVarintVtadmin(dAtA, i, uint64(len(m.Response)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func encodeVarintVtadmin(dAtA []byte, offset int, v uint64) int {
+ offset -= sovVtadmin(v)
+ base := offset
+ for v >= 1<<7 {
+ dAtA[offset] = uint8(v&0x7f | 0x80)
+ v >>= 7
+ offset++
+ }
+ dAtA[offset] = uint8(v)
+ return base
+}
+func (m *Cluster) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Id)
+ if l > 0 {
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ClusterWorkflows) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Workflows) > 0 {
+ for _, e := range m.Workflows {
+ l = e.Size()
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ }
+ if len(m.Warnings) > 0 {
+ for _, s := range m.Warnings {
+ l = len(s)
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Keyspace) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Cluster != nil {
+ l = m.Cluster.Size()
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ if m.Keyspace != nil {
+ l = m.Keyspace.Size()
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ if len(m.Shards) > 0 {
+ for k, v := range m.Shards {
+ _ = k
+ _ = v
+ l = 0
+ if v != nil {
+ l = v.Size()
+ l += 1 + sovVtadmin(uint64(l))
+ }
+ mapEntrySize := 1 + len(k) + sovVtadmin(uint64(len(k))) + l
+ n += mapEntrySize + 1 + sovVtadmin(uint64(mapEntrySize))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Schema) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Cluster != nil {
+ l = m.Cluster.Size()
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ if len(m.TableDefinitions) > 0 {
+ for _, e := range m.TableDefinitions {
+ l = e.Size()
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ }
+ if len(m.TableSizes) > 0 {
+ for k, v := range m.TableSizes {
+ _ = k
+ _ = v
+ l = 0
+ if v != nil {
+ l = v.Size()
+ l += 1 + sovVtadmin(uint64(l))
+ }
+ mapEntrySize := 1 + len(k) + sovVtadmin(uint64(len(k))) + l
+ n += mapEntrySize + 1 + sovVtadmin(uint64(mapEntrySize))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Schema_ShardTableSize) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.RowCount != 0 {
+ n += 1 + sovVtadmin(uint64(m.RowCount))
+ }
+ if m.DataLength != 0 {
+ n += 1 + sovVtadmin(uint64(m.DataLength))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Schema_TableSize) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.RowCount != 0 {
+ n += 1 + sovVtadmin(uint64(m.RowCount))
+ }
+ if m.DataLength != 0 {
+ n += 1 + sovVtadmin(uint64(m.DataLength))
+ }
+ if len(m.ByShard) > 0 {
+ for k, v := range m.ByShard {
+ _ = k
+ _ = v
+ l = 0
+ if v != nil {
+ l = v.Size()
+ l += 1 + sovVtadmin(uint64(l))
+ }
+ mapEntrySize := 1 + len(k) + sovVtadmin(uint64(len(k))) + l
+ n += mapEntrySize + 1 + sovVtadmin(uint64(mapEntrySize))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Tablet) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Cluster != nil {
+ l = m.Cluster.Size()
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ if m.Tablet != nil {
+ l = m.Tablet.Size()
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ if m.State != 0 {
+ n += 1 + sovVtadmin(uint64(m.State))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *VSchema) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Cluster != nil {
+ l = m.Cluster.Size()
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ if m.VSchema != nil {
+ l = m.VSchema.Size()
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Vtctld) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Hostname)
+ if l > 0 {
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ if m.Cluster != nil {
+ l = m.Cluster.Size()
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *VTGate) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Hostname)
+ if l > 0 {
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ l = len(m.Pool)
+ if l > 0 {
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ l = len(m.Cell)
+ if l > 0 {
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ if m.Cluster != nil {
+ l = m.Cluster.Size()
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ if len(m.Keyspaces) > 0 {
+ for _, s := range m.Keyspaces {
+ l = len(s)
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Workflow) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Cluster != nil {
+ l = m.Cluster.Size()
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ if m.Workflow != nil {
+ l = m.Workflow.Size()
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *FindSchemaRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Table)
+ if l > 0 {
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ if len(m.ClusterIds) > 0 {
+ for _, s := range m.ClusterIds {
+ l = len(s)
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ }
+ if m.TableSizeOptions != nil {
+ l = m.TableSizeOptions.Size()
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetClustersRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetClustersResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Clusters) > 0 {
+ for _, e := range m.Clusters {
+ l = e.Size()
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetGatesRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.ClusterIds) > 0 {
+ for _, s := range m.ClusterIds {
+ l = len(s)
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetGatesResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Gates) > 0 {
+ for _, e := range m.Gates {
+ l = e.Size()
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetKeyspacesRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.ClusterIds) > 0 {
+ for _, s := range m.ClusterIds {
+ l = len(s)
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetKeyspacesResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Keyspaces) > 0 {
+ for _, e := range m.Keyspaces {
+ l = e.Size()
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetSchemaRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.ClusterId)
+ if l > 0 {
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ l = len(m.Table)
+ if l > 0 {
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ if m.TableSizeOptions != nil {
+ l = m.TableSizeOptions.Size()
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetSchemasRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.ClusterIds) > 0 {
+ for _, s := range m.ClusterIds {
+ l = len(s)
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ }
+ if m.TableSizeOptions != nil {
+ l = m.TableSizeOptions.Size()
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetSchemasResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Schemas) > 0 {
+ for _, e := range m.Schemas {
+ l = e.Size()
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetSchemaTableSizeOptions) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.AggregateSizes {
+ n += 2
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetTabletRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Hostname)
+ if l > 0 {
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ if len(m.ClusterIds) > 0 {
+ for _, s := range m.ClusterIds {
+ l = len(s)
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetTabletsRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.ClusterIds) > 0 {
+ for _, s := range m.ClusterIds {
+ l = len(s)
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetTabletsResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Tablets) > 0 {
+ for _, e := range m.Tablets {
+ l = e.Size()
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetVSchemaRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.ClusterId)
+ if l > 0 {
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetVSchemasRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.ClusterIds) > 0 {
+ for _, s := range m.ClusterIds {
+ l = len(s)
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetVSchemasResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.VSchemas) > 0 {
+ for _, e := range m.VSchemas {
+ l = e.Size()
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetWorkflowRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.ClusterId)
+ if l > 0 {
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ if m.ActiveOnly {
+ n += 2
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetWorkflowsRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.ClusterIds) > 0 {
+ for _, s := range m.ClusterIds {
+ l = len(s)
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ }
+ if m.ActiveOnly {
+ n += 2
+ }
+ if len(m.Keyspaces) > 0 {
+ for _, s := range m.Keyspaces {
+ l = len(s)
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ }
+ if len(m.IgnoreKeyspaces) > 0 {
+ for _, s := range m.IgnoreKeyspaces {
+ l = len(s)
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetWorkflowsResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.WorkflowsByCluster) > 0 {
+ for k, v := range m.WorkflowsByCluster {
+ _ = k
+ _ = v
+ l = 0
+ if v != nil {
+ l = v.Size()
+ l += 1 + sovVtadmin(uint64(l))
+ }
+ mapEntrySize := 1 + len(k) + sovVtadmin(uint64(len(k))) + l
+ n += mapEntrySize + 1 + sovVtadmin(uint64(mapEntrySize))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *VTExplainRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Cluster)
+ if l > 0 {
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ l = len(m.Sql)
+ if l > 0 {
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *VTExplainResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Response)
+ if l > 0 {
+ n += 1 + l + sovVtadmin(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func sovVtadmin(x uint64) (n int) {
+ return (math_bits.Len64(x|1) + 6) / 7
+}
+func sozVtadmin(x uint64) (n int) {
+ return sovVtadmin(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+}
+func (m *Cluster) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Cluster: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Cluster: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Id = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ClusterWorkflows) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ClusterWorkflows: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ClusterWorkflows: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Workflows", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Workflows = append(m.Workflows, &Workflow{})
+ if err := m.Workflows[len(m.Workflows)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Warnings", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Warnings = append(m.Warnings, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Keyspace) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Keyspace: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Keyspace: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cluster", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Cluster == nil {
+ m.Cluster = &Cluster{}
+ }
+ if err := m.Cluster.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Keyspace == nil {
+ m.Keyspace = &vtctldata.Keyspace{}
+ }
+ if err := m.Keyspace.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Shards", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Shards == nil {
+ m.Shards = make(map[string]*vtctldata.Shard)
+ }
+ var mapkey string
+ var mapvalue *vtctldata.Shard
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var mapmsglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ mapmsglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if mapmsglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postmsgIndex := iNdEx + mapmsglen
+ if postmsgIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postmsgIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = &vtctldata.Shard{}
+ if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
+ return err
+ }
+ iNdEx = postmsgIndex
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.Shards[mapkey] = mapvalue
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Schema) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Schema: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Schema: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cluster", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Cluster == nil {
+ m.Cluster = &Cluster{}
+ }
+ if err := m.Cluster.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TableDefinitions", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.TableDefinitions = append(m.TableDefinitions, &tabletmanagerdata.TableDefinition{})
+ if err := m.TableDefinitions[len(m.TableDefinitions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TableSizes", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.TableSizes == nil {
+ m.TableSizes = make(map[string]*Schema_TableSize)
+ }
+ var mapkey string
+ var mapvalue *Schema_TableSize
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var mapmsglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ mapmsglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if mapmsglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postmsgIndex := iNdEx + mapmsglen
+ if postmsgIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postmsgIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = &Schema_TableSize{}
+ if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
+ return err
+ }
+ iNdEx = postmsgIndex
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.TableSizes[mapkey] = mapvalue
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Schema_ShardTableSize) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ShardTableSize: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ShardTableSize: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RowCount", wireType)
+ }
+ m.RowCount = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.RowCount |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field DataLength", wireType)
+ }
+ m.DataLength = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.DataLength |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Schema_TableSize) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: TableSize: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: TableSize: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RowCount", wireType)
+ }
+ m.RowCount = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.RowCount |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field DataLength", wireType)
+ }
+ m.DataLength = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.DataLength |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ByShard", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ByShard == nil {
+ m.ByShard = make(map[string]*Schema_ShardTableSize)
+ }
+ var mapkey string
+ var mapvalue *Schema_ShardTableSize
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var mapmsglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ mapmsglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if mapmsglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postmsgIndex := iNdEx + mapmsglen
+ if postmsgIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postmsgIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = &Schema_ShardTableSize{}
+ if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
+ return err
+ }
+ iNdEx = postmsgIndex
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.ByShard[mapkey] = mapvalue
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Tablet) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Tablet: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Tablet: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cluster", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Cluster == nil {
+ m.Cluster = &Cluster{}
+ }
+ if err := m.Cluster.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Tablet", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Tablet == nil {
+ m.Tablet = &topodata.Tablet{}
+ }
+ if err := m.Tablet.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field State", wireType)
+ }
+ m.State = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.State |= Tablet_ServingState(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *VSchema) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: VSchema: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: VSchema: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cluster", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Cluster == nil {
+ m.Cluster = &Cluster{}
+ }
+ if err := m.Cluster.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field VSchema", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.VSchema == nil {
+ m.VSchema = &vschema.Keyspace{}
+ }
+ if err := m.VSchema.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Vtctld) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Vtctld: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Vtctld: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Hostname", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Hostname = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cluster", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Cluster == nil {
+ m.Cluster = &Cluster{}
+ }
+ if err := m.Cluster.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *VTGate) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: VTGate: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: VTGate: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Hostname", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Hostname = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Pool", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Pool = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cell", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Cell = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cluster", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Cluster == nil {
+ m.Cluster = &Cluster{}
+ }
+ if err := m.Cluster.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspaces", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspaces = append(m.Keyspaces, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Workflow) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Workflow: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Workflow: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cluster", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Cluster == nil {
+ m.Cluster = &Cluster{}
+ }
+ if err := m.Cluster.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Workflow", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Workflow == nil {
+ m.Workflow = &vtctldata.Workflow{}
+ }
+ if err := m.Workflow.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *FindSchemaRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: FindSchemaRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: FindSchemaRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Table", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Table = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ClusterIds", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ClusterIds = append(m.ClusterIds, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TableSizeOptions", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.TableSizeOptions == nil {
+ m.TableSizeOptions = &GetSchemaTableSizeOptions{}
+ }
+ if err := m.TableSizeOptions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetClustersRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetClustersRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetClustersRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetClustersResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetClustersResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetClustersResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Clusters", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Clusters = append(m.Clusters, &Cluster{})
+ if err := m.Clusters[len(m.Clusters)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetGatesRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetGatesRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetGatesRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ClusterIds", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ClusterIds = append(m.ClusterIds, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetGatesResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetGatesResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetGatesResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Gates", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Gates = append(m.Gates, &VTGate{})
+ if err := m.Gates[len(m.Gates)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetKeyspacesRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetKeyspacesRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetKeyspacesRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ClusterIds", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ClusterIds = append(m.ClusterIds, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetKeyspacesResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetKeyspacesResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetKeyspacesResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspaces", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspaces = append(m.Keyspaces, &Keyspace{})
+ if err := m.Keyspaces[len(m.Keyspaces)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetSchemaRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetSchemaRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetSchemaRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ClusterId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ClusterId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Table", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Table = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TableSizeOptions", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.TableSizeOptions == nil {
+ m.TableSizeOptions = &GetSchemaTableSizeOptions{}
+ }
+ if err := m.TableSizeOptions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetSchemasRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetSchemasRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetSchemasRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ClusterIds", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ClusterIds = append(m.ClusterIds, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TableSizeOptions", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.TableSizeOptions == nil {
+ m.TableSizeOptions = &GetSchemaTableSizeOptions{}
+ }
+ if err := m.TableSizeOptions.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetSchemasResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetSchemasResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetSchemasResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Schemas", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Schemas = append(m.Schemas, &Schema{})
+ if err := m.Schemas[len(m.Schemas)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetSchemaTableSizeOptions) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetSchemaTableSizeOptions: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetSchemaTableSizeOptions: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field AggregateSizes", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.AggregateSizes = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetTabletRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetTabletRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetTabletRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Hostname", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Hostname = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ClusterIds", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ClusterIds = append(m.ClusterIds, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetTabletsRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetTabletsRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetTabletsRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ClusterIds", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ClusterIds = append(m.ClusterIds, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetTabletsResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetTabletsResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetTabletsResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Tablets", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Tablets = append(m.Tablets, &Tablet{})
+ if err := m.Tablets[len(m.Tablets)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetVSchemaRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetVSchemaRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetVSchemaRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ClusterId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ClusterId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetVSchemasRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetVSchemasRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetVSchemasRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ClusterIds", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ClusterIds = append(m.ClusterIds, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetVSchemasResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetVSchemasResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetVSchemasResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field VSchemas", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.VSchemas = append(m.VSchemas, &VSchema{})
+ if err := m.VSchemas[len(m.VSchemas)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetWorkflowRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetWorkflowRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetWorkflowRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ClusterId", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ClusterId = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ActiveOnly", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.ActiveOnly = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetWorkflowsRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetWorkflowsRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetWorkflowsRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ClusterIds", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ClusterIds = append(m.ClusterIds, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ActiveOnly", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.ActiveOnly = bool(v != 0)
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspaces", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspaces = append(m.Keyspaces, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field IgnoreKeyspaces", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.IgnoreKeyspaces = append(m.IgnoreKeyspaces, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetWorkflowsResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetWorkflowsResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetWorkflowsResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field WorkflowsByCluster", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.WorkflowsByCluster == nil {
+ m.WorkflowsByCluster = make(map[string]*ClusterWorkflows)
+ }
+ var mapkey string
+ var mapvalue *ClusterWorkflows
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var mapmsglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ mapmsglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if mapmsglen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postmsgIndex := iNdEx + mapmsglen
+ if postmsgIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postmsgIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = &ClusterWorkflows{}
+ if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
+ return err
+ }
+ iNdEx = postmsgIndex
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.WorkflowsByCluster[mapkey] = mapvalue
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *VTExplainRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: VTExplainRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: VTExplainRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cluster", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Cluster = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Sql", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Sql = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *VTExplainResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: VTExplainResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: VTExplainResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Response", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Response = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtadmin(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtadmin
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func skipVtadmin(dAtA []byte) (n int, err error) {
+ l := len(dAtA)
+ iNdEx := 0
+ depth := 0
+ for iNdEx < l {
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ wireType := int(wire & 0x7)
+ switch wireType {
+ case 0:
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ iNdEx++
+ if dAtA[iNdEx-1] < 0x80 {
+ break
+ }
+ }
+ case 1:
+ iNdEx += 8
+ case 2:
+ var length int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowVtadmin
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ length |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if length < 0 {
+ return 0, ErrInvalidLengthVtadmin
+ }
+ iNdEx += length
+ case 3:
+ depth++
+ case 4:
+ if depth == 0 {
+ return 0, ErrUnexpectedEndOfGroupVtadmin
+ }
+ depth--
+ case 5:
+ iNdEx += 4
+ default:
+ return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
+ }
+ if iNdEx < 0 {
+ return 0, ErrInvalidLengthVtadmin
+ }
+ if depth == 0 {
+ return iNdEx, nil
+ }
+ }
+ return 0, io.ErrUnexpectedEOF
+}
+
+var (
+ ErrInvalidLengthVtadmin = fmt.Errorf("proto: negative length found during unmarshaling")
+ ErrIntOverflowVtadmin = fmt.Errorf("proto: integer overflow")
+ ErrUnexpectedEndOfGroupVtadmin = fmt.Errorf("proto: unexpected end of group")
+)
diff --git a/go/vt/proto/vtctldata/vtctldata.pb.go b/go/vt/proto/vtctldata/vtctldata.pb.go
index 3d648080931..40ec87c07e1 100644
--- a/go/vt/proto/vtctldata/vtctldata.pb.go
+++ b/go/vt/proto/vtctldata/vtctldata.pb.go
@@ -1,16 +1,23 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: vtctldata.proto
package vtctldata
import (
fmt "fmt"
+ io "io"
math "math"
+ math_bits "math/bits"
proto "github.com/golang/protobuf/proto"
-
+ binlogdata "vitess.io/vitess/go/vt/proto/binlogdata"
logutil "vitess.io/vitess/go/vt/proto/logutil"
+ mysqlctl "vitess.io/vitess/go/vt/proto/mysqlctl"
+ replicationdata "vitess.io/vitess/go/vt/proto/replicationdata"
+ tabletmanagerdata "vitess.io/vitess/go/vt/proto/tabletmanagerdata"
topodata "vitess.io/vitess/go/vt/proto/topodata"
+ vschema "vitess.io/vitess/go/vt/proto/vschema"
+ vttime "vitess.io/vitess/go/vt/proto/vttime"
)
// Reference imports to suppress errors if they are not otherwise used.
@@ -40,18 +47,26 @@ func (*ExecuteVtctlCommandRequest) ProtoMessage() {}
func (*ExecuteVtctlCommandRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_f41247b323a1ab2e, []int{0}
}
-
func (m *ExecuteVtctlCommandRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ExecuteVtctlCommandRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ExecuteVtctlCommandRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ExecuteVtctlCommandRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ExecuteVtctlCommandRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ExecuteVtctlCommandRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ExecuteVtctlCommandRequest.Merge(m, src)
}
func (m *ExecuteVtctlCommandRequest) XXX_Size() int {
- return xxx_messageInfo_ExecuteVtctlCommandRequest.Size(m)
+ return m.Size()
}
func (m *ExecuteVtctlCommandRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ExecuteVtctlCommandRequest.DiscardUnknown(m)
@@ -87,18 +102,26 @@ func (*ExecuteVtctlCommandResponse) ProtoMessage() {}
func (*ExecuteVtctlCommandResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_f41247b323a1ab2e, []int{1}
}
-
func (m *ExecuteVtctlCommandResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ExecuteVtctlCommandResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ExecuteVtctlCommandResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ExecuteVtctlCommandResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ExecuteVtctlCommandResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ExecuteVtctlCommandResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ExecuteVtctlCommandResponse.Merge(m, src)
}
func (m *ExecuteVtctlCommandResponse) XXX_Size() int {
- return xxx_messageInfo_ExecuteVtctlCommandResponse.Size(m)
+ return m.Size()
}
func (m *ExecuteVtctlCommandResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ExecuteVtctlCommandResponse.DiscardUnknown(m)
@@ -113,152 +136,181 @@ func (m *ExecuteVtctlCommandResponse) GetEvent() *logutil.Event {
return nil
}
-type GetKeyspacesRequest struct {
+// TableMaterializeSttings contains the settings for one table.
+type TableMaterializeSettings struct {
+ TargetTable string `protobuf:"bytes,1,opt,name=target_table,json=targetTable,proto3" json:"target_table,omitempty"`
+ // source_expression is a select statement.
+ SourceExpression string `protobuf:"bytes,2,opt,name=source_expression,json=sourceExpression,proto3" json:"source_expression,omitempty"`
+ // create_ddl contains the DDL to create the target table.
+ // If empty, the target table must already exist.
+ // if "copy", the target table DDL is the same as the source table.
+ CreateDdl string `protobuf:"bytes,3,opt,name=create_ddl,json=createDdl,proto3" json:"create_ddl,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
-func (m *GetKeyspacesRequest) Reset() { *m = GetKeyspacesRequest{} }
-func (m *GetKeyspacesRequest) String() string { return proto.CompactTextString(m) }
-func (*GetKeyspacesRequest) ProtoMessage() {}
-func (*GetKeyspacesRequest) Descriptor() ([]byte, []int) {
+func (m *TableMaterializeSettings) Reset() { *m = TableMaterializeSettings{} }
+func (m *TableMaterializeSettings) String() string { return proto.CompactTextString(m) }
+func (*TableMaterializeSettings) ProtoMessage() {}
+func (*TableMaterializeSettings) Descriptor() ([]byte, []int) {
return fileDescriptor_f41247b323a1ab2e, []int{2}
}
-
-func (m *GetKeyspacesRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_GetKeyspacesRequest.Unmarshal(m, b)
+func (m *TableMaterializeSettings) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
}
-func (m *GetKeyspacesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_GetKeyspacesRequest.Marshal(b, m, deterministic)
+func (m *TableMaterializeSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_TableMaterializeSettings.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
-func (m *GetKeyspacesRequest) XXX_Merge(src proto.Message) {
- xxx_messageInfo_GetKeyspacesRequest.Merge(m, src)
+func (m *TableMaterializeSettings) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_TableMaterializeSettings.Merge(m, src)
}
-func (m *GetKeyspacesRequest) XXX_Size() int {
- return xxx_messageInfo_GetKeyspacesRequest.Size(m)
+func (m *TableMaterializeSettings) XXX_Size() int {
+ return m.Size()
}
-func (m *GetKeyspacesRequest) XXX_DiscardUnknown() {
- xxx_messageInfo_GetKeyspacesRequest.DiscardUnknown(m)
+func (m *TableMaterializeSettings) XXX_DiscardUnknown() {
+ xxx_messageInfo_TableMaterializeSettings.DiscardUnknown(m)
}
-var xxx_messageInfo_GetKeyspacesRequest proto.InternalMessageInfo
-
-type GetKeyspacesResponse struct {
- Keyspaces []*Keyspace `protobuf:"bytes,1,rep,name=keyspaces,proto3" json:"keyspaces,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
+var xxx_messageInfo_TableMaterializeSettings proto.InternalMessageInfo
-func (m *GetKeyspacesResponse) Reset() { *m = GetKeyspacesResponse{} }
-func (m *GetKeyspacesResponse) String() string { return proto.CompactTextString(m) }
-func (*GetKeyspacesResponse) ProtoMessage() {}
-func (*GetKeyspacesResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_f41247b323a1ab2e, []int{3}
+func (m *TableMaterializeSettings) GetTargetTable() string {
+ if m != nil {
+ return m.TargetTable
+ }
+ return ""
}
-func (m *GetKeyspacesResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_GetKeyspacesResponse.Unmarshal(m, b)
-}
-func (m *GetKeyspacesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_GetKeyspacesResponse.Marshal(b, m, deterministic)
-}
-func (m *GetKeyspacesResponse) XXX_Merge(src proto.Message) {
- xxx_messageInfo_GetKeyspacesResponse.Merge(m, src)
-}
-func (m *GetKeyspacesResponse) XXX_Size() int {
- return xxx_messageInfo_GetKeyspacesResponse.Size(m)
-}
-func (m *GetKeyspacesResponse) XXX_DiscardUnknown() {
- xxx_messageInfo_GetKeyspacesResponse.DiscardUnknown(m)
+func (m *TableMaterializeSettings) GetSourceExpression() string {
+ if m != nil {
+ return m.SourceExpression
+ }
+ return ""
}
-var xxx_messageInfo_GetKeyspacesResponse proto.InternalMessageInfo
-
-func (m *GetKeyspacesResponse) GetKeyspaces() []*Keyspace {
+func (m *TableMaterializeSettings) GetCreateDdl() string {
if m != nil {
- return m.Keyspaces
+ return m.CreateDdl
}
- return nil
+ return ""
}
-type GetKeyspaceRequest struct {
- Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+// MaterializeSettings contains the settings for the Materialize command.
+type MaterializeSettings struct {
+ // workflow is the name of the workflow.
+ Workflow string `protobuf:"bytes,1,opt,name=workflow,proto3" json:"workflow,omitempty"`
+ SourceKeyspace string `protobuf:"bytes,2,opt,name=source_keyspace,json=sourceKeyspace,proto3" json:"source_keyspace,omitempty"`
+ TargetKeyspace string `protobuf:"bytes,3,opt,name=target_keyspace,json=targetKeyspace,proto3" json:"target_keyspace,omitempty"`
+ // stop_after_copy specifies if vreplication should be stopped after copying.
+ StopAfterCopy bool `protobuf:"varint,4,opt,name=stop_after_copy,json=stopAfterCopy,proto3" json:"stop_after_copy,omitempty"`
+ TableSettings []*TableMaterializeSettings `protobuf:"bytes,5,rep,name=table_settings,json=tableSettings,proto3" json:"table_settings,omitempty"`
+ // optional parameters.
+ Cell string `protobuf:"bytes,6,opt,name=cell,proto3" json:"cell,omitempty"`
+ TabletTypes string `protobuf:"bytes,7,opt,name=tablet_types,json=tabletTypes,proto3" json:"tablet_types,omitempty"`
+ // ExternalCluster is the name of the mounted cluster which has the source keyspace/db for this workflow
+ // it is of the type
+ ExternalCluster string `protobuf:"bytes,8,opt,name=external_cluster,json=externalCluster,proto3" json:"external_cluster,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
-func (m *GetKeyspaceRequest) Reset() { *m = GetKeyspaceRequest{} }
-func (m *GetKeyspaceRequest) String() string { return proto.CompactTextString(m) }
-func (*GetKeyspaceRequest) ProtoMessage() {}
-func (*GetKeyspaceRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_f41247b323a1ab2e, []int{4}
+func (m *MaterializeSettings) Reset() { *m = MaterializeSettings{} }
+func (m *MaterializeSettings) String() string { return proto.CompactTextString(m) }
+func (*MaterializeSettings) ProtoMessage() {}
+func (*MaterializeSettings) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{3}
}
-
-func (m *GetKeyspaceRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_GetKeyspaceRequest.Unmarshal(m, b)
+func (m *MaterializeSettings) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
}
-func (m *GetKeyspaceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_GetKeyspaceRequest.Marshal(b, m, deterministic)
+func (m *MaterializeSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_MaterializeSettings.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
-func (m *GetKeyspaceRequest) XXX_Merge(src proto.Message) {
- xxx_messageInfo_GetKeyspaceRequest.Merge(m, src)
+func (m *MaterializeSettings) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_MaterializeSettings.Merge(m, src)
}
-func (m *GetKeyspaceRequest) XXX_Size() int {
- return xxx_messageInfo_GetKeyspaceRequest.Size(m)
+func (m *MaterializeSettings) XXX_Size() int {
+ return m.Size()
}
-func (m *GetKeyspaceRequest) XXX_DiscardUnknown() {
- xxx_messageInfo_GetKeyspaceRequest.DiscardUnknown(m)
+func (m *MaterializeSettings) XXX_DiscardUnknown() {
+ xxx_messageInfo_MaterializeSettings.DiscardUnknown(m)
}
-var xxx_messageInfo_GetKeyspaceRequest proto.InternalMessageInfo
+var xxx_messageInfo_MaterializeSettings proto.InternalMessageInfo
-func (m *GetKeyspaceRequest) GetKeyspace() string {
+func (m *MaterializeSettings) GetWorkflow() string {
if m != nil {
- return m.Keyspace
+ return m.Workflow
}
return ""
}
-type GetKeyspaceResponse struct {
- Keyspace *Keyspace `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
+func (m *MaterializeSettings) GetSourceKeyspace() string {
+ if m != nil {
+ return m.SourceKeyspace
+ }
+ return ""
}
-func (m *GetKeyspaceResponse) Reset() { *m = GetKeyspaceResponse{} }
-func (m *GetKeyspaceResponse) String() string { return proto.CompactTextString(m) }
-func (*GetKeyspaceResponse) ProtoMessage() {}
-func (*GetKeyspaceResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_f41247b323a1ab2e, []int{5}
+func (m *MaterializeSettings) GetTargetKeyspace() string {
+ if m != nil {
+ return m.TargetKeyspace
+ }
+ return ""
}
-func (m *GetKeyspaceResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_GetKeyspaceResponse.Unmarshal(m, b)
-}
-func (m *GetKeyspaceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_GetKeyspaceResponse.Marshal(b, m, deterministic)
-}
-func (m *GetKeyspaceResponse) XXX_Merge(src proto.Message) {
- xxx_messageInfo_GetKeyspaceResponse.Merge(m, src)
+func (m *MaterializeSettings) GetStopAfterCopy() bool {
+ if m != nil {
+ return m.StopAfterCopy
+ }
+ return false
}
-func (m *GetKeyspaceResponse) XXX_Size() int {
- return xxx_messageInfo_GetKeyspaceResponse.Size(m)
+
+func (m *MaterializeSettings) GetTableSettings() []*TableMaterializeSettings {
+ if m != nil {
+ return m.TableSettings
+ }
+ return nil
}
-func (m *GetKeyspaceResponse) XXX_DiscardUnknown() {
- xxx_messageInfo_GetKeyspaceResponse.DiscardUnknown(m)
+
+func (m *MaterializeSettings) GetCell() string {
+ if m != nil {
+ return m.Cell
+ }
+ return ""
}
-var xxx_messageInfo_GetKeyspaceResponse proto.InternalMessageInfo
+func (m *MaterializeSettings) GetTabletTypes() string {
+ if m != nil {
+ return m.TabletTypes
+ }
+ return ""
+}
-func (m *GetKeyspaceResponse) GetKeyspace() *Keyspace {
+func (m *MaterializeSettings) GetExternalCluster() string {
if m != nil {
- return m.Keyspace
+ return m.ExternalCluster
}
- return nil
+ return ""
}
type Keyspace struct {
@@ -273,20 +325,28 @@ func (m *Keyspace) Reset() { *m = Keyspace{} }
func (m *Keyspace) String() string { return proto.CompactTextString(m) }
func (*Keyspace) ProtoMessage() {}
func (*Keyspace) Descriptor() ([]byte, []int) {
- return fileDescriptor_f41247b323a1ab2e, []int{6}
+ return fileDescriptor_f41247b323a1ab2e, []int{4}
}
-
func (m *Keyspace) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Keyspace.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Keyspace) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Keyspace.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Keyspace.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Keyspace) XXX_Merge(src proto.Message) {
xxx_messageInfo_Keyspace.Merge(m, src)
}
func (m *Keyspace) XXX_Size() int {
- return xxx_messageInfo_Keyspace.Size(m)
+ return m.Size()
}
func (m *Keyspace) XXX_DiscardUnknown() {
xxx_messageInfo_Keyspace.DiscardUnknown(m)
@@ -308,348 +368,18359 @@ func (m *Keyspace) GetKeyspace() *topodata.Keyspace {
return nil
}
-type FindAllShardsInKeyspaceRequest struct {
- Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
+type Shard struct {
+ Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
+ Shard *topodata.Shard `protobuf:"bytes,3,opt,name=shard,proto3" json:"shard,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
}
-func (m *FindAllShardsInKeyspaceRequest) Reset() { *m = FindAllShardsInKeyspaceRequest{} }
-func (m *FindAllShardsInKeyspaceRequest) String() string { return proto.CompactTextString(m) }
-func (*FindAllShardsInKeyspaceRequest) ProtoMessage() {}
-func (*FindAllShardsInKeyspaceRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_f41247b323a1ab2e, []int{7}
+func (m *Shard) Reset() { *m = Shard{} }
+func (m *Shard) String() string { return proto.CompactTextString(m) }
+func (*Shard) ProtoMessage() {}
+func (*Shard) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{5}
}
-
-func (m *FindAllShardsInKeyspaceRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_FindAllShardsInKeyspaceRequest.Unmarshal(m, b)
+func (m *Shard) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
}
-func (m *FindAllShardsInKeyspaceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_FindAllShardsInKeyspaceRequest.Marshal(b, m, deterministic)
+func (m *Shard) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_Shard.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
-func (m *FindAllShardsInKeyspaceRequest) XXX_Merge(src proto.Message) {
- xxx_messageInfo_FindAllShardsInKeyspaceRequest.Merge(m, src)
+func (m *Shard) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Shard.Merge(m, src)
}
-func (m *FindAllShardsInKeyspaceRequest) XXX_Size() int {
- return xxx_messageInfo_FindAllShardsInKeyspaceRequest.Size(m)
+func (m *Shard) XXX_Size() int {
+ return m.Size()
}
-func (m *FindAllShardsInKeyspaceRequest) XXX_DiscardUnknown() {
- xxx_messageInfo_FindAllShardsInKeyspaceRequest.DiscardUnknown(m)
+func (m *Shard) XXX_DiscardUnknown() {
+ xxx_messageInfo_Shard.DiscardUnknown(m)
}
-var xxx_messageInfo_FindAllShardsInKeyspaceRequest proto.InternalMessageInfo
+var xxx_messageInfo_Shard proto.InternalMessageInfo
-func (m *FindAllShardsInKeyspaceRequest) GetKeyspace() string {
+func (m *Shard) GetKeyspace() string {
if m != nil {
return m.Keyspace
}
return ""
}
-type FindAllShardsInKeyspaceResponse struct {
- Shards map[string]*Shard `protobuf:"bytes,1,rep,name=shards,proto3" json:"shards,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
+func (m *Shard) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
}
-func (m *FindAllShardsInKeyspaceResponse) Reset() { *m = FindAllShardsInKeyspaceResponse{} }
-func (m *FindAllShardsInKeyspaceResponse) String() string { return proto.CompactTextString(m) }
-func (*FindAllShardsInKeyspaceResponse) ProtoMessage() {}
-func (*FindAllShardsInKeyspaceResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_f41247b323a1ab2e, []int{8}
+func (m *Shard) GetShard() *topodata.Shard {
+ if m != nil {
+ return m.Shard
+ }
+ return nil
}
-func (m *FindAllShardsInKeyspaceResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_FindAllShardsInKeyspaceResponse.Unmarshal(m, b)
+// TODO: comment the hell out of this.
+type Workflow struct {
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ Source *Workflow_ReplicationLocation `protobuf:"bytes,2,opt,name=source,proto3" json:"source,omitempty"`
+ Target *Workflow_ReplicationLocation `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"`
+ MaxVReplicationLag int64 `protobuf:"varint,4,opt,name=max_v_replication_lag,json=maxVReplicationLag,proto3" json:"max_v_replication_lag,omitempty"`
+ ShardStreams map[string]*Workflow_ShardStream `protobuf:"bytes,5,rep,name=shard_streams,json=shardStreams,proto3" json:"shard_streams,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
}
-func (m *FindAllShardsInKeyspaceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_FindAllShardsInKeyspaceResponse.Marshal(b, m, deterministic)
+
+func (m *Workflow) Reset() { *m = Workflow{} }
+func (m *Workflow) String() string { return proto.CompactTextString(m) }
+func (*Workflow) ProtoMessage() {}
+func (*Workflow) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{6}
}
-func (m *FindAllShardsInKeyspaceResponse) XXX_Merge(src proto.Message) {
- xxx_messageInfo_FindAllShardsInKeyspaceResponse.Merge(m, src)
+func (m *Workflow) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
}
-func (m *FindAllShardsInKeyspaceResponse) XXX_Size() int {
- return xxx_messageInfo_FindAllShardsInKeyspaceResponse.Size(m)
+func (m *Workflow) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_Workflow.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
-func (m *FindAllShardsInKeyspaceResponse) XXX_DiscardUnknown() {
- xxx_messageInfo_FindAllShardsInKeyspaceResponse.DiscardUnknown(m)
+func (m *Workflow) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Workflow.Merge(m, src)
+}
+func (m *Workflow) XXX_Size() int {
+ return m.Size()
+}
+func (m *Workflow) XXX_DiscardUnknown() {
+ xxx_messageInfo_Workflow.DiscardUnknown(m)
}
-var xxx_messageInfo_FindAllShardsInKeyspaceResponse proto.InternalMessageInfo
+var xxx_messageInfo_Workflow proto.InternalMessageInfo
-func (m *FindAllShardsInKeyspaceResponse) GetShards() map[string]*Shard {
+func (m *Workflow) GetName() string {
if m != nil {
- return m.Shards
+ return m.Name
+ }
+ return ""
+}
+
+func (m *Workflow) GetSource() *Workflow_ReplicationLocation {
+ if m != nil {
+ return m.Source
}
return nil
}
-type Shard struct {
- Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
- Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
- Shard *topodata.Shard `protobuf:"bytes,3,opt,name=shard,proto3" json:"shard,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
+func (m *Workflow) GetTarget() *Workflow_ReplicationLocation {
+ if m != nil {
+ return m.Target
+ }
+ return nil
}
-func (m *Shard) Reset() { *m = Shard{} }
-func (m *Shard) String() string { return proto.CompactTextString(m) }
-func (*Shard) ProtoMessage() {}
-func (*Shard) Descriptor() ([]byte, []int) {
- return fileDescriptor_f41247b323a1ab2e, []int{9}
+func (m *Workflow) GetMaxVReplicationLag() int64 {
+ if m != nil {
+ return m.MaxVReplicationLag
+ }
+ return 0
}
-func (m *Shard) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Shard.Unmarshal(m, b)
+func (m *Workflow) GetShardStreams() map[string]*Workflow_ShardStream {
+ if m != nil {
+ return m.ShardStreams
+ }
+ return nil
}
-func (m *Shard) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Shard.Marshal(b, m, deterministic)
+
+type Workflow_ReplicationLocation struct {
+ Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ Shards []string `protobuf:"bytes,2,rep,name=shards,proto3" json:"shards,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
}
-func (m *Shard) XXX_Merge(src proto.Message) {
- xxx_messageInfo_Shard.Merge(m, src)
+
+func (m *Workflow_ReplicationLocation) Reset() { *m = Workflow_ReplicationLocation{} }
+func (m *Workflow_ReplicationLocation) String() string { return proto.CompactTextString(m) }
+func (*Workflow_ReplicationLocation) ProtoMessage() {}
+func (*Workflow_ReplicationLocation) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{6, 1}
}
-func (m *Shard) XXX_Size() int {
- return xxx_messageInfo_Shard.Size(m)
+func (m *Workflow_ReplicationLocation) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
}
-func (m *Shard) XXX_DiscardUnknown() {
- xxx_messageInfo_Shard.DiscardUnknown(m)
+func (m *Workflow_ReplicationLocation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_Workflow_ReplicationLocation.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *Workflow_ReplicationLocation) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Workflow_ReplicationLocation.Merge(m, src)
+}
+func (m *Workflow_ReplicationLocation) XXX_Size() int {
+ return m.Size()
+}
+func (m *Workflow_ReplicationLocation) XXX_DiscardUnknown() {
+ xxx_messageInfo_Workflow_ReplicationLocation.DiscardUnknown(m)
}
-var xxx_messageInfo_Shard proto.InternalMessageInfo
+var xxx_messageInfo_Workflow_ReplicationLocation proto.InternalMessageInfo
-func (m *Shard) GetKeyspace() string {
+func (m *Workflow_ReplicationLocation) GetKeyspace() string {
if m != nil {
return m.Keyspace
}
return ""
}
-func (m *Shard) GetName() string {
+func (m *Workflow_ReplicationLocation) GetShards() []string {
if m != nil {
- return m.Name
+ return m.Shards
}
- return ""
+ return nil
}
-func (m *Shard) GetShard() *topodata.Shard {
+type Workflow_ShardStream struct {
+ Streams []*Workflow_Stream `protobuf:"bytes,1,rep,name=streams,proto3" json:"streams,omitempty"`
+ TabletControls []*topodata.Shard_TabletControl `protobuf:"bytes,2,rep,name=tablet_controls,json=tabletControls,proto3" json:"tablet_controls,omitempty"`
+ IsPrimaryServing bool `protobuf:"varint,3,opt,name=is_primary_serving,json=isPrimaryServing,proto3" json:"is_primary_serving,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Workflow_ShardStream) Reset() { *m = Workflow_ShardStream{} }
+func (m *Workflow_ShardStream) String() string { return proto.CompactTextString(m) }
+func (*Workflow_ShardStream) ProtoMessage() {}
+func (*Workflow_ShardStream) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{6, 2}
+}
+func (m *Workflow_ShardStream) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *Workflow_ShardStream) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_Workflow_ShardStream.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *Workflow_ShardStream) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Workflow_ShardStream.Merge(m, src)
+}
+func (m *Workflow_ShardStream) XXX_Size() int {
+ return m.Size()
+}
+func (m *Workflow_ShardStream) XXX_DiscardUnknown() {
+ xxx_messageInfo_Workflow_ShardStream.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Workflow_ShardStream proto.InternalMessageInfo
+
+func (m *Workflow_ShardStream) GetStreams() []*Workflow_Stream {
if m != nil {
- return m.Shard
+ return m.Streams
}
return nil
}
-// TableMaterializeSttings contains the settings for one table.
-type TableMaterializeSettings struct {
- TargetTable string `protobuf:"bytes,1,opt,name=target_table,json=targetTable,proto3" json:"target_table,omitempty"`
- // source_expression is a select statement.
- SourceExpression string `protobuf:"bytes,2,opt,name=source_expression,json=sourceExpression,proto3" json:"source_expression,omitempty"`
- // create_ddl contains the DDL to create the target table.
- // If empty, the target table must already exist.
- // if "copy", the target table DDL is the same as the source table.
- CreateDdl string `protobuf:"bytes,3,opt,name=create_ddl,json=createDdl,proto3" json:"create_ddl,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
+func (m *Workflow_ShardStream) GetTabletControls() []*topodata.Shard_TabletControl {
+ if m != nil {
+ return m.TabletControls
+ }
+ return nil
}
-func (m *TableMaterializeSettings) Reset() { *m = TableMaterializeSettings{} }
-func (m *TableMaterializeSettings) String() string { return proto.CompactTextString(m) }
-func (*TableMaterializeSettings) ProtoMessage() {}
-func (*TableMaterializeSettings) Descriptor() ([]byte, []int) {
- return fileDescriptor_f41247b323a1ab2e, []int{10}
+func (m *Workflow_ShardStream) GetIsPrimaryServing() bool {
+ if m != nil {
+ return m.IsPrimaryServing
+ }
+ return false
}
-func (m *TableMaterializeSettings) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_TableMaterializeSettings.Unmarshal(m, b)
+type Workflow_Stream struct {
+ Id int64 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
+ Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"`
+ Tablet *topodata.TabletAlias `protobuf:"bytes,3,opt,name=tablet,proto3" json:"tablet,omitempty"`
+ BinlogSource *binlogdata.BinlogSource `protobuf:"bytes,4,opt,name=binlog_source,json=binlogSource,proto3" json:"binlog_source,omitempty"`
+ Position string `protobuf:"bytes,5,opt,name=position,proto3" json:"position,omitempty"`
+ StopPosition string `protobuf:"bytes,6,opt,name=stop_position,json=stopPosition,proto3" json:"stop_position,omitempty"`
+ State string `protobuf:"bytes,7,opt,name=state,proto3" json:"state,omitempty"`
+ DbName string `protobuf:"bytes,8,opt,name=db_name,json=dbName,proto3" json:"db_name,omitempty"`
+ TransactionTimestamp *vttime.Time `protobuf:"bytes,9,opt,name=transaction_timestamp,json=transactionTimestamp,proto3" json:"transaction_timestamp,omitempty"`
+ TimeUpdated *vttime.Time `protobuf:"bytes,10,opt,name=time_updated,json=timeUpdated,proto3" json:"time_updated,omitempty"`
+ Message string `protobuf:"bytes,11,opt,name=message,proto3" json:"message,omitempty"`
+ CopyStates []*Workflow_Stream_CopyState `protobuf:"bytes,12,rep,name=copy_states,json=copyStates,proto3" json:"copy_states,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
}
-func (m *TableMaterializeSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_TableMaterializeSettings.Marshal(b, m, deterministic)
+
+func (m *Workflow_Stream) Reset() { *m = Workflow_Stream{} }
+func (m *Workflow_Stream) String() string { return proto.CompactTextString(m) }
+func (*Workflow_Stream) ProtoMessage() {}
+func (*Workflow_Stream) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{6, 3}
}
-func (m *TableMaterializeSettings) XXX_Merge(src proto.Message) {
- xxx_messageInfo_TableMaterializeSettings.Merge(m, src)
+func (m *Workflow_Stream) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
}
-func (m *TableMaterializeSettings) XXX_Size() int {
- return xxx_messageInfo_TableMaterializeSettings.Size(m)
+func (m *Workflow_Stream) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_Workflow_Stream.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
-func (m *TableMaterializeSettings) XXX_DiscardUnknown() {
- xxx_messageInfo_TableMaterializeSettings.DiscardUnknown(m)
+func (m *Workflow_Stream) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Workflow_Stream.Merge(m, src)
+}
+func (m *Workflow_Stream) XXX_Size() int {
+ return m.Size()
+}
+func (m *Workflow_Stream) XXX_DiscardUnknown() {
+ xxx_messageInfo_Workflow_Stream.DiscardUnknown(m)
}
-var xxx_messageInfo_TableMaterializeSettings proto.InternalMessageInfo
+var xxx_messageInfo_Workflow_Stream proto.InternalMessageInfo
-func (m *TableMaterializeSettings) GetTargetTable() string {
+func (m *Workflow_Stream) GetId() int64 {
if m != nil {
- return m.TargetTable
+ return m.Id
+ }
+ return 0
+}
+
+func (m *Workflow_Stream) GetShard() string {
+ if m != nil {
+ return m.Shard
}
return ""
}
-func (m *TableMaterializeSettings) GetSourceExpression() string {
+func (m *Workflow_Stream) GetTablet() *topodata.TabletAlias {
if m != nil {
- return m.SourceExpression
+ return m.Tablet
+ }
+ return nil
+}
+
+func (m *Workflow_Stream) GetBinlogSource() *binlogdata.BinlogSource {
+ if m != nil {
+ return m.BinlogSource
+ }
+ return nil
+}
+
+func (m *Workflow_Stream) GetPosition() string {
+ if m != nil {
+ return m.Position
}
return ""
}
-func (m *TableMaterializeSettings) GetCreateDdl() string {
+func (m *Workflow_Stream) GetStopPosition() string {
if m != nil {
- return m.CreateDdl
+ return m.StopPosition
}
return ""
}
-// MaterializeSettings contains the settings for the Materialize command.
-type MaterializeSettings struct {
- // workflow is the name of the workflow.
- Workflow string `protobuf:"bytes,1,opt,name=workflow,proto3" json:"workflow,omitempty"`
- SourceKeyspace string `protobuf:"bytes,2,opt,name=source_keyspace,json=sourceKeyspace,proto3" json:"source_keyspace,omitempty"`
- TargetKeyspace string `protobuf:"bytes,3,opt,name=target_keyspace,json=targetKeyspace,proto3" json:"target_keyspace,omitempty"`
- // stop_after_copy specifies if vreplication should be stopped after copying.
- StopAfterCopy bool `protobuf:"varint,4,opt,name=stop_after_copy,json=stopAfterCopy,proto3" json:"stop_after_copy,omitempty"`
- TableSettings []*TableMaterializeSettings `protobuf:"bytes,5,rep,name=table_settings,json=tableSettings,proto3" json:"table_settings,omitempty"`
- // optional parameters.
- Cell string `protobuf:"bytes,6,opt,name=cell,proto3" json:"cell,omitempty"`
- TabletTypes string `protobuf:"bytes,7,opt,name=tablet_types,json=tabletTypes,proto3" json:"tablet_types,omitempty"`
+func (m *Workflow_Stream) GetState() string {
+ if m != nil {
+ return m.State
+ }
+ return ""
+}
+
+func (m *Workflow_Stream) GetDbName() string {
+ if m != nil {
+ return m.DbName
+ }
+ return ""
+}
+
+func (m *Workflow_Stream) GetTransactionTimestamp() *vttime.Time {
+ if m != nil {
+ return m.TransactionTimestamp
+ }
+ return nil
+}
+
+func (m *Workflow_Stream) GetTimeUpdated() *vttime.Time {
+ if m != nil {
+ return m.TimeUpdated
+ }
+ return nil
+}
+
+func (m *Workflow_Stream) GetMessage() string {
+ if m != nil {
+ return m.Message
+ }
+ return ""
+}
+
+func (m *Workflow_Stream) GetCopyStates() []*Workflow_Stream_CopyState {
+ if m != nil {
+ return m.CopyStates
+ }
+ return nil
+}
+
+type Workflow_Stream_CopyState struct {
+ Table string `protobuf:"bytes,1,opt,name=table,proto3" json:"table,omitempty"`
+ LastPk string `protobuf:"bytes,2,opt,name=last_pk,json=lastPk,proto3" json:"last_pk,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
}
-func (m *MaterializeSettings) Reset() { *m = MaterializeSettings{} }
-func (m *MaterializeSettings) String() string { return proto.CompactTextString(m) }
-func (*MaterializeSettings) ProtoMessage() {}
-func (*MaterializeSettings) Descriptor() ([]byte, []int) {
- return fileDescriptor_f41247b323a1ab2e, []int{11}
+func (m *Workflow_Stream_CopyState) Reset() { *m = Workflow_Stream_CopyState{} }
+func (m *Workflow_Stream_CopyState) String() string { return proto.CompactTextString(m) }
+func (*Workflow_Stream_CopyState) ProtoMessage() {}
+func (*Workflow_Stream_CopyState) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{6, 3, 0}
}
-
-func (m *MaterializeSettings) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_MaterializeSettings.Unmarshal(m, b)
+func (m *Workflow_Stream_CopyState) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
}
-func (m *MaterializeSettings) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_MaterializeSettings.Marshal(b, m, deterministic)
+func (m *Workflow_Stream_CopyState) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_Workflow_Stream_CopyState.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
-func (m *MaterializeSettings) XXX_Merge(src proto.Message) {
- xxx_messageInfo_MaterializeSettings.Merge(m, src)
+func (m *Workflow_Stream_CopyState) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Workflow_Stream_CopyState.Merge(m, src)
}
-func (m *MaterializeSettings) XXX_Size() int {
- return xxx_messageInfo_MaterializeSettings.Size(m)
+func (m *Workflow_Stream_CopyState) XXX_Size() int {
+ return m.Size()
}
-func (m *MaterializeSettings) XXX_DiscardUnknown() {
- xxx_messageInfo_MaterializeSettings.DiscardUnknown(m)
+func (m *Workflow_Stream_CopyState) XXX_DiscardUnknown() {
+ xxx_messageInfo_Workflow_Stream_CopyState.DiscardUnknown(m)
}
-var xxx_messageInfo_MaterializeSettings proto.InternalMessageInfo
+var xxx_messageInfo_Workflow_Stream_CopyState proto.InternalMessageInfo
-func (m *MaterializeSettings) GetWorkflow() string {
+func (m *Workflow_Stream_CopyState) GetTable() string {
if m != nil {
- return m.Workflow
+ return m.Table
}
return ""
}
-func (m *MaterializeSettings) GetSourceKeyspace() string {
+func (m *Workflow_Stream_CopyState) GetLastPk() string {
if m != nil {
- return m.SourceKeyspace
+ return m.LastPk
}
return ""
}
-func (m *MaterializeSettings) GetTargetKeyspace() string {
+type ChangeTabletTypeRequest struct {
+ TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"`
+ DbType topodata.TabletType `protobuf:"varint,2,opt,name=db_type,json=dbType,proto3,enum=topodata.TabletType" json:"db_type,omitempty"`
+ DryRun bool `protobuf:"varint,3,opt,name=dry_run,json=dryRun,proto3" json:"dry_run,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *ChangeTabletTypeRequest) Reset() { *m = ChangeTabletTypeRequest{} }
+func (m *ChangeTabletTypeRequest) String() string { return proto.CompactTextString(m) }
+func (*ChangeTabletTypeRequest) ProtoMessage() {}
+func (*ChangeTabletTypeRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{7}
+}
+func (m *ChangeTabletTypeRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *ChangeTabletTypeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_ChangeTabletTypeRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *ChangeTabletTypeRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ChangeTabletTypeRequest.Merge(m, src)
+}
+func (m *ChangeTabletTypeRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *ChangeTabletTypeRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_ChangeTabletTypeRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ChangeTabletTypeRequest proto.InternalMessageInfo
+
+func (m *ChangeTabletTypeRequest) GetTabletAlias() *topodata.TabletAlias {
if m != nil {
- return m.TargetKeyspace
+ return m.TabletAlias
}
- return ""
+ return nil
}
-func (m *MaterializeSettings) GetStopAfterCopy() bool {
+func (m *ChangeTabletTypeRequest) GetDbType() topodata.TabletType {
if m != nil {
- return m.StopAfterCopy
+ return m.DbType
+ }
+ return topodata.TabletType_UNKNOWN
+}
+
+func (m *ChangeTabletTypeRequest) GetDryRun() bool {
+ if m != nil {
+ return m.DryRun
}
return false
}
-func (m *MaterializeSettings) GetTableSettings() []*TableMaterializeSettings {
+type ChangeTabletTypeResponse struct {
+ BeforeTablet *topodata.Tablet `protobuf:"bytes,1,opt,name=before_tablet,json=beforeTablet,proto3" json:"before_tablet,omitempty"`
+ AfterTablet *topodata.Tablet `protobuf:"bytes,2,opt,name=after_tablet,json=afterTablet,proto3" json:"after_tablet,omitempty"`
+ WasDryRun bool `protobuf:"varint,3,opt,name=was_dry_run,json=wasDryRun,proto3" json:"was_dry_run,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *ChangeTabletTypeResponse) Reset() { *m = ChangeTabletTypeResponse{} }
+func (m *ChangeTabletTypeResponse) String() string { return proto.CompactTextString(m) }
+func (*ChangeTabletTypeResponse) ProtoMessage() {}
+func (*ChangeTabletTypeResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{8}
+}
+func (m *ChangeTabletTypeResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *ChangeTabletTypeResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_ChangeTabletTypeResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *ChangeTabletTypeResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ChangeTabletTypeResponse.Merge(m, src)
+}
+func (m *ChangeTabletTypeResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *ChangeTabletTypeResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_ChangeTabletTypeResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ChangeTabletTypeResponse proto.InternalMessageInfo
+
+func (m *ChangeTabletTypeResponse) GetBeforeTablet() *topodata.Tablet {
if m != nil {
- return m.TableSettings
+ return m.BeforeTablet
}
return nil
}
-func (m *MaterializeSettings) GetCell() string {
+func (m *ChangeTabletTypeResponse) GetAfterTablet() *topodata.Tablet {
if m != nil {
- return m.Cell
+ return m.AfterTablet
}
- return ""
+ return nil
}
-func (m *MaterializeSettings) GetTabletTypes() string {
+func (m *ChangeTabletTypeResponse) GetWasDryRun() bool {
if m != nil {
- return m.TabletTypes
+ return m.WasDryRun
}
- return ""
+ return false
}
-func init() {
- proto.RegisterType((*ExecuteVtctlCommandRequest)(nil), "vtctldata.ExecuteVtctlCommandRequest")
- proto.RegisterType((*ExecuteVtctlCommandResponse)(nil), "vtctldata.ExecuteVtctlCommandResponse")
- proto.RegisterType((*GetKeyspacesRequest)(nil), "vtctldata.GetKeyspacesRequest")
- proto.RegisterType((*GetKeyspacesResponse)(nil), "vtctldata.GetKeyspacesResponse")
- proto.RegisterType((*GetKeyspaceRequest)(nil), "vtctldata.GetKeyspaceRequest")
- proto.RegisterType((*GetKeyspaceResponse)(nil), "vtctldata.GetKeyspaceResponse")
- proto.RegisterType((*Keyspace)(nil), "vtctldata.Keyspace")
- proto.RegisterType((*FindAllShardsInKeyspaceRequest)(nil), "vtctldata.FindAllShardsInKeyspaceRequest")
- proto.RegisterType((*FindAllShardsInKeyspaceResponse)(nil), "vtctldata.FindAllShardsInKeyspaceResponse")
- proto.RegisterMapType((map[string]*Shard)(nil), "vtctldata.FindAllShardsInKeyspaceResponse.ShardsEntry")
- proto.RegisterType((*Shard)(nil), "vtctldata.Shard")
- proto.RegisterType((*TableMaterializeSettings)(nil), "vtctldata.TableMaterializeSettings")
- proto.RegisterType((*MaterializeSettings)(nil), "vtctldata.MaterializeSettings")
+type CreateKeyspaceRequest struct {
+ // Name is the name of the keyspace.
+ Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ // Force proceeds with the request even if the keyspace already exists.
+ Force bool `protobuf:"varint,2,opt,name=force,proto3" json:"force,omitempty"`
+ // AllowEmptyVSchema allows a keyspace to be created with no vschema.
+ AllowEmptyVSchema bool `protobuf:"varint,3,opt,name=allow_empty_v_schema,json=allowEmptyVSchema,proto3" json:"allow_empty_v_schema,omitempty"`
+ // ShardingColumnName specifies the column to use for sharding operations.
+ ShardingColumnName string `protobuf:"bytes,4,opt,name=sharding_column_name,json=shardingColumnName,proto3" json:"sharding_column_name,omitempty"`
+ // ShardingColumnType specifies the type of the column to use for sharding
+ // operations.
+ ShardingColumnType topodata.KeyspaceIdType `protobuf:"varint,5,opt,name=sharding_column_type,json=shardingColumnType,proto3,enum=topodata.KeyspaceIdType" json:"sharding_column_type,omitempty"`
+ // ServedFroms specifies a set of db_type:keyspace pairs used to serve
+ // traffic for the keyspace.
+ ServedFroms []*topodata.Keyspace_ServedFrom `protobuf:"bytes,6,rep,name=served_froms,json=servedFroms,proto3" json:"served_froms,omitempty"`
+ // Type is the type of the keyspace to create.
+ Type topodata.KeyspaceType `protobuf:"varint,7,opt,name=type,proto3,enum=topodata.KeyspaceType" json:"type,omitempty"`
+ // BaseKeyspace specifies the base keyspace for SNAPSHOT keyspaces. It is
+ // required to create a SNAPSHOT keyspace.
+ BaseKeyspace string `protobuf:"bytes,8,opt,name=base_keyspace,json=baseKeyspace,proto3" json:"base_keyspace,omitempty"`
+ // SnapshotTime specifies the snapshot time for this keyspace. It is required
+ // to create a SNAPSHOT keyspace.
+ SnapshotTime *vttime.Time `protobuf:"bytes,9,opt,name=snapshot_time,json=snapshotTime,proto3" json:"snapshot_time,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
}
-func init() { proto.RegisterFile("vtctldata.proto", fileDescriptor_f41247b323a1ab2e) }
-
-var fileDescriptor_f41247b323a1ab2e = []byte{
- // 629 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x94, 0xdf, 0x6e, 0xd3, 0x30,
- 0x14, 0xc6, 0x95, 0x76, 0x1d, 0xed, 0x29, 0x6d, 0x87, 0x07, 0x52, 0x54, 0x04, 0x94, 0xc0, 0xb6,
- 0x4a, 0x48, 0x29, 0x0c, 0x09, 0x21, 0xc4, 0xcd, 0x18, 0x1d, 0x1a, 0x13, 0xbb, 0xc8, 0x26, 0x90,
- 0xb8, 0x20, 0xf2, 0x92, 0xb3, 0x12, 0xcd, 0x8d, 0x43, 0x7c, 0xda, 0xad, 0xbc, 0x01, 0x2f, 0xc3,
- 0x23, 0xf0, 0x6c, 0x28, 0x76, 0x92, 0x66, 0x68, 0x03, 0x71, 0xe7, 0xfc, 0xce, 0xbf, 0xef, 0x7c,
- 0xb6, 0x02, 0xbd, 0x39, 0x05, 0x24, 0x42, 0x4e, 0xdc, 0x4d, 0x52, 0x49, 0x92, 0xb5, 0x4a, 0xd0,
- 0xef, 0x08, 0x39, 0x99, 0x51, 0x24, 0x4c, 0xa4, 0xdf, 0x25, 0x99, 0xc8, 0x65, 0xa6, 0xf3, 0x09,
- 0xfa, 0xe3, 0x0b, 0x0c, 0x66, 0x84, 0x1f, 0xb3, 0x92, 0x5d, 0x39, 0x9d, 0xf2, 0x38, 0xf4, 0xf0,
- 0xdb, 0x0c, 0x15, 0x31, 0x06, 0x2b, 0x3c, 0x9d, 0x28, 0xdb, 0x1a, 0xd4, 0x87, 0x2d, 0x4f, 0x9f,
- 0xd9, 0x06, 0x74, 0x79, 0x40, 0x91, 0x8c, 0x7d, 0x8a, 0xa6, 0x28, 0x67, 0x64, 0xd7, 0x06, 0xd6,
- 0xb0, 0xee, 0x75, 0x0c, 0x3d, 0x36, 0xd0, 0xd9, 0x85, 0xbb, 0x57, 0x36, 0x56, 0x89, 0x8c, 0x15,
- 0xb2, 0xc7, 0xd0, 0xc0, 0x39, 0xc6, 0x64, 0x5b, 0x03, 0x6b, 0xd8, 0xde, 0xee, 0xba, 0x85, 0xcc,
- 0x71, 0x46, 0x3d, 0x13, 0x74, 0xee, 0xc0, 0xfa, 0x3b, 0xa4, 0x03, 0x5c, 0xa8, 0x84, 0x07, 0xa8,
- 0x72, 0x59, 0xce, 0x3e, 0xdc, 0xbe, 0x8c, 0xf3, 0xa6, 0xcf, 0xa0, 0x75, 0x56, 0x40, 0xad, 0xb9,
- 0xbd, 0xbd, 0xee, 0x2e, 0xbd, 0x29, 0x0a, 0xbc, 0x65, 0x96, 0xf3, 0x14, 0x58, 0xa5, 0x55, 0xb1,
- 0x77, 0x1f, 0x9a, 0x45, 0x8a, 0x16, 0xd8, 0xf2, 0xca, 0x6f, 0x67, 0xef, 0x92, 0xa6, 0x72, 0xf6,
- 0xe8, 0x8f, 0x92, 0x6b, 0x46, 0x2f, 0xfb, 0x1c, 0x42, 0xb3, 0xa0, 0x99, 0xcf, 0x31, 0x9f, 0x16,
- 0xb3, 0xf4, 0x99, 0xb9, 0x95, 0x86, 0x35, 0xdd, 0x90, 0xb9, 0xe5, 0xe5, 0x5d, 0xd1, 0xef, 0x35,
- 0xdc, 0xdf, 0x8b, 0xe2, 0x70, 0x47, 0x88, 0xa3, 0xaf, 0x3c, 0x0d, 0xd5, 0x7e, 0xfc, 0x3f, 0x5b,
- 0xfd, 0xb2, 0xe0, 0xc1, 0xb5, 0xe5, 0xf9, 0x8a, 0x87, 0xb0, 0xaa, 0x74, 0x2c, 0xf7, 0xf6, 0x45,
- 0x65, 0xc1, 0x7f, 0xd4, 0xba, 0x26, 0x30, 0x8e, 0x29, 0x5d, 0x78, 0x79, 0x97, 0xfe, 0x01, 0xb4,
- 0x2b, 0x98, 0xad, 0x41, 0xfd, 0x0c, 0x17, 0xb9, 0xb2, 0xec, 0xc8, 0x36, 0xa1, 0x31, 0xe7, 0x62,
- 0x56, 0xec, 0xbf, 0x56, 0x99, 0xa7, 0x0b, 0x3d, 0x13, 0x7e, 0x55, 0x7b, 0x69, 0x39, 0x5f, 0xa0,
- 0xa1, 0xd9, 0xdf, 0xb6, 0x2c, 0x7d, 0xae, 0x55, 0x7c, 0xde, 0x80, 0x86, 0xd6, 0x63, 0xd7, 0xf5,
- 0x90, 0xde, 0xd2, 0xe4, 0x7c, 0x86, 0x8e, 0x3a, 0x3f, 0x2c, 0xb0, 0x8f, 0xf9, 0x89, 0xc0, 0x0f,
- 0x9c, 0x30, 0x8d, 0xb8, 0x88, 0xbe, 0xe3, 0x11, 0x12, 0x45, 0xf1, 0x44, 0xb1, 0x87, 0x70, 0x93,
- 0x78, 0x3a, 0x41, 0xf2, 0x29, 0x4b, 0xc9, 0xe7, 0xb6, 0x0d, 0xd3, 0x55, 0xec, 0x09, 0xdc, 0x52,
- 0x72, 0x96, 0x06, 0xe8, 0xe3, 0x45, 0x92, 0xa2, 0x52, 0x91, 0x8c, 0x73, 0x1d, 0x6b, 0x26, 0x30,
- 0x2e, 0x39, 0xbb, 0x07, 0x10, 0xa4, 0xc8, 0x09, 0xfd, 0x30, 0x14, 0x5a, 0x58, 0xcb, 0x6b, 0x19,
- 0xf2, 0x36, 0x14, 0xce, 0xcf, 0x1a, 0xac, 0x5f, 0x25, 0xa3, 0x0f, 0xcd, 0x73, 0x99, 0x9e, 0x9d,
- 0x0a, 0x79, 0x5e, 0xac, 0x5e, 0x7c, 0xb3, 0x2d, 0xe8, 0xe5, 0xf3, 0x2f, 0xbd, 0xaa, 0x96, 0xd7,
- 0x35, 0xb8, 0x7c, 0x8b, 0x5b, 0xd0, 0xcb, 0x77, 0x29, 0x13, 0x8d, 0x80, 0xae, 0xc1, 0x65, 0xe2,
- 0x26, 0xf4, 0x14, 0xc9, 0xc4, 0xe7, 0xa7, 0x84, 0xa9, 0x1f, 0xc8, 0x64, 0x61, 0xaf, 0x0c, 0xac,
- 0x61, 0xd3, 0xeb, 0x64, 0x78, 0x27, 0xa3, 0xbb, 0x32, 0x59, 0xb0, 0xf7, 0xd0, 0xd5, 0xae, 0xf8,
- 0x2a, 0xd7, 0x69, 0x37, 0xf4, 0xf3, 0x79, 0x54, 0xb9, 0xce, 0xeb, 0x9c, 0xf5, 0x3a, 0xba, 0xb4,
- 0xdc, 0x90, 0xc1, 0x4a, 0x80, 0x42, 0xd8, 0xab, 0xe6, 0x02, 0xb3, 0xb3, 0x31, 0xff, 0x44, 0x64,
- 0xe6, 0x2f, 0x12, 0x54, 0xf6, 0x8d, 0xc2, 0xfc, 0x8c, 0x1d, 0x67, 0xe8, 0xcd, 0xf0, 0xf3, 0xe6,
- 0x3c, 0x22, 0x54, 0xca, 0x8d, 0xe4, 0xc8, 0x9c, 0x46, 0x13, 0x39, 0x9a, 0xd3, 0x48, 0xff, 0x05,
- 0x47, 0xa5, 0x90, 0x93, 0x55, 0x0d, 0x9e, 0xff, 0x0e, 0x00, 0x00, 0xff, 0xff, 0x2e, 0xa9, 0x4e,
- 0xcf, 0x53, 0x05, 0x00, 0x00,
+func (m *CreateKeyspaceRequest) Reset() { *m = CreateKeyspaceRequest{} }
+func (m *CreateKeyspaceRequest) String() string { return proto.CompactTextString(m) }
+func (*CreateKeyspaceRequest) ProtoMessage() {}
+func (*CreateKeyspaceRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{9}
+}
+func (m *CreateKeyspaceRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *CreateKeyspaceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_CreateKeyspaceRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *CreateKeyspaceRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_CreateKeyspaceRequest.Merge(m, src)
+}
+func (m *CreateKeyspaceRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *CreateKeyspaceRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_CreateKeyspaceRequest.DiscardUnknown(m)
}
+
+var xxx_messageInfo_CreateKeyspaceRequest proto.InternalMessageInfo
+
+func (m *CreateKeyspaceRequest) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *CreateKeyspaceRequest) GetForce() bool {
+ if m != nil {
+ return m.Force
+ }
+ return false
+}
+
+func (m *CreateKeyspaceRequest) GetAllowEmptyVSchema() bool {
+ if m != nil {
+ return m.AllowEmptyVSchema
+ }
+ return false
+}
+
+func (m *CreateKeyspaceRequest) GetShardingColumnName() string {
+ if m != nil {
+ return m.ShardingColumnName
+ }
+ return ""
+}
+
+func (m *CreateKeyspaceRequest) GetShardingColumnType() topodata.KeyspaceIdType {
+ if m != nil {
+ return m.ShardingColumnType
+ }
+ return topodata.KeyspaceIdType_UNSET
+}
+
+func (m *CreateKeyspaceRequest) GetServedFroms() []*topodata.Keyspace_ServedFrom {
+ if m != nil {
+ return m.ServedFroms
+ }
+ return nil
+}
+
+func (m *CreateKeyspaceRequest) GetType() topodata.KeyspaceType {
+ if m != nil {
+ return m.Type
+ }
+ return topodata.KeyspaceType_NORMAL
+}
+
+func (m *CreateKeyspaceRequest) GetBaseKeyspace() string {
+ if m != nil {
+ return m.BaseKeyspace
+ }
+ return ""
+}
+
+func (m *CreateKeyspaceRequest) GetSnapshotTime() *vttime.Time {
+ if m != nil {
+ return m.SnapshotTime
+ }
+ return nil
+}
+
+type CreateKeyspaceResponse struct {
+ // Keyspace is the newly-created keyspace.
+ Keyspace *Keyspace `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *CreateKeyspaceResponse) Reset() { *m = CreateKeyspaceResponse{} }
+func (m *CreateKeyspaceResponse) String() string { return proto.CompactTextString(m) }
+func (*CreateKeyspaceResponse) ProtoMessage() {}
+func (*CreateKeyspaceResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{10}
+}
+func (m *CreateKeyspaceResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *CreateKeyspaceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_CreateKeyspaceResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *CreateKeyspaceResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_CreateKeyspaceResponse.Merge(m, src)
+}
+func (m *CreateKeyspaceResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *CreateKeyspaceResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_CreateKeyspaceResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CreateKeyspaceResponse proto.InternalMessageInfo
+
+func (m *CreateKeyspaceResponse) GetKeyspace() *Keyspace {
+ if m != nil {
+ return m.Keyspace
+ }
+ return nil
+}
+
+type CreateShardRequest struct {
+ // Keyspace is the name of the keyspace to create the shard in.
+ Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ // ShardName is the name of the shard to create. E.g. "-" or "-80".
+ ShardName string `protobuf:"bytes,2,opt,name=shard_name,json=shardName,proto3" json:"shard_name,omitempty"`
+ // Force treats an attempt to create a shard that already exists as a
+ // non-error.
+ Force bool `protobuf:"varint,3,opt,name=force,proto3" json:"force,omitempty"`
+ // IncludeParent creates the parent keyspace as an empty BASE keyspace, if it
+ // doesn't already exist.
+ IncludeParent bool `protobuf:"varint,4,opt,name=include_parent,json=includeParent,proto3" json:"include_parent,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *CreateShardRequest) Reset() { *m = CreateShardRequest{} }
+func (m *CreateShardRequest) String() string { return proto.CompactTextString(m) }
+func (*CreateShardRequest) ProtoMessage() {}
+func (*CreateShardRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{11}
+}
+func (m *CreateShardRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *CreateShardRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_CreateShardRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *CreateShardRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_CreateShardRequest.Merge(m, src)
+}
+func (m *CreateShardRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *CreateShardRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_CreateShardRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CreateShardRequest proto.InternalMessageInfo
+
+func (m *CreateShardRequest) GetKeyspace() string {
+ if m != nil {
+ return m.Keyspace
+ }
+ return ""
+}
+
+func (m *CreateShardRequest) GetShardName() string {
+ if m != nil {
+ return m.ShardName
+ }
+ return ""
+}
+
+func (m *CreateShardRequest) GetForce() bool {
+ if m != nil {
+ return m.Force
+ }
+ return false
+}
+
+func (m *CreateShardRequest) GetIncludeParent() bool {
+ if m != nil {
+ return m.IncludeParent
+ }
+ return false
+}
+
+type CreateShardResponse struct {
+ // Keyspace is the created keyspace. It is set only if IncludeParent was
+ // specified in the request and the parent keyspace needed to be created.
+ Keyspace *Keyspace `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ // Shard is the newly-created shard object.
+ Shard *Shard `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"`
+ // ShardAlreadyExists is set if Force was specified in the request and the
+ // shard already existed.
+ ShardAlreadyExists bool `protobuf:"varint,3,opt,name=shard_already_exists,json=shardAlreadyExists,proto3" json:"shard_already_exists,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *CreateShardResponse) Reset() { *m = CreateShardResponse{} }
+func (m *CreateShardResponse) String() string { return proto.CompactTextString(m) }
+func (*CreateShardResponse) ProtoMessage() {}
+func (*CreateShardResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{12}
+}
+func (m *CreateShardResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *CreateShardResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_CreateShardResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *CreateShardResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_CreateShardResponse.Merge(m, src)
+}
+func (m *CreateShardResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *CreateShardResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_CreateShardResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_CreateShardResponse proto.InternalMessageInfo
+
+func (m *CreateShardResponse) GetKeyspace() *Keyspace {
+ if m != nil {
+ return m.Keyspace
+ }
+ return nil
+}
+
+func (m *CreateShardResponse) GetShard() *Shard {
+ if m != nil {
+ return m.Shard
+ }
+ return nil
+}
+
+func (m *CreateShardResponse) GetShardAlreadyExists() bool {
+ if m != nil {
+ return m.ShardAlreadyExists
+ }
+ return false
+}
+
+type DeleteKeyspaceRequest struct {
+ // Keyspace is the name of the keyspace to delete.
+ Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ // Recursive causes all shards in the keyspace to be recursively deleted
+ // before deleting the keyspace. It is an error to call DeleteKeyspace on a
+ // non-empty keyspace without also specifying Recursive.
+ Recursive bool `protobuf:"varint,2,opt,name=recursive,proto3" json:"recursive,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *DeleteKeyspaceRequest) Reset() { *m = DeleteKeyspaceRequest{} }
+func (m *DeleteKeyspaceRequest) String() string { return proto.CompactTextString(m) }
+func (*DeleteKeyspaceRequest) ProtoMessage() {}
+func (*DeleteKeyspaceRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{13}
+}
+func (m *DeleteKeyspaceRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *DeleteKeyspaceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_DeleteKeyspaceRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *DeleteKeyspaceRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_DeleteKeyspaceRequest.Merge(m, src)
+}
+func (m *DeleteKeyspaceRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *DeleteKeyspaceRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_DeleteKeyspaceRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeleteKeyspaceRequest proto.InternalMessageInfo
+
+func (m *DeleteKeyspaceRequest) GetKeyspace() string {
+ if m != nil {
+ return m.Keyspace
+ }
+ return ""
+}
+
+func (m *DeleteKeyspaceRequest) GetRecursive() bool {
+ if m != nil {
+ return m.Recursive
+ }
+ return false
+}
+
+type DeleteKeyspaceResponse struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *DeleteKeyspaceResponse) Reset() { *m = DeleteKeyspaceResponse{} }
+func (m *DeleteKeyspaceResponse) String() string { return proto.CompactTextString(m) }
+func (*DeleteKeyspaceResponse) ProtoMessage() {}
+func (*DeleteKeyspaceResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{14}
+}
+func (m *DeleteKeyspaceResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *DeleteKeyspaceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_DeleteKeyspaceResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *DeleteKeyspaceResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_DeleteKeyspaceResponse.Merge(m, src)
+}
+func (m *DeleteKeyspaceResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *DeleteKeyspaceResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_DeleteKeyspaceResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeleteKeyspaceResponse proto.InternalMessageInfo
+
+type DeleteShardsRequest struct {
+ // Shards is the list of shards to delete. The nested topodatapb.Shard field
+ // is not required for DeleteShard, but the Keyspace and Shard fields are.
+ Shards []*Shard `protobuf:"bytes,1,rep,name=shards,proto3" json:"shards,omitempty"`
+ // Recursive also deletes all tablets belonging to the shard(s). It is an
+ // error to call DeleteShard on a non-empty shard without also specificying
+ // Recursive.
+ Recursive bool `protobuf:"varint,2,opt,name=recursive,proto3" json:"recursive,omitempty"`
+ // EvenIfServing allows a shard to be deleted even if it is serving, which is
+ // normally an error. Use with caution.
+ EvenIfServing bool `protobuf:"varint,4,opt,name=even_if_serving,json=evenIfServing,proto3" json:"even_if_serving,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *DeleteShardsRequest) Reset() { *m = DeleteShardsRequest{} }
+func (m *DeleteShardsRequest) String() string { return proto.CompactTextString(m) }
+func (*DeleteShardsRequest) ProtoMessage() {}
+func (*DeleteShardsRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{15}
+}
+func (m *DeleteShardsRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *DeleteShardsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_DeleteShardsRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *DeleteShardsRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_DeleteShardsRequest.Merge(m, src)
+}
+func (m *DeleteShardsRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *DeleteShardsRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_DeleteShardsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeleteShardsRequest proto.InternalMessageInfo
+
+func (m *DeleteShardsRequest) GetShards() []*Shard {
+ if m != nil {
+ return m.Shards
+ }
+ return nil
+}
+
+func (m *DeleteShardsRequest) GetRecursive() bool {
+ if m != nil {
+ return m.Recursive
+ }
+ return false
+}
+
+func (m *DeleteShardsRequest) GetEvenIfServing() bool {
+ if m != nil {
+ return m.EvenIfServing
+ }
+ return false
+}
+
+type DeleteShardsResponse struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *DeleteShardsResponse) Reset() { *m = DeleteShardsResponse{} }
+func (m *DeleteShardsResponse) String() string { return proto.CompactTextString(m) }
+func (*DeleteShardsResponse) ProtoMessage() {}
+func (*DeleteShardsResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{16}
+}
+func (m *DeleteShardsResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *DeleteShardsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_DeleteShardsResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *DeleteShardsResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_DeleteShardsResponse.Merge(m, src)
+}
+func (m *DeleteShardsResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *DeleteShardsResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_DeleteShardsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeleteShardsResponse proto.InternalMessageInfo
+
+type DeleteTabletsRequest struct {
+ // TabletAliases is the list of tablets to delete.
+ TabletAliases []*topodata.TabletAlias `protobuf:"bytes,1,rep,name=tablet_aliases,json=tabletAliases,proto3" json:"tablet_aliases,omitempty"`
+ // AllowPrimary allows for the master/primary tablet of a shard to be deleted.
+ // Use with caution.
+ AllowPrimary bool `protobuf:"varint,2,opt,name=allow_primary,json=allowPrimary,proto3" json:"allow_primary,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *DeleteTabletsRequest) Reset() { *m = DeleteTabletsRequest{} }
+func (m *DeleteTabletsRequest) String() string { return proto.CompactTextString(m) }
+func (*DeleteTabletsRequest) ProtoMessage() {}
+func (*DeleteTabletsRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{17}
+}
+func (m *DeleteTabletsRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *DeleteTabletsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_DeleteTabletsRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *DeleteTabletsRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_DeleteTabletsRequest.Merge(m, src)
+}
+func (m *DeleteTabletsRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *DeleteTabletsRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_DeleteTabletsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeleteTabletsRequest proto.InternalMessageInfo
+
+func (m *DeleteTabletsRequest) GetTabletAliases() []*topodata.TabletAlias {
+ if m != nil {
+ return m.TabletAliases
+ }
+ return nil
+}
+
+func (m *DeleteTabletsRequest) GetAllowPrimary() bool {
+ if m != nil {
+ return m.AllowPrimary
+ }
+ return false
+}
+
+type DeleteTabletsResponse struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *DeleteTabletsResponse) Reset() { *m = DeleteTabletsResponse{} }
+func (m *DeleteTabletsResponse) String() string { return proto.CompactTextString(m) }
+func (*DeleteTabletsResponse) ProtoMessage() {}
+func (*DeleteTabletsResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{18}
+}
+func (m *DeleteTabletsResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *DeleteTabletsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_DeleteTabletsResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *DeleteTabletsResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_DeleteTabletsResponse.Merge(m, src)
+}
+func (m *DeleteTabletsResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *DeleteTabletsResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_DeleteTabletsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_DeleteTabletsResponse proto.InternalMessageInfo
+
+type EmergencyReparentShardRequest struct {
+ // Keyspace is the name of the keyspace to perform the Emergency Reparent in.
+ Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ // Shard is the name of the shard to perform the Emergency Reparent in.
+ Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"`
+ // Optional alias of a tablet that should become the new shard primary. If not
+ // not specified, the vtctld will select the most up-to-date canditate to
+ // promote.
+ NewPrimary *topodata.TabletAlias `protobuf:"bytes,3,opt,name=new_primary,json=newPrimary,proto3" json:"new_primary,omitempty"`
+ // List of replica aliases to ignore during the Emergency Reparent. The vtctld
+ // will not attempt to stop replication on these tablets, nor attempt to
+ // demote any that may think they are the shard primary.
+ IgnoreReplicas []*topodata.TabletAlias `protobuf:"bytes,4,rep,name=ignore_replicas,json=ignoreReplicas,proto3" json:"ignore_replicas,omitempty"`
+ // WaitReplicasTimeout is the duration of time to wait for replicas to catch
+ // up in reparenting.
+ WaitReplicasTimeout *vttime.Duration `protobuf:"bytes,5,opt,name=wait_replicas_timeout,json=waitReplicasTimeout,proto3" json:"wait_replicas_timeout,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *EmergencyReparentShardRequest) Reset() { *m = EmergencyReparentShardRequest{} }
+func (m *EmergencyReparentShardRequest) String() string { return proto.CompactTextString(m) }
+func (*EmergencyReparentShardRequest) ProtoMessage() {}
+func (*EmergencyReparentShardRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{19}
+}
+func (m *EmergencyReparentShardRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *EmergencyReparentShardRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_EmergencyReparentShardRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *EmergencyReparentShardRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_EmergencyReparentShardRequest.Merge(m, src)
+}
+func (m *EmergencyReparentShardRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *EmergencyReparentShardRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_EmergencyReparentShardRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_EmergencyReparentShardRequest proto.InternalMessageInfo
+
+func (m *EmergencyReparentShardRequest) GetKeyspace() string {
+ if m != nil {
+ return m.Keyspace
+ }
+ return ""
+}
+
+func (m *EmergencyReparentShardRequest) GetShard() string {
+ if m != nil {
+ return m.Shard
+ }
+ return ""
+}
+
+func (m *EmergencyReparentShardRequest) GetNewPrimary() *topodata.TabletAlias {
+ if m != nil {
+ return m.NewPrimary
+ }
+ return nil
+}
+
+func (m *EmergencyReparentShardRequest) GetIgnoreReplicas() []*topodata.TabletAlias {
+ if m != nil {
+ return m.IgnoreReplicas
+ }
+ return nil
+}
+
+func (m *EmergencyReparentShardRequest) GetWaitReplicasTimeout() *vttime.Duration {
+ if m != nil {
+ return m.WaitReplicasTimeout
+ }
+ return nil
+}
+
+type EmergencyReparentShardResponse struct {
+ // Keyspace is the name of the keyspace the Emergency Reparent took place in.
+ Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ // Shard is the name of the shard the Emergency Reparent took place in.
+ Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"`
+ // PromotedPrimary is the alias of the tablet that was promoted to shard
+ // primary. If NewPrimary was set in the request, then this will be the same
+ // alias. Otherwise, it will be the alias of the tablet found to be most
+ // up-to-date.
+ PromotedPrimary *topodata.TabletAlias `protobuf:"bytes,3,opt,name=promoted_primary,json=promotedPrimary,proto3" json:"promoted_primary,omitempty"`
+ Events []*logutil.Event `protobuf:"bytes,4,rep,name=events,proto3" json:"events,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *EmergencyReparentShardResponse) Reset() { *m = EmergencyReparentShardResponse{} }
+func (m *EmergencyReparentShardResponse) String() string { return proto.CompactTextString(m) }
+func (*EmergencyReparentShardResponse) ProtoMessage() {}
+func (*EmergencyReparentShardResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{20}
+}
+func (m *EmergencyReparentShardResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *EmergencyReparentShardResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_EmergencyReparentShardResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *EmergencyReparentShardResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_EmergencyReparentShardResponse.Merge(m, src)
+}
+func (m *EmergencyReparentShardResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *EmergencyReparentShardResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_EmergencyReparentShardResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_EmergencyReparentShardResponse proto.InternalMessageInfo
+
+func (m *EmergencyReparentShardResponse) GetKeyspace() string {
+ if m != nil {
+ return m.Keyspace
+ }
+ return ""
+}
+
+func (m *EmergencyReparentShardResponse) GetShard() string {
+ if m != nil {
+ return m.Shard
+ }
+ return ""
+}
+
+func (m *EmergencyReparentShardResponse) GetPromotedPrimary() *topodata.TabletAlias {
+ if m != nil {
+ return m.PromotedPrimary
+ }
+ return nil
+}
+
+func (m *EmergencyReparentShardResponse) GetEvents() []*logutil.Event {
+ if m != nil {
+ return m.Events
+ }
+ return nil
+}
+
+type FindAllShardsInKeyspaceRequest struct {
+ Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *FindAllShardsInKeyspaceRequest) Reset() { *m = FindAllShardsInKeyspaceRequest{} }
+func (m *FindAllShardsInKeyspaceRequest) String() string { return proto.CompactTextString(m) }
+func (*FindAllShardsInKeyspaceRequest) ProtoMessage() {}
+func (*FindAllShardsInKeyspaceRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{21}
+}
+func (m *FindAllShardsInKeyspaceRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *FindAllShardsInKeyspaceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_FindAllShardsInKeyspaceRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *FindAllShardsInKeyspaceRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_FindAllShardsInKeyspaceRequest.Merge(m, src)
+}
+func (m *FindAllShardsInKeyspaceRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *FindAllShardsInKeyspaceRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_FindAllShardsInKeyspaceRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FindAllShardsInKeyspaceRequest proto.InternalMessageInfo
+
+func (m *FindAllShardsInKeyspaceRequest) GetKeyspace() string {
+ if m != nil {
+ return m.Keyspace
+ }
+ return ""
+}
+
+type FindAllShardsInKeyspaceResponse struct {
+ Shards map[string]*Shard `protobuf:"bytes,1,rep,name=shards,proto3" json:"shards,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *FindAllShardsInKeyspaceResponse) Reset() { *m = FindAllShardsInKeyspaceResponse{} }
+func (m *FindAllShardsInKeyspaceResponse) String() string { return proto.CompactTextString(m) }
+func (*FindAllShardsInKeyspaceResponse) ProtoMessage() {}
+func (*FindAllShardsInKeyspaceResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{22}
+}
+func (m *FindAllShardsInKeyspaceResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *FindAllShardsInKeyspaceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_FindAllShardsInKeyspaceResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *FindAllShardsInKeyspaceResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_FindAllShardsInKeyspaceResponse.Merge(m, src)
+}
+func (m *FindAllShardsInKeyspaceResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *FindAllShardsInKeyspaceResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_FindAllShardsInKeyspaceResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_FindAllShardsInKeyspaceResponse proto.InternalMessageInfo
+
+func (m *FindAllShardsInKeyspaceResponse) GetShards() map[string]*Shard {
+ if m != nil {
+ return m.Shards
+ }
+ return nil
+}
+
+type GetBackupsRequest struct {
+ Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetBackupsRequest) Reset() { *m = GetBackupsRequest{} }
+func (m *GetBackupsRequest) String() string { return proto.CompactTextString(m) }
+func (*GetBackupsRequest) ProtoMessage() {}
+func (*GetBackupsRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{23}
+}
+func (m *GetBackupsRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetBackupsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetBackupsRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetBackupsRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetBackupsRequest.Merge(m, src)
+}
+func (m *GetBackupsRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetBackupsRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetBackupsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetBackupsRequest proto.InternalMessageInfo
+
+func (m *GetBackupsRequest) GetKeyspace() string {
+ if m != nil {
+ return m.Keyspace
+ }
+ return ""
+}
+
+func (m *GetBackupsRequest) GetShard() string {
+ if m != nil {
+ return m.Shard
+ }
+ return ""
+}
+
+type GetBackupsResponse struct {
+ Backups []*mysqlctl.BackupInfo `protobuf:"bytes,1,rep,name=backups,proto3" json:"backups,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetBackupsResponse) Reset() { *m = GetBackupsResponse{} }
+func (m *GetBackupsResponse) String() string { return proto.CompactTextString(m) }
+func (*GetBackupsResponse) ProtoMessage() {}
+func (*GetBackupsResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{24}
+}
+func (m *GetBackupsResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetBackupsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetBackupsResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetBackupsResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetBackupsResponse.Merge(m, src)
+}
+func (m *GetBackupsResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetBackupsResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetBackupsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetBackupsResponse proto.InternalMessageInfo
+
+func (m *GetBackupsResponse) GetBackups() []*mysqlctl.BackupInfo {
+ if m != nil {
+ return m.Backups
+ }
+ return nil
+}
+
+type GetCellInfoNamesRequest struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetCellInfoNamesRequest) Reset() { *m = GetCellInfoNamesRequest{} }
+func (m *GetCellInfoNamesRequest) String() string { return proto.CompactTextString(m) }
+func (*GetCellInfoNamesRequest) ProtoMessage() {}
+func (*GetCellInfoNamesRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{25}
+}
+func (m *GetCellInfoNamesRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetCellInfoNamesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetCellInfoNamesRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetCellInfoNamesRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetCellInfoNamesRequest.Merge(m, src)
+}
+func (m *GetCellInfoNamesRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetCellInfoNamesRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetCellInfoNamesRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetCellInfoNamesRequest proto.InternalMessageInfo
+
+type GetCellInfoNamesResponse struct {
+ Names []string `protobuf:"bytes,1,rep,name=names,proto3" json:"names,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetCellInfoNamesResponse) Reset() { *m = GetCellInfoNamesResponse{} }
+func (m *GetCellInfoNamesResponse) String() string { return proto.CompactTextString(m) }
+func (*GetCellInfoNamesResponse) ProtoMessage() {}
+func (*GetCellInfoNamesResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{26}
+}
+func (m *GetCellInfoNamesResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetCellInfoNamesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetCellInfoNamesResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetCellInfoNamesResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetCellInfoNamesResponse.Merge(m, src)
+}
+func (m *GetCellInfoNamesResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetCellInfoNamesResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetCellInfoNamesResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetCellInfoNamesResponse proto.InternalMessageInfo
+
+func (m *GetCellInfoNamesResponse) GetNames() []string {
+ if m != nil {
+ return m.Names
+ }
+ return nil
+}
+
+type GetCellInfoRequest struct {
+ Cell string `protobuf:"bytes,1,opt,name=cell,proto3" json:"cell,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetCellInfoRequest) Reset() { *m = GetCellInfoRequest{} }
+func (m *GetCellInfoRequest) String() string { return proto.CompactTextString(m) }
+func (*GetCellInfoRequest) ProtoMessage() {}
+func (*GetCellInfoRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{27}
+}
+func (m *GetCellInfoRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetCellInfoRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetCellInfoRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetCellInfoRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetCellInfoRequest.Merge(m, src)
+}
+func (m *GetCellInfoRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetCellInfoRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetCellInfoRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetCellInfoRequest proto.InternalMessageInfo
+
+func (m *GetCellInfoRequest) GetCell() string {
+ if m != nil {
+ return m.Cell
+ }
+ return ""
+}
+
+type GetCellInfoResponse struct {
+ CellInfo *topodata.CellInfo `protobuf:"bytes,1,opt,name=cell_info,json=cellInfo,proto3" json:"cell_info,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetCellInfoResponse) Reset() { *m = GetCellInfoResponse{} }
+func (m *GetCellInfoResponse) String() string { return proto.CompactTextString(m) }
+func (*GetCellInfoResponse) ProtoMessage() {}
+func (*GetCellInfoResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{28}
+}
+func (m *GetCellInfoResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetCellInfoResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetCellInfoResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetCellInfoResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetCellInfoResponse.Merge(m, src)
+}
+func (m *GetCellInfoResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetCellInfoResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetCellInfoResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetCellInfoResponse proto.InternalMessageInfo
+
+func (m *GetCellInfoResponse) GetCellInfo() *topodata.CellInfo {
+ if m != nil {
+ return m.CellInfo
+ }
+ return nil
+}
+
+type GetCellsAliasesRequest struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetCellsAliasesRequest) Reset() { *m = GetCellsAliasesRequest{} }
+func (m *GetCellsAliasesRequest) String() string { return proto.CompactTextString(m) }
+func (*GetCellsAliasesRequest) ProtoMessage() {}
+func (*GetCellsAliasesRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{29}
+}
+func (m *GetCellsAliasesRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetCellsAliasesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetCellsAliasesRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetCellsAliasesRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetCellsAliasesRequest.Merge(m, src)
+}
+func (m *GetCellsAliasesRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetCellsAliasesRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetCellsAliasesRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetCellsAliasesRequest proto.InternalMessageInfo
+
+type GetCellsAliasesResponse struct {
+ Aliases map[string]*topodata.CellsAlias `protobuf:"bytes,1,rep,name=aliases,proto3" json:"aliases,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetCellsAliasesResponse) Reset() { *m = GetCellsAliasesResponse{} }
+func (m *GetCellsAliasesResponse) String() string { return proto.CompactTextString(m) }
+func (*GetCellsAliasesResponse) ProtoMessage() {}
+func (*GetCellsAliasesResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{30}
+}
+func (m *GetCellsAliasesResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetCellsAliasesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetCellsAliasesResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetCellsAliasesResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetCellsAliasesResponse.Merge(m, src)
+}
+func (m *GetCellsAliasesResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetCellsAliasesResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetCellsAliasesResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetCellsAliasesResponse proto.InternalMessageInfo
+
+func (m *GetCellsAliasesResponse) GetAliases() map[string]*topodata.CellsAlias {
+ if m != nil {
+ return m.Aliases
+ }
+ return nil
+}
+
+type GetKeyspacesRequest struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetKeyspacesRequest) Reset() { *m = GetKeyspacesRequest{} }
+func (m *GetKeyspacesRequest) String() string { return proto.CompactTextString(m) }
+func (*GetKeyspacesRequest) ProtoMessage() {}
+func (*GetKeyspacesRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{31}
+}
+func (m *GetKeyspacesRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetKeyspacesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetKeyspacesRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetKeyspacesRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetKeyspacesRequest.Merge(m, src)
+}
+func (m *GetKeyspacesRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetKeyspacesRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetKeyspacesRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetKeyspacesRequest proto.InternalMessageInfo
+
+type GetKeyspacesResponse struct {
+ Keyspaces []*Keyspace `protobuf:"bytes,1,rep,name=keyspaces,proto3" json:"keyspaces,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetKeyspacesResponse) Reset() { *m = GetKeyspacesResponse{} }
+func (m *GetKeyspacesResponse) String() string { return proto.CompactTextString(m) }
+func (*GetKeyspacesResponse) ProtoMessage() {}
+func (*GetKeyspacesResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{32}
+}
+func (m *GetKeyspacesResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetKeyspacesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetKeyspacesResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetKeyspacesResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetKeyspacesResponse.Merge(m, src)
+}
+func (m *GetKeyspacesResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetKeyspacesResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetKeyspacesResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetKeyspacesResponse proto.InternalMessageInfo
+
+func (m *GetKeyspacesResponse) GetKeyspaces() []*Keyspace {
+ if m != nil {
+ return m.Keyspaces
+ }
+ return nil
+}
+
+type GetKeyspaceRequest struct {
+ Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetKeyspaceRequest) Reset() { *m = GetKeyspaceRequest{} }
+func (m *GetKeyspaceRequest) String() string { return proto.CompactTextString(m) }
+func (*GetKeyspaceRequest) ProtoMessage() {}
+func (*GetKeyspaceRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{33}
+}
+func (m *GetKeyspaceRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetKeyspaceRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetKeyspaceRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetKeyspaceRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetKeyspaceRequest.Merge(m, src)
+}
+func (m *GetKeyspaceRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetKeyspaceRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetKeyspaceRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetKeyspaceRequest proto.InternalMessageInfo
+
+func (m *GetKeyspaceRequest) GetKeyspace() string {
+ if m != nil {
+ return m.Keyspace
+ }
+ return ""
+}
+
+type GetKeyspaceResponse struct {
+ Keyspace *Keyspace `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetKeyspaceResponse) Reset() { *m = GetKeyspaceResponse{} }
+func (m *GetKeyspaceResponse) String() string { return proto.CompactTextString(m) }
+func (*GetKeyspaceResponse) ProtoMessage() {}
+func (*GetKeyspaceResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{34}
+}
+func (m *GetKeyspaceResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetKeyspaceResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetKeyspaceResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetKeyspaceResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetKeyspaceResponse.Merge(m, src)
+}
+func (m *GetKeyspaceResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetKeyspaceResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetKeyspaceResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetKeyspaceResponse proto.InternalMessageInfo
+
+func (m *GetKeyspaceResponse) GetKeyspace() *Keyspace {
+ if m != nil {
+ return m.Keyspace
+ }
+ return nil
+}
+
+type GetSchemaRequest struct {
+ TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"`
+ // Tables is a list of tables for which we should gather information. Each is
+ // either an exact match, or a regular expression of the form /regexp/.
+ Tables []string `protobuf:"bytes,2,rep,name=tables,proto3" json:"tables,omitempty"`
+ // ExcludeTables is a list of tables to exclude from the result. Each is
+ // either an exact match, or a regular expression of the form /regexp/.
+ ExcludeTables []string `protobuf:"bytes,3,rep,name=exclude_tables,json=excludeTables,proto3" json:"exclude_tables,omitempty"`
+ // IncludeViews specifies whether to include views in the result.
+ IncludeViews bool `protobuf:"varint,4,opt,name=include_views,json=includeViews,proto3" json:"include_views,omitempty"`
+ // TableNamesOnly specifies whether to limit the results to just table names,
+ // rather than full schema information for each table.
+ TableNamesOnly bool `protobuf:"varint,5,opt,name=table_names_only,json=tableNamesOnly,proto3" json:"table_names_only,omitempty"`
+ // TableSizesOnly specifies whether to limit the results to just table sizes,
+ // rather than full schema information for each table. It is ignored if
+ // TableNamesOnly is set to true.
+ TableSizesOnly bool `protobuf:"varint,6,opt,name=table_sizes_only,json=tableSizesOnly,proto3" json:"table_sizes_only,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetSchemaRequest) Reset() { *m = GetSchemaRequest{} }
+func (m *GetSchemaRequest) String() string { return proto.CompactTextString(m) }
+func (*GetSchemaRequest) ProtoMessage() {}
+func (*GetSchemaRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{35}
+}
+func (m *GetSchemaRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetSchemaRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetSchemaRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetSchemaRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetSchemaRequest.Merge(m, src)
+}
+func (m *GetSchemaRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetSchemaRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetSchemaRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetSchemaRequest proto.InternalMessageInfo
+
+func (m *GetSchemaRequest) GetTabletAlias() *topodata.TabletAlias {
+ if m != nil {
+ return m.TabletAlias
+ }
+ return nil
+}
+
+func (m *GetSchemaRequest) GetTables() []string {
+ if m != nil {
+ return m.Tables
+ }
+ return nil
+}
+
+func (m *GetSchemaRequest) GetExcludeTables() []string {
+ if m != nil {
+ return m.ExcludeTables
+ }
+ return nil
+}
+
+func (m *GetSchemaRequest) GetIncludeViews() bool {
+ if m != nil {
+ return m.IncludeViews
+ }
+ return false
+}
+
+func (m *GetSchemaRequest) GetTableNamesOnly() bool {
+ if m != nil {
+ return m.TableNamesOnly
+ }
+ return false
+}
+
+func (m *GetSchemaRequest) GetTableSizesOnly() bool {
+ if m != nil {
+ return m.TableSizesOnly
+ }
+ return false
+}
+
+type GetSchemaResponse struct {
+ Schema *tabletmanagerdata.SchemaDefinition `protobuf:"bytes,1,opt,name=schema,proto3" json:"schema,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetSchemaResponse) Reset() { *m = GetSchemaResponse{} }
+func (m *GetSchemaResponse) String() string { return proto.CompactTextString(m) }
+func (*GetSchemaResponse) ProtoMessage() {}
+func (*GetSchemaResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{36}
+}
+func (m *GetSchemaResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetSchemaResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetSchemaResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetSchemaResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetSchemaResponse.Merge(m, src)
+}
+func (m *GetSchemaResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetSchemaResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetSchemaResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetSchemaResponse proto.InternalMessageInfo
+
+func (m *GetSchemaResponse) GetSchema() *tabletmanagerdata.SchemaDefinition {
+ if m != nil {
+ return m.Schema
+ }
+ return nil
+}
+
+type GetShardRequest struct {
+ Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ ShardName string `protobuf:"bytes,2,opt,name=shard_name,json=shardName,proto3" json:"shard_name,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetShardRequest) Reset() { *m = GetShardRequest{} }
+func (m *GetShardRequest) String() string { return proto.CompactTextString(m) }
+func (*GetShardRequest) ProtoMessage() {}
+func (*GetShardRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{37}
+}
+func (m *GetShardRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetShardRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetShardRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetShardRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetShardRequest.Merge(m, src)
+}
+func (m *GetShardRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetShardRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetShardRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetShardRequest proto.InternalMessageInfo
+
+func (m *GetShardRequest) GetKeyspace() string {
+ if m != nil {
+ return m.Keyspace
+ }
+ return ""
+}
+
+func (m *GetShardRequest) GetShardName() string {
+ if m != nil {
+ return m.ShardName
+ }
+ return ""
+}
+
+type GetShardResponse struct {
+ Shard *Shard `protobuf:"bytes,1,opt,name=shard,proto3" json:"shard,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetShardResponse) Reset() { *m = GetShardResponse{} }
+func (m *GetShardResponse) String() string { return proto.CompactTextString(m) }
+func (*GetShardResponse) ProtoMessage() {}
+func (*GetShardResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{38}
+}
+func (m *GetShardResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetShardResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetShardResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetShardResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetShardResponse.Merge(m, src)
+}
+func (m *GetShardResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetShardResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetShardResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetShardResponse proto.InternalMessageInfo
+
+func (m *GetShardResponse) GetShard() *Shard {
+ if m != nil {
+ return m.Shard
+ }
+ return nil
+}
+
+type GetSrvKeyspacesRequest struct {
+ Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ // Cells is a list of cells to lookup a SrvKeyspace for. Leaving this empty is
+ // equivalent to specifying all cells in the topo.
+ Cells []string `protobuf:"bytes,2,rep,name=cells,proto3" json:"cells,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetSrvKeyspacesRequest) Reset() { *m = GetSrvKeyspacesRequest{} }
+func (m *GetSrvKeyspacesRequest) String() string { return proto.CompactTextString(m) }
+func (*GetSrvKeyspacesRequest) ProtoMessage() {}
+func (*GetSrvKeyspacesRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{39}
+}
+func (m *GetSrvKeyspacesRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetSrvKeyspacesRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetSrvKeyspacesRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetSrvKeyspacesRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetSrvKeyspacesRequest.Merge(m, src)
+}
+func (m *GetSrvKeyspacesRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetSrvKeyspacesRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetSrvKeyspacesRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetSrvKeyspacesRequest proto.InternalMessageInfo
+
+func (m *GetSrvKeyspacesRequest) GetKeyspace() string {
+ if m != nil {
+ return m.Keyspace
+ }
+ return ""
+}
+
+func (m *GetSrvKeyspacesRequest) GetCells() []string {
+ if m != nil {
+ return m.Cells
+ }
+ return nil
+}
+
+type GetSrvKeyspacesResponse struct {
+ // SrvKeyspaces is a mapping of cell name to SrvKeyspace.
+ SrvKeyspaces map[string]*topodata.SrvKeyspace `protobuf:"bytes,1,rep,name=srv_keyspaces,json=srvKeyspaces,proto3" json:"srv_keyspaces,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetSrvKeyspacesResponse) Reset() { *m = GetSrvKeyspacesResponse{} }
+func (m *GetSrvKeyspacesResponse) String() string { return proto.CompactTextString(m) }
+func (*GetSrvKeyspacesResponse) ProtoMessage() {}
+func (*GetSrvKeyspacesResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{40}
+}
+func (m *GetSrvKeyspacesResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetSrvKeyspacesResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetSrvKeyspacesResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetSrvKeyspacesResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetSrvKeyspacesResponse.Merge(m, src)
+}
+func (m *GetSrvKeyspacesResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetSrvKeyspacesResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetSrvKeyspacesResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetSrvKeyspacesResponse proto.InternalMessageInfo
+
+func (m *GetSrvKeyspacesResponse) GetSrvKeyspaces() map[string]*topodata.SrvKeyspace {
+ if m != nil {
+ return m.SrvKeyspaces
+ }
+ return nil
+}
+
+type GetSrvVSchemaRequest struct {
+ Cell string `protobuf:"bytes,1,opt,name=cell,proto3" json:"cell,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetSrvVSchemaRequest) Reset() { *m = GetSrvVSchemaRequest{} }
+func (m *GetSrvVSchemaRequest) String() string { return proto.CompactTextString(m) }
+func (*GetSrvVSchemaRequest) ProtoMessage() {}
+func (*GetSrvVSchemaRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{41}
+}
+func (m *GetSrvVSchemaRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetSrvVSchemaRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetSrvVSchemaRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetSrvVSchemaRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetSrvVSchemaRequest.Merge(m, src)
+}
+func (m *GetSrvVSchemaRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetSrvVSchemaRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetSrvVSchemaRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetSrvVSchemaRequest proto.InternalMessageInfo
+
+func (m *GetSrvVSchemaRequest) GetCell() string {
+ if m != nil {
+ return m.Cell
+ }
+ return ""
+}
+
+type GetSrvVSchemaResponse struct {
+ SrvVSchema *vschema.SrvVSchema `protobuf:"bytes,1,opt,name=srv_v_schema,json=srvVSchema,proto3" json:"srv_v_schema,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetSrvVSchemaResponse) Reset() { *m = GetSrvVSchemaResponse{} }
+func (m *GetSrvVSchemaResponse) String() string { return proto.CompactTextString(m) }
+func (*GetSrvVSchemaResponse) ProtoMessage() {}
+func (*GetSrvVSchemaResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{42}
+}
+func (m *GetSrvVSchemaResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetSrvVSchemaResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetSrvVSchemaResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetSrvVSchemaResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetSrvVSchemaResponse.Merge(m, src)
+}
+func (m *GetSrvVSchemaResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetSrvVSchemaResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetSrvVSchemaResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetSrvVSchemaResponse proto.InternalMessageInfo
+
+func (m *GetSrvVSchemaResponse) GetSrvVSchema() *vschema.SrvVSchema {
+ if m != nil {
+ return m.SrvVSchema
+ }
+ return nil
+}
+
+type GetTabletRequest struct {
+ TabletAlias *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet_alias,json=tabletAlias,proto3" json:"tablet_alias,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetTabletRequest) Reset() { *m = GetTabletRequest{} }
+func (m *GetTabletRequest) String() string { return proto.CompactTextString(m) }
+func (*GetTabletRequest) ProtoMessage() {}
+func (*GetTabletRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{43}
+}
+func (m *GetTabletRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetTabletRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetTabletRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetTabletRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetTabletRequest.Merge(m, src)
+}
+func (m *GetTabletRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetTabletRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetTabletRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetTabletRequest proto.InternalMessageInfo
+
+func (m *GetTabletRequest) GetTabletAlias() *topodata.TabletAlias {
+ if m != nil {
+ return m.TabletAlias
+ }
+ return nil
+}
+
+type GetTabletResponse struct {
+ Tablet *topodata.Tablet `protobuf:"bytes,1,opt,name=tablet,proto3" json:"tablet,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetTabletResponse) Reset() { *m = GetTabletResponse{} }
+func (m *GetTabletResponse) String() string { return proto.CompactTextString(m) }
+func (*GetTabletResponse) ProtoMessage() {}
+func (*GetTabletResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{44}
+}
+func (m *GetTabletResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetTabletResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetTabletResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetTabletResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetTabletResponse.Merge(m, src)
+}
+func (m *GetTabletResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetTabletResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetTabletResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetTabletResponse proto.InternalMessageInfo
+
+func (m *GetTabletResponse) GetTablet() *topodata.Tablet {
+ if m != nil {
+ return m.Tablet
+ }
+ return nil
+}
+
+type GetTabletsRequest struct {
+ // Keyspace is the name of the keyspace to return tablets for. Omit to return
+ // all tablets.
+ Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ // Shard is the name of the shard to return tablets for. This field is ignored
+ // if Keyspace is not set.
+ Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"`
+ // Cells is an optional set of cells to return tablets for.
+ Cells []string `protobuf:"bytes,3,rep,name=cells,proto3" json:"cells,omitempty"`
+ // Strict specifies how the server should treat failures from individual
+ // cells.
+ //
+ // When false (the default), GetTablets will return data from any cells that
+ // return successfully, but will fail the request if all cells fail. When
+ // true, any individual cell can fail the full request.
+ Strict bool `protobuf:"varint,4,opt,name=strict,proto3" json:"strict,omitempty"`
+ // TabletAliases is an optional list of tablet aliases to fetch Tablet objects
+ // for. If specified, Keyspace, Shard, and Cells are ignored, and tablets are
+ // looked up by their respective aliases' Cells directly.
+ TabletAliases []*topodata.TabletAlias `protobuf:"bytes,5,rep,name=tablet_aliases,json=tabletAliases,proto3" json:"tablet_aliases,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetTabletsRequest) Reset() { *m = GetTabletsRequest{} }
+func (m *GetTabletsRequest) String() string { return proto.CompactTextString(m) }
+func (*GetTabletsRequest) ProtoMessage() {}
+func (*GetTabletsRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{45}
+}
+func (m *GetTabletsRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetTabletsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetTabletsRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetTabletsRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetTabletsRequest.Merge(m, src)
+}
+func (m *GetTabletsRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetTabletsRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetTabletsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetTabletsRequest proto.InternalMessageInfo
+
+func (m *GetTabletsRequest) GetKeyspace() string {
+ if m != nil {
+ return m.Keyspace
+ }
+ return ""
+}
+
+func (m *GetTabletsRequest) GetShard() string {
+ if m != nil {
+ return m.Shard
+ }
+ return ""
+}
+
+func (m *GetTabletsRequest) GetCells() []string {
+ if m != nil {
+ return m.Cells
+ }
+ return nil
+}
+
+func (m *GetTabletsRequest) GetStrict() bool {
+ if m != nil {
+ return m.Strict
+ }
+ return false
+}
+
+func (m *GetTabletsRequest) GetTabletAliases() []*topodata.TabletAlias {
+ if m != nil {
+ return m.TabletAliases
+ }
+ return nil
+}
+
+type GetTabletsResponse struct {
+ Tablets []*topodata.Tablet `protobuf:"bytes,1,rep,name=tablets,proto3" json:"tablets,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetTabletsResponse) Reset() { *m = GetTabletsResponse{} }
+func (m *GetTabletsResponse) String() string { return proto.CompactTextString(m) }
+func (*GetTabletsResponse) ProtoMessage() {}
+func (*GetTabletsResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{46}
+}
+func (m *GetTabletsResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetTabletsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetTabletsResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetTabletsResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetTabletsResponse.Merge(m, src)
+}
+func (m *GetTabletsResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetTabletsResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetTabletsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetTabletsResponse proto.InternalMessageInfo
+
+func (m *GetTabletsResponse) GetTablets() []*topodata.Tablet {
+ if m != nil {
+ return m.Tablets
+ }
+ return nil
+}
+
+type GetVSchemaRequest struct {
+ Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetVSchemaRequest) Reset() { *m = GetVSchemaRequest{} }
+func (m *GetVSchemaRequest) String() string { return proto.CompactTextString(m) }
+func (*GetVSchemaRequest) ProtoMessage() {}
+func (*GetVSchemaRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{47}
+}
+func (m *GetVSchemaRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetVSchemaRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetVSchemaRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetVSchemaRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetVSchemaRequest.Merge(m, src)
+}
+func (m *GetVSchemaRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetVSchemaRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetVSchemaRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetVSchemaRequest proto.InternalMessageInfo
+
+func (m *GetVSchemaRequest) GetKeyspace() string {
+ if m != nil {
+ return m.Keyspace
+ }
+ return ""
+}
+
+type GetVSchemaResponse struct {
+ VSchema *vschema.Keyspace `protobuf:"bytes,1,opt,name=v_schema,json=vSchema,proto3" json:"v_schema,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetVSchemaResponse) Reset() { *m = GetVSchemaResponse{} }
+func (m *GetVSchemaResponse) String() string { return proto.CompactTextString(m) }
+func (*GetVSchemaResponse) ProtoMessage() {}
+func (*GetVSchemaResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{48}
+}
+func (m *GetVSchemaResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetVSchemaResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetVSchemaResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetVSchemaResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetVSchemaResponse.Merge(m, src)
+}
+func (m *GetVSchemaResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetVSchemaResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetVSchemaResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetVSchemaResponse proto.InternalMessageInfo
+
+func (m *GetVSchemaResponse) GetVSchema() *vschema.Keyspace {
+ if m != nil {
+ return m.VSchema
+ }
+ return nil
+}
+
+type GetWorkflowsRequest struct {
+ Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ ActiveOnly bool `protobuf:"varint,2,opt,name=active_only,json=activeOnly,proto3" json:"active_only,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetWorkflowsRequest) Reset() { *m = GetWorkflowsRequest{} }
+func (m *GetWorkflowsRequest) String() string { return proto.CompactTextString(m) }
+func (*GetWorkflowsRequest) ProtoMessage() {}
+func (*GetWorkflowsRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{49}
+}
+func (m *GetWorkflowsRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetWorkflowsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetWorkflowsRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetWorkflowsRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetWorkflowsRequest.Merge(m, src)
+}
+func (m *GetWorkflowsRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetWorkflowsRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetWorkflowsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetWorkflowsRequest proto.InternalMessageInfo
+
+func (m *GetWorkflowsRequest) GetKeyspace() string {
+ if m != nil {
+ return m.Keyspace
+ }
+ return ""
+}
+
+func (m *GetWorkflowsRequest) GetActiveOnly() bool {
+ if m != nil {
+ return m.ActiveOnly
+ }
+ return false
+}
+
+type GetWorkflowsResponse struct {
+ Workflows []*Workflow `protobuf:"bytes,1,rep,name=workflows,proto3" json:"workflows,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *GetWorkflowsResponse) Reset() { *m = GetWorkflowsResponse{} }
+func (m *GetWorkflowsResponse) String() string { return proto.CompactTextString(m) }
+func (*GetWorkflowsResponse) ProtoMessage() {}
+func (*GetWorkflowsResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{50}
+}
+func (m *GetWorkflowsResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *GetWorkflowsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_GetWorkflowsResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *GetWorkflowsResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_GetWorkflowsResponse.Merge(m, src)
+}
+func (m *GetWorkflowsResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *GetWorkflowsResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_GetWorkflowsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GetWorkflowsResponse proto.InternalMessageInfo
+
+func (m *GetWorkflowsResponse) GetWorkflows() []*Workflow {
+ if m != nil {
+ return m.Workflows
+ }
+ return nil
+}
+
+type InitShardPrimaryRequest struct {
+ Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"`
+ PrimaryElectTabletAlias *topodata.TabletAlias `protobuf:"bytes,3,opt,name=primary_elect_tablet_alias,json=primaryElectTabletAlias,proto3" json:"primary_elect_tablet_alias,omitempty"`
+ Force bool `protobuf:"varint,4,opt,name=force,proto3" json:"force,omitempty"`
+ WaitReplicasTimeout *vttime.Duration `protobuf:"bytes,5,opt,name=wait_replicas_timeout,json=waitReplicasTimeout,proto3" json:"wait_replicas_timeout,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *InitShardPrimaryRequest) Reset() { *m = InitShardPrimaryRequest{} }
+func (m *InitShardPrimaryRequest) String() string { return proto.CompactTextString(m) }
+func (*InitShardPrimaryRequest) ProtoMessage() {}
+func (*InitShardPrimaryRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{51}
+}
+func (m *InitShardPrimaryRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *InitShardPrimaryRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_InitShardPrimaryRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *InitShardPrimaryRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_InitShardPrimaryRequest.Merge(m, src)
+}
+func (m *InitShardPrimaryRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *InitShardPrimaryRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_InitShardPrimaryRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_InitShardPrimaryRequest proto.InternalMessageInfo
+
+func (m *InitShardPrimaryRequest) GetKeyspace() string {
+ if m != nil {
+ return m.Keyspace
+ }
+ return ""
+}
+
+func (m *InitShardPrimaryRequest) GetShard() string {
+ if m != nil {
+ return m.Shard
+ }
+ return ""
+}
+
+func (m *InitShardPrimaryRequest) GetPrimaryElectTabletAlias() *topodata.TabletAlias {
+ if m != nil {
+ return m.PrimaryElectTabletAlias
+ }
+ return nil
+}
+
+func (m *InitShardPrimaryRequest) GetForce() bool {
+ if m != nil {
+ return m.Force
+ }
+ return false
+}
+
+func (m *InitShardPrimaryRequest) GetWaitReplicasTimeout() *vttime.Duration {
+ if m != nil {
+ return m.WaitReplicasTimeout
+ }
+ return nil
+}
+
+type InitShardPrimaryResponse struct {
+ Events []*logutil.Event `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *InitShardPrimaryResponse) Reset() { *m = InitShardPrimaryResponse{} }
+func (m *InitShardPrimaryResponse) String() string { return proto.CompactTextString(m) }
+func (*InitShardPrimaryResponse) ProtoMessage() {}
+func (*InitShardPrimaryResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{52}
+}
+func (m *InitShardPrimaryResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *InitShardPrimaryResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_InitShardPrimaryResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *InitShardPrimaryResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_InitShardPrimaryResponse.Merge(m, src)
+}
+func (m *InitShardPrimaryResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *InitShardPrimaryResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_InitShardPrimaryResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_InitShardPrimaryResponse proto.InternalMessageInfo
+
+func (m *InitShardPrimaryResponse) GetEvents() []*logutil.Event {
+ if m != nil {
+ return m.Events
+ }
+ return nil
+}
+
+type PlannedReparentShardRequest struct {
+ // Keyspace is the name of the keyspace to perform the Planned Reparent in.
+ Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ // Shard is the name of the shard to perform teh Planned Reparent in.
+ Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"`
+ // NewPrimary is the alias of the tablet to promote to shard primary. If not
+ // specified, the vtctld will select the most up-to-date candidate to promote.
+ //
+ // It is an error to set NewPrimary and AvoidPrimary to the same alias.
+ NewPrimary *topodata.TabletAlias `protobuf:"bytes,3,opt,name=new_primary,json=newPrimary,proto3" json:"new_primary,omitempty"`
+ // AvoidPrimary is the alias of the tablet to demote. In other words,
+ // specifying an AvoidPrimary alias tells the vtctld to promote any replica
+ // other than this one. A shard whose current primary is not this one is then
+ // a no-op.
+ //
+ // It is an error to set NewPrimary and AvoidPrimary to the same alias.
+ AvoidPrimary *topodata.TabletAlias `protobuf:"bytes,4,opt,name=avoid_primary,json=avoidPrimary,proto3" json:"avoid_primary,omitempty"`
+ // WaitReplicasTimeout is the duration of time to wait for replicas to catch
+ // up in replication both before and after the reparent. The timeout is not
+ // cumulative across both wait periods, meaning that the replicas have
+ // WaitReplicasTimeout time to catch up before the reparent, and an additional
+ // WaitReplicasTimeout time to catch up after the reparent.
+ WaitReplicasTimeout *vttime.Duration `protobuf:"bytes,5,opt,name=wait_replicas_timeout,json=waitReplicasTimeout,proto3" json:"wait_replicas_timeout,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *PlannedReparentShardRequest) Reset() { *m = PlannedReparentShardRequest{} }
+func (m *PlannedReparentShardRequest) String() string { return proto.CompactTextString(m) }
+func (*PlannedReparentShardRequest) ProtoMessage() {}
+func (*PlannedReparentShardRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{53}
+}
+func (m *PlannedReparentShardRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *PlannedReparentShardRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_PlannedReparentShardRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *PlannedReparentShardRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_PlannedReparentShardRequest.Merge(m, src)
+}
+func (m *PlannedReparentShardRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *PlannedReparentShardRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_PlannedReparentShardRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PlannedReparentShardRequest proto.InternalMessageInfo
+
+func (m *PlannedReparentShardRequest) GetKeyspace() string {
+ if m != nil {
+ return m.Keyspace
+ }
+ return ""
+}
+
+func (m *PlannedReparentShardRequest) GetShard() string {
+ if m != nil {
+ return m.Shard
+ }
+ return ""
+}
+
+func (m *PlannedReparentShardRequest) GetNewPrimary() *topodata.TabletAlias {
+ if m != nil {
+ return m.NewPrimary
+ }
+ return nil
+}
+
+func (m *PlannedReparentShardRequest) GetAvoidPrimary() *topodata.TabletAlias {
+ if m != nil {
+ return m.AvoidPrimary
+ }
+ return nil
+}
+
+func (m *PlannedReparentShardRequest) GetWaitReplicasTimeout() *vttime.Duration {
+ if m != nil {
+ return m.WaitReplicasTimeout
+ }
+ return nil
+}
+
+type PlannedReparentShardResponse struct {
+ // Keyspace is the name of the keyspace the Planned Reparent took place in.
+ Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ // Shard is the name of the shard the Planned Reparent took place in.
+ Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"`
+ // PromotedPrimary is the alias of the tablet that was promoted to shard
+ // primary. If NewPrimary was set in the request, then this will be the same
+ // alias. Otherwise, it will be the alias of the tablet found to be most
+ // up-to-date.
+ PromotedPrimary *topodata.TabletAlias `protobuf:"bytes,3,opt,name=promoted_primary,json=promotedPrimary,proto3" json:"promoted_primary,omitempty"`
+ Events []*logutil.Event `protobuf:"bytes,4,rep,name=events,proto3" json:"events,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *PlannedReparentShardResponse) Reset() { *m = PlannedReparentShardResponse{} }
+func (m *PlannedReparentShardResponse) String() string { return proto.CompactTextString(m) }
+func (*PlannedReparentShardResponse) ProtoMessage() {}
+func (*PlannedReparentShardResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{54}
+}
+func (m *PlannedReparentShardResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *PlannedReparentShardResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_PlannedReparentShardResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *PlannedReparentShardResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_PlannedReparentShardResponse.Merge(m, src)
+}
+func (m *PlannedReparentShardResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *PlannedReparentShardResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_PlannedReparentShardResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_PlannedReparentShardResponse proto.InternalMessageInfo
+
+func (m *PlannedReparentShardResponse) GetKeyspace() string {
+ if m != nil {
+ return m.Keyspace
+ }
+ return ""
+}
+
+func (m *PlannedReparentShardResponse) GetShard() string {
+ if m != nil {
+ return m.Shard
+ }
+ return ""
+}
+
+func (m *PlannedReparentShardResponse) GetPromotedPrimary() *topodata.TabletAlias {
+ if m != nil {
+ return m.PromotedPrimary
+ }
+ return nil
+}
+
+func (m *PlannedReparentShardResponse) GetEvents() []*logutil.Event {
+ if m != nil {
+ return m.Events
+ }
+ return nil
+}
+
+type RemoveKeyspaceCellRequest struct {
+ Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ Cell string `protobuf:"bytes,2,opt,name=cell,proto3" json:"cell,omitempty"`
+ // Force proceeds even if the cell's topology server cannot be reached. This
+ // should only be set if a cell has been shut down entirely, and the global
+ // topology data just needs to be updated.
+ Force bool `protobuf:"varint,3,opt,name=force,proto3" json:"force,omitempty"`
+ // Recursive also deletes all tablets in that cell belonging to the specified
+ // keyspace.
+ Recursive bool `protobuf:"varint,4,opt,name=recursive,proto3" json:"recursive,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *RemoveKeyspaceCellRequest) Reset() { *m = RemoveKeyspaceCellRequest{} }
+func (m *RemoveKeyspaceCellRequest) String() string { return proto.CompactTextString(m) }
+func (*RemoveKeyspaceCellRequest) ProtoMessage() {}
+func (*RemoveKeyspaceCellRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{55}
+}
+func (m *RemoveKeyspaceCellRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *RemoveKeyspaceCellRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_RemoveKeyspaceCellRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *RemoveKeyspaceCellRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_RemoveKeyspaceCellRequest.Merge(m, src)
+}
+func (m *RemoveKeyspaceCellRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *RemoveKeyspaceCellRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_RemoveKeyspaceCellRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_RemoveKeyspaceCellRequest proto.InternalMessageInfo
+
+func (m *RemoveKeyspaceCellRequest) GetKeyspace() string {
+ if m != nil {
+ return m.Keyspace
+ }
+ return ""
+}
+
+func (m *RemoveKeyspaceCellRequest) GetCell() string {
+ if m != nil {
+ return m.Cell
+ }
+ return ""
+}
+
+func (m *RemoveKeyspaceCellRequest) GetForce() bool {
+ if m != nil {
+ return m.Force
+ }
+ return false
+}
+
+func (m *RemoveKeyspaceCellRequest) GetRecursive() bool {
+ if m != nil {
+ return m.Recursive
+ }
+ return false
+}
+
+type RemoveKeyspaceCellResponse struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *RemoveKeyspaceCellResponse) Reset() { *m = RemoveKeyspaceCellResponse{} }
+func (m *RemoveKeyspaceCellResponse) String() string { return proto.CompactTextString(m) }
+func (*RemoveKeyspaceCellResponse) ProtoMessage() {}
+func (*RemoveKeyspaceCellResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{56}
+}
+func (m *RemoveKeyspaceCellResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *RemoveKeyspaceCellResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_RemoveKeyspaceCellResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *RemoveKeyspaceCellResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_RemoveKeyspaceCellResponse.Merge(m, src)
+}
+func (m *RemoveKeyspaceCellResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *RemoveKeyspaceCellResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_RemoveKeyspaceCellResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_RemoveKeyspaceCellResponse proto.InternalMessageInfo
+
+type RemoveShardCellRequest struct {
+ Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ ShardName string `protobuf:"bytes,2,opt,name=shard_name,json=shardName,proto3" json:"shard_name,omitempty"`
+ Cell string `protobuf:"bytes,3,opt,name=cell,proto3" json:"cell,omitempty"`
+ // Force proceeds even if the cell's topology server cannot be reached. This
+ // should only be set if a cell has been shut down entirely, and the global
+ // topology data just needs to be updated.
+ Force bool `protobuf:"varint,4,opt,name=force,proto3" json:"force,omitempty"`
+ // Recursive also deletes all tablets in that cell belonging to the specified
+ // keyspace and shard.
+ Recursive bool `protobuf:"varint,5,opt,name=recursive,proto3" json:"recursive,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *RemoveShardCellRequest) Reset() { *m = RemoveShardCellRequest{} }
+func (m *RemoveShardCellRequest) String() string { return proto.CompactTextString(m) }
+func (*RemoveShardCellRequest) ProtoMessage() {}
+func (*RemoveShardCellRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{57}
+}
+func (m *RemoveShardCellRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *RemoveShardCellRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_RemoveShardCellRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *RemoveShardCellRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_RemoveShardCellRequest.Merge(m, src)
+}
+func (m *RemoveShardCellRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *RemoveShardCellRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_RemoveShardCellRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_RemoveShardCellRequest proto.InternalMessageInfo
+
+func (m *RemoveShardCellRequest) GetKeyspace() string {
+ if m != nil {
+ return m.Keyspace
+ }
+ return ""
+}
+
+func (m *RemoveShardCellRequest) GetShardName() string {
+ if m != nil {
+ return m.ShardName
+ }
+ return ""
+}
+
+func (m *RemoveShardCellRequest) GetCell() string {
+ if m != nil {
+ return m.Cell
+ }
+ return ""
+}
+
+func (m *RemoveShardCellRequest) GetForce() bool {
+ if m != nil {
+ return m.Force
+ }
+ return false
+}
+
+func (m *RemoveShardCellRequest) GetRecursive() bool {
+ if m != nil {
+ return m.Recursive
+ }
+ return false
+}
+
+type RemoveShardCellResponse struct {
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *RemoveShardCellResponse) Reset() { *m = RemoveShardCellResponse{} }
+func (m *RemoveShardCellResponse) String() string { return proto.CompactTextString(m) }
+func (*RemoveShardCellResponse) ProtoMessage() {}
+func (*RemoveShardCellResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{58}
+}
+func (m *RemoveShardCellResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *RemoveShardCellResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_RemoveShardCellResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *RemoveShardCellResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_RemoveShardCellResponse.Merge(m, src)
+}
+func (m *RemoveShardCellResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *RemoveShardCellResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_RemoveShardCellResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_RemoveShardCellResponse proto.InternalMessageInfo
+
+type ReparentTabletRequest struct {
+ // Tablet is the alias of the tablet that should be reparented under the
+ // current shard primary.
+ Tablet *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet,proto3" json:"tablet,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *ReparentTabletRequest) Reset() { *m = ReparentTabletRequest{} }
+func (m *ReparentTabletRequest) String() string { return proto.CompactTextString(m) }
+func (*ReparentTabletRequest) ProtoMessage() {}
+func (*ReparentTabletRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{59}
+}
+func (m *ReparentTabletRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *ReparentTabletRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_ReparentTabletRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *ReparentTabletRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ReparentTabletRequest.Merge(m, src)
+}
+func (m *ReparentTabletRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *ReparentTabletRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_ReparentTabletRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ReparentTabletRequest proto.InternalMessageInfo
+
+func (m *ReparentTabletRequest) GetTablet() *topodata.TabletAlias {
+ if m != nil {
+ return m.Tablet
+ }
+ return nil
+}
+
+type ReparentTabletResponse struct {
+ // Keyspace is the name of the keyspace the tablet was reparented in.
+ Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ // Shard is the name of the shard the tablet was reparented in.
+ Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"`
+ // Primary is the alias of the tablet that the tablet was reparented under.
+ Primary *topodata.TabletAlias `protobuf:"bytes,3,opt,name=primary,proto3" json:"primary,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *ReparentTabletResponse) Reset() { *m = ReparentTabletResponse{} }
+func (m *ReparentTabletResponse) String() string { return proto.CompactTextString(m) }
+func (*ReparentTabletResponse) ProtoMessage() {}
+func (*ReparentTabletResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{60}
+}
+func (m *ReparentTabletResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *ReparentTabletResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_ReparentTabletResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *ReparentTabletResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ReparentTabletResponse.Merge(m, src)
+}
+func (m *ReparentTabletResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *ReparentTabletResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_ReparentTabletResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ReparentTabletResponse proto.InternalMessageInfo
+
+func (m *ReparentTabletResponse) GetKeyspace() string {
+ if m != nil {
+ return m.Keyspace
+ }
+ return ""
+}
+
+func (m *ReparentTabletResponse) GetShard() string {
+ if m != nil {
+ return m.Shard
+ }
+ return ""
+}
+
+func (m *ReparentTabletResponse) GetPrimary() *topodata.TabletAlias {
+ if m != nil {
+ return m.Primary
+ }
+ return nil
+}
+
+type ShardReplicationPositionsRequest struct {
+ Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *ShardReplicationPositionsRequest) Reset() { *m = ShardReplicationPositionsRequest{} }
+func (m *ShardReplicationPositionsRequest) String() string { return proto.CompactTextString(m) }
+func (*ShardReplicationPositionsRequest) ProtoMessage() {}
+func (*ShardReplicationPositionsRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{61}
+}
+func (m *ShardReplicationPositionsRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *ShardReplicationPositionsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_ShardReplicationPositionsRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *ShardReplicationPositionsRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ShardReplicationPositionsRequest.Merge(m, src)
+}
+func (m *ShardReplicationPositionsRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *ShardReplicationPositionsRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_ShardReplicationPositionsRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ShardReplicationPositionsRequest proto.InternalMessageInfo
+
+func (m *ShardReplicationPositionsRequest) GetKeyspace() string {
+ if m != nil {
+ return m.Keyspace
+ }
+ return ""
+}
+
+func (m *ShardReplicationPositionsRequest) GetShard() string {
+ if m != nil {
+ return m.Shard
+ }
+ return ""
+}
+
+type ShardReplicationPositionsResponse struct {
+ // ReplicationStatuses is a mapping of tablet alias string to replication
+ // status for that tablet.
+ ReplicationStatuses map[string]*replicationdata.Status `protobuf:"bytes,1,rep,name=replication_statuses,json=replicationStatuses,proto3" json:"replication_statuses,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ // TabletMap is the set of tablets whose replication statuses were queried,
+ // keyed by tablet alias.
+ TabletMap map[string]*topodata.Tablet `protobuf:"bytes,2,rep,name=tablet_map,json=tabletMap,proto3" json:"tablet_map,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *ShardReplicationPositionsResponse) Reset() { *m = ShardReplicationPositionsResponse{} }
+func (m *ShardReplicationPositionsResponse) String() string { return proto.CompactTextString(m) }
+func (*ShardReplicationPositionsResponse) ProtoMessage() {}
+func (*ShardReplicationPositionsResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{62}
+}
+func (m *ShardReplicationPositionsResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *ShardReplicationPositionsResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_ShardReplicationPositionsResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *ShardReplicationPositionsResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_ShardReplicationPositionsResponse.Merge(m, src)
+}
+func (m *ShardReplicationPositionsResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *ShardReplicationPositionsResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_ShardReplicationPositionsResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_ShardReplicationPositionsResponse proto.InternalMessageInfo
+
+func (m *ShardReplicationPositionsResponse) GetReplicationStatuses() map[string]*replicationdata.Status {
+ if m != nil {
+ return m.ReplicationStatuses
+ }
+ return nil
+}
+
+func (m *ShardReplicationPositionsResponse) GetTabletMap() map[string]*topodata.Tablet {
+ if m != nil {
+ return m.TabletMap
+ }
+ return nil
+}
+
+type TabletExternallyReparentedRequest struct {
+ // Tablet is the alias of the tablet that was promoted externally and should
+ // be updated to the shard primary in the topo.
+ Tablet *topodata.TabletAlias `protobuf:"bytes,1,opt,name=tablet,proto3" json:"tablet,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *TabletExternallyReparentedRequest) Reset() { *m = TabletExternallyReparentedRequest{} }
+func (m *TabletExternallyReparentedRequest) String() string { return proto.CompactTextString(m) }
+func (*TabletExternallyReparentedRequest) ProtoMessage() {}
+func (*TabletExternallyReparentedRequest) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{63}
+}
+func (m *TabletExternallyReparentedRequest) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *TabletExternallyReparentedRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_TabletExternallyReparentedRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *TabletExternallyReparentedRequest) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_TabletExternallyReparentedRequest.Merge(m, src)
+}
+func (m *TabletExternallyReparentedRequest) XXX_Size() int {
+ return m.Size()
+}
+func (m *TabletExternallyReparentedRequest) XXX_DiscardUnknown() {
+ xxx_messageInfo_TabletExternallyReparentedRequest.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TabletExternallyReparentedRequest proto.InternalMessageInfo
+
+func (m *TabletExternallyReparentedRequest) GetTablet() *topodata.TabletAlias {
+ if m != nil {
+ return m.Tablet
+ }
+ return nil
+}
+
+type TabletExternallyReparentedResponse struct {
+ Keyspace string `protobuf:"bytes,1,opt,name=keyspace,proto3" json:"keyspace,omitempty"`
+ Shard string `protobuf:"bytes,2,opt,name=shard,proto3" json:"shard,omitempty"`
+ NewPrimary *topodata.TabletAlias `protobuf:"bytes,3,opt,name=new_primary,json=newPrimary,proto3" json:"new_primary,omitempty"`
+ OldPrimary *topodata.TabletAlias `protobuf:"bytes,4,opt,name=old_primary,json=oldPrimary,proto3" json:"old_primary,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *TabletExternallyReparentedResponse) Reset() { *m = TabletExternallyReparentedResponse{} }
+func (m *TabletExternallyReparentedResponse) String() string { return proto.CompactTextString(m) }
+func (*TabletExternallyReparentedResponse) ProtoMessage() {}
+func (*TabletExternallyReparentedResponse) Descriptor() ([]byte, []int) {
+ return fileDescriptor_f41247b323a1ab2e, []int{64}
+}
+func (m *TabletExternallyReparentedResponse) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *TabletExternallyReparentedResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_TabletExternallyReparentedResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *TabletExternallyReparentedResponse) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_TabletExternallyReparentedResponse.Merge(m, src)
+}
+func (m *TabletExternallyReparentedResponse) XXX_Size() int {
+ return m.Size()
+}
+func (m *TabletExternallyReparentedResponse) XXX_DiscardUnknown() {
+ xxx_messageInfo_TabletExternallyReparentedResponse.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_TabletExternallyReparentedResponse proto.InternalMessageInfo
+
+func (m *TabletExternallyReparentedResponse) GetKeyspace() string {
+ if m != nil {
+ return m.Keyspace
+ }
+ return ""
+}
+
+func (m *TabletExternallyReparentedResponse) GetShard() string {
+ if m != nil {
+ return m.Shard
+ }
+ return ""
+}
+
+func (m *TabletExternallyReparentedResponse) GetNewPrimary() *topodata.TabletAlias {
+ if m != nil {
+ return m.NewPrimary
+ }
+ return nil
+}
+
+func (m *TabletExternallyReparentedResponse) GetOldPrimary() *topodata.TabletAlias {
+ if m != nil {
+ return m.OldPrimary
+ }
+ return nil
+}
+
+func init() {
+ proto.RegisterType((*ExecuteVtctlCommandRequest)(nil), "vtctldata.ExecuteVtctlCommandRequest")
+ proto.RegisterType((*ExecuteVtctlCommandResponse)(nil), "vtctldata.ExecuteVtctlCommandResponse")
+ proto.RegisterType((*TableMaterializeSettings)(nil), "vtctldata.TableMaterializeSettings")
+ proto.RegisterType((*MaterializeSettings)(nil), "vtctldata.MaterializeSettings")
+ proto.RegisterType((*Keyspace)(nil), "vtctldata.Keyspace")
+ proto.RegisterType((*Shard)(nil), "vtctldata.Shard")
+ proto.RegisterType((*Workflow)(nil), "vtctldata.Workflow")
+ proto.RegisterMapType((map[string]*Workflow_ShardStream)(nil), "vtctldata.Workflow.ShardStreamsEntry")
+ proto.RegisterType((*Workflow_ReplicationLocation)(nil), "vtctldata.Workflow.ReplicationLocation")
+ proto.RegisterType((*Workflow_ShardStream)(nil), "vtctldata.Workflow.ShardStream")
+ proto.RegisterType((*Workflow_Stream)(nil), "vtctldata.Workflow.Stream")
+ proto.RegisterType((*Workflow_Stream_CopyState)(nil), "vtctldata.Workflow.Stream.CopyState")
+ proto.RegisterType((*ChangeTabletTypeRequest)(nil), "vtctldata.ChangeTabletTypeRequest")
+ proto.RegisterType((*ChangeTabletTypeResponse)(nil), "vtctldata.ChangeTabletTypeResponse")
+ proto.RegisterType((*CreateKeyspaceRequest)(nil), "vtctldata.CreateKeyspaceRequest")
+ proto.RegisterType((*CreateKeyspaceResponse)(nil), "vtctldata.CreateKeyspaceResponse")
+ proto.RegisterType((*CreateShardRequest)(nil), "vtctldata.CreateShardRequest")
+ proto.RegisterType((*CreateShardResponse)(nil), "vtctldata.CreateShardResponse")
+ proto.RegisterType((*DeleteKeyspaceRequest)(nil), "vtctldata.DeleteKeyspaceRequest")
+ proto.RegisterType((*DeleteKeyspaceResponse)(nil), "vtctldata.DeleteKeyspaceResponse")
+ proto.RegisterType((*DeleteShardsRequest)(nil), "vtctldata.DeleteShardsRequest")
+ proto.RegisterType((*DeleteShardsResponse)(nil), "vtctldata.DeleteShardsResponse")
+ proto.RegisterType((*DeleteTabletsRequest)(nil), "vtctldata.DeleteTabletsRequest")
+ proto.RegisterType((*DeleteTabletsResponse)(nil), "vtctldata.DeleteTabletsResponse")
+ proto.RegisterType((*EmergencyReparentShardRequest)(nil), "vtctldata.EmergencyReparentShardRequest")
+ proto.RegisterType((*EmergencyReparentShardResponse)(nil), "vtctldata.EmergencyReparentShardResponse")
+ proto.RegisterType((*FindAllShardsInKeyspaceRequest)(nil), "vtctldata.FindAllShardsInKeyspaceRequest")
+ proto.RegisterType((*FindAllShardsInKeyspaceResponse)(nil), "vtctldata.FindAllShardsInKeyspaceResponse")
+ proto.RegisterMapType((map[string]*Shard)(nil), "vtctldata.FindAllShardsInKeyspaceResponse.ShardsEntry")
+ proto.RegisterType((*GetBackupsRequest)(nil), "vtctldata.GetBackupsRequest")
+ proto.RegisterType((*GetBackupsResponse)(nil), "vtctldata.GetBackupsResponse")
+ proto.RegisterType((*GetCellInfoNamesRequest)(nil), "vtctldata.GetCellInfoNamesRequest")
+ proto.RegisterType((*GetCellInfoNamesResponse)(nil), "vtctldata.GetCellInfoNamesResponse")
+ proto.RegisterType((*GetCellInfoRequest)(nil), "vtctldata.GetCellInfoRequest")
+ proto.RegisterType((*GetCellInfoResponse)(nil), "vtctldata.GetCellInfoResponse")
+ proto.RegisterType((*GetCellsAliasesRequest)(nil), "vtctldata.GetCellsAliasesRequest")
+ proto.RegisterType((*GetCellsAliasesResponse)(nil), "vtctldata.GetCellsAliasesResponse")
+ proto.RegisterMapType((map[string]*topodata.CellsAlias)(nil), "vtctldata.GetCellsAliasesResponse.AliasesEntry")
+ proto.RegisterType((*GetKeyspacesRequest)(nil), "vtctldata.GetKeyspacesRequest")
+ proto.RegisterType((*GetKeyspacesResponse)(nil), "vtctldata.GetKeyspacesResponse")
+ proto.RegisterType((*GetKeyspaceRequest)(nil), "vtctldata.GetKeyspaceRequest")
+ proto.RegisterType((*GetKeyspaceResponse)(nil), "vtctldata.GetKeyspaceResponse")
+ proto.RegisterType((*GetSchemaRequest)(nil), "vtctldata.GetSchemaRequest")
+ proto.RegisterType((*GetSchemaResponse)(nil), "vtctldata.GetSchemaResponse")
+ proto.RegisterType((*GetShardRequest)(nil), "vtctldata.GetShardRequest")
+ proto.RegisterType((*GetShardResponse)(nil), "vtctldata.GetShardResponse")
+ proto.RegisterType((*GetSrvKeyspacesRequest)(nil), "vtctldata.GetSrvKeyspacesRequest")
+ proto.RegisterType((*GetSrvKeyspacesResponse)(nil), "vtctldata.GetSrvKeyspacesResponse")
+ proto.RegisterMapType((map[string]*topodata.SrvKeyspace)(nil), "vtctldata.GetSrvKeyspacesResponse.SrvKeyspacesEntry")
+ proto.RegisterType((*GetSrvVSchemaRequest)(nil), "vtctldata.GetSrvVSchemaRequest")
+ proto.RegisterType((*GetSrvVSchemaResponse)(nil), "vtctldata.GetSrvVSchemaResponse")
+ proto.RegisterType((*GetTabletRequest)(nil), "vtctldata.GetTabletRequest")
+ proto.RegisterType((*GetTabletResponse)(nil), "vtctldata.GetTabletResponse")
+ proto.RegisterType((*GetTabletsRequest)(nil), "vtctldata.GetTabletsRequest")
+ proto.RegisterType((*GetTabletsResponse)(nil), "vtctldata.GetTabletsResponse")
+ proto.RegisterType((*GetVSchemaRequest)(nil), "vtctldata.GetVSchemaRequest")
+ proto.RegisterType((*GetVSchemaResponse)(nil), "vtctldata.GetVSchemaResponse")
+ proto.RegisterType((*GetWorkflowsRequest)(nil), "vtctldata.GetWorkflowsRequest")
+ proto.RegisterType((*GetWorkflowsResponse)(nil), "vtctldata.GetWorkflowsResponse")
+ proto.RegisterType((*InitShardPrimaryRequest)(nil), "vtctldata.InitShardPrimaryRequest")
+ proto.RegisterType((*InitShardPrimaryResponse)(nil), "vtctldata.InitShardPrimaryResponse")
+ proto.RegisterType((*PlannedReparentShardRequest)(nil), "vtctldata.PlannedReparentShardRequest")
+ proto.RegisterType((*PlannedReparentShardResponse)(nil), "vtctldata.PlannedReparentShardResponse")
+ proto.RegisterType((*RemoveKeyspaceCellRequest)(nil), "vtctldata.RemoveKeyspaceCellRequest")
+ proto.RegisterType((*RemoveKeyspaceCellResponse)(nil), "vtctldata.RemoveKeyspaceCellResponse")
+ proto.RegisterType((*RemoveShardCellRequest)(nil), "vtctldata.RemoveShardCellRequest")
+ proto.RegisterType((*RemoveShardCellResponse)(nil), "vtctldata.RemoveShardCellResponse")
+ proto.RegisterType((*ReparentTabletRequest)(nil), "vtctldata.ReparentTabletRequest")
+ proto.RegisterType((*ReparentTabletResponse)(nil), "vtctldata.ReparentTabletResponse")
+ proto.RegisterType((*ShardReplicationPositionsRequest)(nil), "vtctldata.ShardReplicationPositionsRequest")
+ proto.RegisterType((*ShardReplicationPositionsResponse)(nil), "vtctldata.ShardReplicationPositionsResponse")
+ proto.RegisterMapType((map[string]*replicationdata.Status)(nil), "vtctldata.ShardReplicationPositionsResponse.ReplicationStatusesEntry")
+ proto.RegisterMapType((map[string]*topodata.Tablet)(nil), "vtctldata.ShardReplicationPositionsResponse.TabletMapEntry")
+ proto.RegisterType((*TabletExternallyReparentedRequest)(nil), "vtctldata.TabletExternallyReparentedRequest")
+ proto.RegisterType((*TabletExternallyReparentedResponse)(nil), "vtctldata.TabletExternallyReparentedResponse")
+}
+
+func init() { proto.RegisterFile("vtctldata.proto", fileDescriptor_f41247b323a1ab2e) }
+
+var fileDescriptor_f41247b323a1ab2e = []byte{
+ // 2731 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x1a, 0x4d, 0x6f, 0x1b, 0xc7,
+ 0xb5, 0xcb, 0x2f, 0x89, 0x8f, 0x1f, 0x92, 0x56, 0x94, 0xb4, 0x61, 0x6c, 0x59, 0x5e, 0xc7, 0x8e,
+ 0xea, 0xc4, 0x94, 0xad, 0x24, 0x86, 0xe1, 0x24, 0xad, 0x6d, 0x89, 0x32, 0xe4, 0x38, 0xaa, 0xba,
+ 0x54, 0x15, 0x34, 0x87, 0x6e, 0x47, 0xe4, 0x88, 0x5e, 0x68, 0xb9, 0xcb, 0xec, 0x0c, 0x29, 0x31,
+ 0x3d, 0xf4, 0xd2, 0x1e, 0x02, 0x14, 0xe8, 0xb5, 0x40, 0x50, 0xa0, 0xa7, 0xa2, 0xe8, 0xad, 0x97,
+ 0x00, 0x2d, 0x8a, 0x1e, 0x8b, 0x1e, 0x7a, 0xe8, 0xb5, 0xb7, 0xc2, 0xfd, 0x19, 0xbd, 0x14, 0xf3,
+ 0xb5, 0x5c, 0x2e, 0x97, 0xb4, 0x2c, 0x1b, 0x28, 0x7a, 0x12, 0xe7, 0xcd, 0x7b, 0xf3, 0xde, 0xbc,
+ 0xef, 0x37, 0x2b, 0x98, 0xeb, 0xd3, 0x26, 0x75, 0x5b, 0x88, 0xa2, 0x5a, 0x37, 0xf0, 0xa9, 0xaf,
+ 0xe7, 0x43, 0x40, 0x75, 0xfe, 0xc8, 0xf1, 0x5c, 0xbf, 0x3d, 0xdc, 0xac, 0x96, 0x5c, 0xbf, 0xdd,
+ 0xa3, 0x8e, 0x2b, 0x97, 0xe5, 0xce, 0x80, 0x7c, 0xe1, 0x36, 0xa9, 0x5a, 0x2f, 0x05, 0xb8, 0xeb,
+ 0x3a, 0x4d, 0x44, 0x1d, 0xdf, 0x8b, 0x50, 0xad, 0x50, 0x74, 0xe4, 0x62, 0xda, 0x41, 0x1e, 0x6a,
+ 0xe3, 0x20, 0xb2, 0x51, 0xa6, 0x7e, 0xd7, 0x8f, 0x1e, 0xdf, 0x27, 0xcd, 0x67, 0xb8, 0xa3, 0x96,
+ 0xc5, 0x3e, 0xa5, 0x4e, 0x07, 0x8b, 0x95, 0xf9, 0x19, 0x54, 0xeb, 0x67, 0xb8, 0xd9, 0xa3, 0xf8,
+ 0x90, 0x49, 0xb8, 0xe5, 0x77, 0x3a, 0xc8, 0x6b, 0x59, 0xf8, 0x8b, 0x1e, 0x26, 0x54, 0xd7, 0x21,
+ 0x83, 0x82, 0x36, 0x31, 0xb4, 0xb5, 0xf4, 0x7a, 0xde, 0xe2, 0xbf, 0xf5, 0xeb, 0x50, 0x46, 0x4d,
+ 0x26, 0x8b, 0xcd, 0x8e, 0xf1, 0x7b, 0xd4, 0x48, 0xad, 0x69, 0xeb, 0x69, 0xab, 0x24, 0xa0, 0x07,
+ 0x02, 0x68, 0x6e, 0xc1, 0x9b, 0x89, 0x07, 0x93, 0xae, 0xef, 0x11, 0xac, 0xbf, 0x05, 0x59, 0xdc,
+ 0xc7, 0x1e, 0x35, 0xb4, 0x35, 0x6d, 0xbd, 0xb0, 0x59, 0xae, 0x29, 0x1d, 0xd4, 0x19, 0xd4, 0x12,
+ 0x9b, 0xe6, 0x57, 0x1a, 0x18, 0x07, 0xec, 0x9a, 0x9f, 0x22, 0x8a, 0x03, 0x07, 0xb9, 0xce, 0x97,
+ 0xb8, 0x81, 0x29, 0x75, 0xbc, 0x36, 0xd1, 0xaf, 0x42, 0x91, 0xa2, 0xa0, 0x8d, 0xa9, 0xcd, 0x35,
+ 0xc1, 0x4f, 0xca, 0x5b, 0x05, 0x01, 0xe3, 0x54, 0xfa, 0x3b, 0xb0, 0x40, 0xfc, 0x5e, 0xd0, 0xc4,
+ 0x36, 0x3e, 0xeb, 0x06, 0x98, 0x10, 0xc7, 0xf7, 0xb8, 0xb8, 0x79, 0x6b, 0x5e, 0x6c, 0xd4, 0x43,
+ 0xb8, 0x7e, 0x19, 0xa0, 0x19, 0x60, 0x44, 0xb1, 0xdd, 0x6a, 0xb9, 0x46, 0x9a, 0x63, 0xe5, 0x05,
+ 0x64, 0xbb, 0xe5, 0x9a, 0xff, 0x4c, 0xc1, 0x62, 0x92, 0x18, 0x55, 0x98, 0x3d, 0xf5, 0x83, 0x93,
+ 0x63, 0xd7, 0x3f, 0x95, 0x22, 0x84, 0x6b, 0xfd, 0x6d, 0x98, 0x93, 0xfc, 0x4f, 0xf0, 0x80, 0x74,
+ 0x51, 0x13, 0x4b, 0xee, 0x65, 0x01, 0xfe, 0x44, 0x42, 0x19, 0xa2, 0xbc, 0x4b, 0x88, 0x28, 0x04,
+ 0x28, 0x0b, 0x70, 0x88, 0x78, 0x03, 0xe6, 0x08, 0xf5, 0xbb, 0x36, 0x3a, 0xa6, 0x38, 0xb0, 0x9b,
+ 0x7e, 0x77, 0x60, 0x64, 0xd6, 0xb4, 0xf5, 0x59, 0xab, 0xc4, 0xc0, 0x0f, 0x19, 0x74, 0xcb, 0xef,
+ 0x0e, 0xf4, 0x27, 0x50, 0xe6, 0x5a, 0xb1, 0x89, 0x94, 0xd3, 0xc8, 0xae, 0xa5, 0xd7, 0x0b, 0x9b,
+ 0xd7, 0x6a, 0x43, 0xd7, 0x9c, 0xa4, 0x59, 0xab, 0xc4, 0x49, 0xc3, 0x1b, 0xea, 0x90, 0x69, 0x62,
+ 0xd7, 0x35, 0x72, 0x5c, 0x22, 0xfe, 0x5b, 0x28, 0x9f, 0xf9, 0x9f, 0x4d, 0x07, 0x5d, 0x4c, 0x8c,
+ 0x19, 0xa5, 0x7c, 0x06, 0x3b, 0x60, 0x20, 0xfd, 0xdb, 0x30, 0x8f, 0xcf, 0x28, 0x0e, 0x3c, 0xe4,
+ 0xda, 0x4d, 0xb7, 0x47, 0x28, 0x0e, 0x8c, 0x59, 0x8e, 0x36, 0xa7, 0xe0, 0x5b, 0x02, 0x6c, 0xee,
+ 0xc1, 0x6c, 0x78, 0x43, 0x1d, 0x32, 0x1e, 0xea, 0x28, 0x73, 0xf2, 0xdf, 0x7a, 0x0d, 0x66, 0x47,
+ 0x14, 0x58, 0xd8, 0xd4, 0x6b, 0xa1, 0x97, 0x2b, 0x4a, 0x2b, 0xc4, 0x31, 0x7f, 0x04, 0xd9, 0xc6,
+ 0x33, 0x14, 0xb4, 0x98, 0x71, 0x42, 0x42, 0x69, 0x9c, 0x93, 0x38, 0xa3, 0x54, 0x84, 0xd1, 0x75,
+ 0xc8, 0x12, 0x46, 0xc8, 0xb5, 0x5f, 0xd8, 0x9c, 0x1b, 0x72, 0xe1, 0xe7, 0x59, 0x62, 0xd7, 0xfc,
+ 0x5d, 0x1e, 0x66, 0x3f, 0x53, 0x46, 0x4e, 0x12, 0xf8, 0xbb, 0x90, 0x13, 0x16, 0x96, 0xe2, 0xbe,
+ 0x1d, 0x51, 0xbb, 0x22, 0xac, 0x59, 0xc3, 0xb8, 0x7e, 0xea, 0x8b, 0xbf, 0x96, 0x24, 0x63, 0x07,
+ 0x08, 0xcb, 0x4b, 0x49, 0xce, 0x7f, 0x80, 0x20, 0xd3, 0xef, 0xc0, 0x52, 0x07, 0x9d, 0xd9, 0x7d,
+ 0x3b, 0x92, 0x3d, 0x6c, 0x17, 0xb5, 0xb9, 0xbb, 0xa4, 0x2d, 0xbd, 0x83, 0xce, 0x0e, 0xa3, 0xf4,
+ 0xa8, 0xad, 0x3f, 0x81, 0x12, 0xbf, 0x9e, 0x4d, 0x68, 0x80, 0x51, 0x47, 0xb9, 0xcc, 0xf5, 0x24,
+ 0xd6, 0x5c, 0x1d, 0x0d, 0x81, 0x57, 0xf7, 0x68, 0x30, 0xb0, 0x8a, 0x24, 0x02, 0xaa, 0xfe, 0x18,
+ 0x16, 0xc6, 0x50, 0xf4, 0x79, 0x48, 0x9f, 0xe0, 0x81, 0x54, 0x14, 0xfb, 0xa9, 0x7f, 0x00, 0xd9,
+ 0x3e, 0x72, 0x7b, 0x4a, 0x4d, 0x57, 0x5e, 0xc0, 0xca, 0x12, 0xd8, 0xf7, 0x53, 0xf7, 0xb4, 0xea,
+ 0x2e, 0x2c, 0x26, 0xdc, 0x7f, 0xaa, 0xc5, 0x97, 0x21, 0xc7, 0x85, 0x24, 0x46, 0x8a, 0x27, 0x34,
+ 0xb9, 0xaa, 0xfe, 0x51, 0x83, 0x42, 0x84, 0x8b, 0xfe, 0x3e, 0xcc, 0x28, 0x15, 0x68, 0x5c, 0x05,
+ 0xd5, 0x44, 0xb9, 0x84, 0x48, 0x0a, 0x55, 0xdf, 0x61, 0x31, 0xcc, 0x43, 0xa2, 0xe9, 0x7b, 0x34,
+ 0xf0, 0x5d, 0xc1, 0xa6, 0xb0, 0x79, 0x39, 0xe6, 0x45, 0x22, 0xf0, 0xe8, 0x96, 0xc0, 0xb2, 0x44,
+ 0xa0, 0xaa, 0x25, 0xd1, 0xdf, 0x05, 0xdd, 0x21, 0x76, 0x37, 0x70, 0x3a, 0x28, 0x18, 0xd8, 0x04,
+ 0x07, 0x7d, 0xc7, 0x6b, 0x73, 0x37, 0x98, 0xb5, 0xe6, 0x1d, 0xb2, 0x2f, 0x36, 0x1a, 0x02, 0x5e,
+ 0xfd, 0x75, 0x06, 0x72, 0x52, 0xec, 0x32, 0xa4, 0x9c, 0x16, 0xbf, 0x74, 0xda, 0x4a, 0x39, 0x2d,
+ 0xbd, 0xa2, 0x9c, 0x59, 0x78, 0xb8, 0x58, 0xe8, 0xb7, 0x98, 0x67, 0x31, 0x86, 0xd2, 0xb3, 0x96,
+ 0x86, 0xd2, 0x09, 0xb9, 0x1e, 0xba, 0x0e, 0x22, 0x96, 0x44, 0xd2, 0x3f, 0x86, 0x92, 0x28, 0x58,
+ 0xb6, 0x74, 0xe8, 0x0c, 0xa7, 0x32, 0x6a, 0x91, 0x32, 0xf6, 0x88, 0xff, 0x6c, 0xf0, 0x7d, 0xab,
+ 0x78, 0x14, 0x59, 0x31, 0x73, 0x74, 0x7d, 0xe2, 0x30, 0xd3, 0x18, 0x59, 0x61, 0x0e, 0xb5, 0xd6,
+ 0xaf, 0x01, 0x4f, 0x5a, 0x76, 0x88, 0x20, 0x12, 0x4c, 0x91, 0x01, 0xf7, 0x15, 0x12, 0xbb, 0x04,
+ 0x45, 0x14, 0xcb, 0x0c, 0x23, 0x16, 0xfa, 0x0a, 0xcc, 0xb4, 0x8e, 0x6c, 0x1e, 0x76, 0x22, 0xa5,
+ 0xe4, 0x5a, 0x47, 0x7b, 0x2c, 0xf0, 0x1e, 0xc2, 0x12, 0x0d, 0x90, 0x47, 0x22, 0x25, 0x8a, 0x50,
+ 0xd4, 0xe9, 0x1a, 0x79, 0x2e, 0x76, 0xb1, 0x26, 0xab, 0x1f, 0x2b, 0x53, 0x56, 0x25, 0x82, 0x7a,
+ 0xa0, 0x30, 0xf5, 0x0d, 0x28, 0x32, 0x14, 0xbb, 0xd7, 0x6d, 0x21, 0x8a, 0x5b, 0x06, 0x24, 0x50,
+ 0x16, 0xd8, 0xcf, 0x1f, 0x08, 0x04, 0xdd, 0x80, 0x99, 0x0e, 0x26, 0x04, 0xb5, 0xb1, 0x51, 0xe0,
+ 0xc2, 0xa8, 0xa5, 0x5e, 0x87, 0x02, 0x4b, 0xd1, 0x36, 0x17, 0x9a, 0x18, 0x45, 0xee, 0x0e, 0x6f,
+ 0x4d, 0x76, 0xa6, 0x1a, 0xcb, 0xdd, 0x0d, 0x86, 0x6c, 0x41, 0x53, 0xfd, 0x24, 0xd5, 0xfb, 0x90,
+ 0x0f, 0x37, 0x98, 0x42, 0xa2, 0xf5, 0x4e, 0x2c, 0x98, 0x42, 0x5c, 0x44, 0xa8, 0xdd, 0x3d, 0x91,
+ 0xd6, 0xce, 0xb1, 0xe5, 0xfe, 0x89, 0xf9, 0xb5, 0x06, 0x2b, 0x5b, 0xcf, 0x90, 0xd7, 0xc6, 0x07,
+ 0x61, 0x6e, 0x56, 0xe5, 0xfd, 0x5e, 0x98, 0xc4, 0x11, 0xb3, 0xb9, 0xac, 0xc5, 0x13, 0x1c, 0x42,
+ 0xe6, 0x76, 0xbe, 0xd0, 0x6f, 0x71, 0xfd, 0xb3, 0xd4, 0xcf, 0xd9, 0x95, 0x37, 0x2b, 0x71, 0x22,
+ 0xce, 0x27, 0xd7, 0x3a, 0x62, 0x7f, 0xb9, 0xb9, 0x82, 0x81, 0x1d, 0xf4, 0x3c, 0xe9, 0xc7, 0xb9,
+ 0x56, 0x30, 0xb0, 0x7a, 0x9e, 0xf9, 0x5b, 0x0d, 0x8c, 0x71, 0xe9, 0x64, 0x8f, 0xf0, 0x01, 0x94,
+ 0x8e, 0xf0, 0xb1, 0x1f, 0x60, 0x5b, 0x3a, 0xac, 0x90, 0x6f, 0x3e, 0xce, 0xca, 0x2a, 0x0a, 0x34,
+ 0xb1, 0xd2, 0xdf, 0x83, 0xa2, 0xa8, 0x8e, 0x92, 0x2a, 0x35, 0x81, 0xaa, 0xc0, 0xb1, 0x24, 0xd1,
+ 0x2a, 0x14, 0x4e, 0x11, 0xb1, 0x47, 0xa5, 0xcc, 0x9f, 0x22, 0xb2, 0x2d, 0x04, 0xfd, 0x26, 0x0d,
+ 0x4b, 0x5b, 0xbc, 0x17, 0x08, 0xcb, 0xcd, 0xb0, 0x47, 0x1a, 0x4b, 0xff, 0x15, 0xc8, 0x1e, 0xfb,
+ 0x2a, 0xfb, 0xcf, 0x5a, 0x62, 0xa1, 0x6f, 0x40, 0x05, 0xb9, 0xae, 0x7f, 0x6a, 0xe3, 0x4e, 0x97,
+ 0x0e, 0xec, 0xbe, 0x2d, 0xfa, 0x32, 0xc9, 0x6c, 0x81, 0xef, 0xd5, 0xd9, 0xd6, 0x61, 0x83, 0x6f,
+ 0xe8, 0xb7, 0xa1, 0xc2, 0x63, 0xd6, 0xf1, 0xda, 0x76, 0xd3, 0x77, 0x7b, 0x1d, 0x4f, 0xb8, 0x7c,
+ 0x86, 0xb3, 0xd2, 0xd5, 0xde, 0x16, 0xdf, 0xe2, 0xee, 0xff, 0x64, 0x9c, 0x82, 0x1b, 0x29, 0xcb,
+ 0x8d, 0x64, 0x8c, 0x17, 0xcd, 0xdd, 0x16, 0x57, 0x79, 0xec, 0x2c, 0x6e, 0xb4, 0x07, 0x50, 0x64,
+ 0xc9, 0x07, 0xb7, 0xec, 0xe3, 0xc0, 0xef, 0x10, 0x23, 0x17, 0x4f, 0x66, 0xea, 0x8c, 0x5a, 0x83,
+ 0xa3, 0xed, 0x04, 0x7e, 0xc7, 0x2a, 0x90, 0xf0, 0x37, 0xd1, 0x6f, 0x42, 0x86, 0x73, 0x9f, 0xe1,
+ 0xdc, 0x97, 0xc7, 0x29, 0x39, 0x6f, 0x8e, 0xc3, 0x92, 0xc1, 0x11, 0x22, 0x91, 0x46, 0x49, 0xc4,
+ 0x75, 0x91, 0x01, 0xc3, 0xde, 0xe0, 0x0e, 0x94, 0x88, 0x87, 0xba, 0xe4, 0x99, 0x4f, 0x79, 0x68,
+ 0x27, 0x46, 0x75, 0x51, 0xa1, 0xb0, 0x95, 0xb9, 0x0b, 0xcb, 0x71, 0xbb, 0x49, 0xf7, 0xda, 0x88,
+ 0x55, 0x8a, 0xc2, 0xe6, 0x62, 0x24, 0x32, 0x13, 0xba, 0x8a, 0x5f, 0x68, 0xa0, 0x8b, 0xb3, 0x44,
+ 0x33, 0x20, 0x1d, 0x60, 0x5a, 0xc5, 0xb9, 0x0c, 0x20, 0x4a, 0x6a, 0xa4, 0xd3, 0xc8, 0x73, 0xc8,
+ 0xde, 0x88, 0x9f, 0xa4, 0xa3, 0x7e, 0x72, 0x1d, 0xca, 0x8e, 0xd7, 0x74, 0x7b, 0x2d, 0x6c, 0x77,
+ 0x51, 0xc0, 0x9a, 0x64, 0xd9, 0xe2, 0x49, 0xe8, 0x3e, 0x07, 0x9a, 0xbf, 0xd1, 0x60, 0x71, 0x44,
+ 0x9c, 0x0b, 0xde, 0x4b, 0xbf, 0x11, 0xad, 0x13, 0x2c, 0x52, 0x86, 0xd8, 0xd1, 0xae, 0x27, 0x74,
+ 0x47, 0x1b, 0xb9, 0x01, 0x46, 0xad, 0x81, 0x8d, 0xcf, 0x1c, 0x42, 0x89, 0x14, 0x5e, 0xb8, 0xd0,
+ 0x43, 0xb1, 0x55, 0xe7, 0x3b, 0xe6, 0xf7, 0x61, 0x69, 0x1b, 0xbb, 0x78, 0x3c, 0x68, 0xa6, 0xe9,
+ 0xec, 0x12, 0xe4, 0x03, 0xdc, 0xec, 0x05, 0xc4, 0xe9, 0xab, 0x00, 0x1a, 0x02, 0x4c, 0x03, 0x96,
+ 0xe3, 0x47, 0x8a, 0x7b, 0x9b, 0x3f, 0xd7, 0x60, 0x51, 0x6c, 0x71, 0xa9, 0x89, 0xe2, 0xb5, 0x1e,
+ 0x56, 0x7d, 0x51, 0xcc, 0xc7, 0xef, 0x27, 0xf7, 0xa7, 0x73, 0x66, 0xad, 0x37, 0x9b, 0x4a, 0x6c,
+ 0xe7, 0x38, 0x2c, 0xca, 0xd2, 0x2e, 0x0c, 0xbc, 0x7b, 0x2c, 0x2b, 0xb2, 0xb9, 0x0c, 0x95, 0x51,
+ 0x31, 0xa4, 0x7c, 0x03, 0x05, 0x17, 0x29, 0x27, 0x94, 0xef, 0x23, 0xd9, 0xaa, 0xcb, 0x2c, 0x8c,
+ 0x95, 0x9c, 0x13, 0xf2, 0x70, 0x29, 0x92, 0x87, 0x31, 0x61, 0x71, 0x23, 0x92, 0x8a, 0x6c, 0x18,
+ 0xa4, 0xdc, 0x45, 0x0e, 0x94, 0xbd, 0x82, 0xb9, 0xa2, 0xec, 0x10, 0xb2, 0x96, 0x32, 0xfd, 0x32,
+ 0x05, 0x97, 0xeb, 0x1d, 0x1c, 0xb4, 0xb1, 0xd7, 0x1c, 0x58, 0x58, 0xb8, 0xdb, 0xb9, 0xbd, 0x3b,
+ 0xb9, 0xc1, 0xb8, 0x0b, 0x05, 0x0f, 0x0f, 0xe5, 0x99, 0xda, 0x65, 0x80, 0x87, 0x95, 0x90, 0xfa,
+ 0x77, 0x60, 0xce, 0x69, 0x7b, 0x2c, 0xdd, 0xcb, 0x96, 0x95, 0x18, 0x99, 0x69, 0x8a, 0x28, 0x0b,
+ 0x6c, 0xd9, 0x04, 0x12, 0x7d, 0x1b, 0x96, 0x4e, 0x91, 0x43, 0x43, 0xea, 0x70, 0x3e, 0xcd, 0x86,
+ 0x6e, 0xcd, 0x93, 0xc4, 0x76, 0x2f, 0x10, 0xad, 0xf2, 0x22, 0x43, 0x57, 0xe4, 0x6a, 0x6e, 0xfd,
+ 0xb3, 0x06, 0xab, 0x93, 0x34, 0x22, 0x03, 0xec, 0xe5, 0x55, 0xf2, 0x00, 0xe6, 0xbb, 0x81, 0xdf,
+ 0xf1, 0x29, 0x6e, 0x9d, 0x4f, 0x2f, 0x73, 0x0a, 0x5d, 0x29, 0xe7, 0x06, 0xe4, 0xf8, 0x48, 0xac,
+ 0x74, 0x12, 0x1f, 0x98, 0xe5, 0xae, 0xf9, 0x11, 0xac, 0xee, 0x38, 0x5e, 0xeb, 0xa1, 0xeb, 0x0a,
+ 0xef, 0xdb, 0xf5, 0x5e, 0x22, 0xf4, 0xcc, 0xbf, 0x68, 0x70, 0x65, 0x22, 0xb9, 0xbc, 0xfd, 0x5e,
+ 0x2c, 0x9c, 0xee, 0x46, 0xc2, 0xe9, 0x05, 0xb4, 0x22, 0xdc, 0xe4, 0xbc, 0xa0, 0x9a, 0xef, 0x4f,
+ 0x64, 0xef, 0x3d, 0x71, 0x46, 0xb8, 0x31, 0x3a, 0x23, 0x24, 0xa4, 0xa7, 0x70, 0x28, 0x30, 0xeb,
+ 0xb0, 0xf0, 0x18, 0xd3, 0x47, 0xa8, 0x79, 0xd2, 0xeb, 0x92, 0x0b, 0xbb, 0xb0, 0xb9, 0x0d, 0x7a,
+ 0xf4, 0x18, 0x79, 0xf3, 0x1a, 0xcc, 0x1c, 0x09, 0x90, 0xbc, 0x7a, 0xa5, 0x16, 0x3e, 0xd5, 0x08,
+ 0xdc, 0x5d, 0xef, 0xd8, 0xb7, 0x14, 0x92, 0xf9, 0x06, 0xac, 0x3c, 0xc6, 0x74, 0x0b, 0xbb, 0x2e,
+ 0x83, 0xb3, 0x84, 0xaf, 0x44, 0x32, 0x6f, 0x83, 0x31, 0xbe, 0x25, 0xd9, 0x54, 0x20, 0xcb, 0xaa,
+ 0x85, 0x7a, 0x75, 0x11, 0x0b, 0x73, 0x9d, 0x8b, 0xa4, 0x28, 0x22, 0xcd, 0x07, 0x1f, 0xcd, 0xb5,
+ 0xe1, 0x68, 0x6e, 0xee, 0xc0, 0xe2, 0x08, 0x66, 0x58, 0x16, 0xf2, 0x6c, 0xdb, 0x76, 0xbc, 0x63,
+ 0x5f, 0xd6, 0x85, 0xc8, 0x10, 0x1d, 0xa2, 0xcf, 0x36, 0xe5, 0x2f, 0x96, 0x69, 0xe5, 0x39, 0x44,
+ 0x26, 0x1b, 0x25, 0xfd, 0x37, 0x5a, 0x78, 0xb3, 0xe1, 0x96, 0x64, 0xb3, 0x0b, 0x33, 0xa3, 0x69,
+ 0x6c, 0x23, 0x62, 0xaf, 0x09, 0x44, 0x35, 0xb9, 0x16, 0x8e, 0xa1, 0xe8, 0xab, 0xfb, 0x50, 0x8c,
+ 0x6e, 0x24, 0xb8, 0xc6, 0xcd, 0x51, 0xd7, 0xa8, 0x8c, 0xde, 0x47, 0xb0, 0x89, 0xba, 0xc7, 0x12,
+ 0x57, 0x8d, 0x72, 0xcb, 0xf0, 0x3e, 0xbb, 0x50, 0x19, 0x05, 0xcb, 0xbb, 0xdc, 0x81, 0xbc, 0x72,
+ 0x14, 0x75, 0x9b, 0xc4, 0x52, 0x3a, 0xc4, 0x32, 0x6f, 0x73, 0x33, 0xbd, 0x4c, 0xcc, 0xed, 0x8c,
+ 0xc8, 0x74, 0xf1, 0xee, 0xe4, 0x67, 0x29, 0x98, 0x7f, 0x8c, 0xa9, 0x68, 0x1d, 0x5f, 0xbd, 0xc3,
+ 0x5f, 0x96, 0x63, 0x62, 0x38, 0x2b, 0x8b, 0x15, 0x6b, 0x4e, 0xf0, 0x99, 0x68, 0x4e, 0xe4, 0x7e,
+ 0x9a, 0xef, 0x97, 0x24, 0xf4, 0x40, 0xa0, 0x5d, 0x03, 0xd5, 0xad, 0xd8, 0x7d, 0x07, 0x9f, 0x12,
+ 0x59, 0x2a, 0x8b, 0x12, 0x78, 0xc8, 0x60, 0xfa, 0x3a, 0xcc, 0x8b, 0x47, 0x2a, 0xee, 0xe2, 0xb6,
+ 0xef, 0xb9, 0x03, 0x9e, 0xac, 0x67, 0xe5, 0x4c, 0xcc, 0xe3, 0xe2, 0x7b, 0x9e, 0x3b, 0x18, 0x62,
+ 0x12, 0xe7, 0x4b, 0x85, 0x99, 0x8b, 0x60, 0x36, 0x18, 0x98, 0x61, 0x9a, 0xfb, 0x3c, 0x03, 0x28,
+ 0x2d, 0x48, 0x65, 0x7e, 0x08, 0x39, 0xd9, 0x6b, 0x0b, 0x05, 0x5c, 0xab, 0x8d, 0x3f, 0x9e, 0x0a,
+ 0x92, 0x6d, 0x7c, 0xec, 0x78, 0x8e, 0x7c, 0x8a, 0xe1, 0x10, 0xf3, 0x29, 0xcc, 0xb1, 0x13, 0x5f,
+ 0x4f, 0xcb, 0x67, 0xde, 0x17, 0x56, 0x1a, 0x29, 0x28, 0x61, 0x03, 0xa6, 0x4d, 0x6d, 0xc0, 0xcc,
+ 0x27, 0x3c, 0x22, 0x1b, 0x41, 0x3f, 0xee, 0xc1, 0x2f, 0x4a, 0x71, 0x2c, 0xa6, 0x95, 0x21, 0xc5,
+ 0xc2, 0xfc, 0xbb, 0x88, 0xe1, 0xd1, 0xc3, 0xa4, 0x3c, 0x3f, 0x84, 0x12, 0x09, 0xfa, 0x76, 0xdc,
+ 0xf7, 0xdf, 0x1f, 0x8d, 0xe4, 0x24, 0xd2, 0x5a, 0x14, 0xa8, 0xde, 0x85, 0x22, 0xa0, 0xea, 0x21,
+ 0x2c, 0x8c, 0xa1, 0x24, 0x04, 0xf6, 0x3b, 0xa3, 0x81, 0x1d, 0x71, 0xd8, 0x08, 0x75, 0x34, 0xb2,
+ 0x6f, 0xf2, 0x10, 0x6e, 0x04, 0xfd, 0xc3, 0xd1, 0x00, 0x48, 0x4a, 0x90, 0x7b, 0xb0, 0x14, 0xc3,
+ 0x0d, 0x07, 0x4e, 0x26, 0xec, 0x70, 0x30, 0x0b, 0xe3, 0x4e, 0x3e, 0xa0, 0x47, 0x48, 0x80, 0x84,
+ 0xbf, 0xcd, 0xa7, 0xdc, 0xa4, 0x72, 0xaa, 0x7c, 0xd5, 0xc0, 0x33, 0x3f, 0xe6, 0x0e, 0xac, 0x4e,
+ 0x93, 0x92, 0xad, 0x87, 0x8f, 0x36, 0x93, 0x66, 0x60, 0xb9, 0x6f, 0xfe, 0x41, 0x8b, 0xd0, 0x5f,
+ 0xbc, 0x04, 0x0e, 0xbd, 0x26, 0x1d, 0xf1, 0x1a, 0xfe, 0x82, 0x46, 0x03, 0xa7, 0xa9, 0x46, 0x12,
+ 0xb9, 0x4a, 0xe8, 0x61, 0xb3, 0xe7, 0xef, 0x61, 0xcd, 0x07, 0x3c, 0x69, 0xc6, 0x7a, 0x53, 0xfd,
+ 0x26, 0xcc, 0x08, 0xb4, 0x61, 0xe3, 0x1e, 0xbf, 0xb4, 0x42, 0x30, 0x37, 0xf8, 0xa5, 0x63, 0xb6,
+ 0x9f, 0x96, 0x75, 0x1f, 0x71, 0x96, 0x71, 0x07, 0x78, 0x17, 0x66, 0x63, 0xc6, 0x5f, 0x08, 0x8d,
+ 0x1f, 0x7a, 0xdd, 0x4c, 0x5f, 0xda, 0xdd, 0xe2, 0x99, 0x5b, 0x3d, 0xe1, 0x9c, 0x4b, 0xd7, 0x57,
+ 0xa0, 0x80, 0x9a, 0xd4, 0xe9, 0x63, 0x91, 0xc2, 0x44, 0xaf, 0x0e, 0x02, 0xc4, 0xd3, 0x97, 0x28,
+ 0x45, 0x91, 0x33, 0x87, 0xa5, 0x48, 0x7d, 0x55, 0x48, 0x2a, 0x45, 0x8a, 0xc0, 0x1a, 0x62, 0x99,
+ 0xff, 0xd1, 0x60, 0x65, 0xd7, 0x73, 0x44, 0xae, 0x91, 0x7d, 0xe4, 0xc5, 0xfd, 0xc1, 0x82, 0xaa,
+ 0x7a, 0x92, 0xc4, 0x2e, 0x6e, 0xca, 0x8f, 0x2e, 0xca, 0xbd, 0xa7, 0x36, 0xb3, 0x2b, 0x92, 0xb0,
+ 0xce, 0xe8, 0x22, 0x1b, 0xc3, 0xf1, 0x37, 0x13, 0x1d, 0x7f, 0x5f, 0x4f, 0x1f, 0xff, 0x08, 0x8c,
+ 0xf1, 0xcb, 0x87, 0xf9, 0x56, 0x35, 0xd3, 0xda, 0xd4, 0x66, 0xfa, 0xab, 0x14, 0xbc, 0xb9, 0xef,
+ 0x22, 0xcf, 0xc3, 0xad, 0xff, 0xf1, 0x6c, 0x74, 0x1f, 0x4a, 0xa8, 0xef, 0x3b, 0xc3, 0xe9, 0x21,
+ 0x33, 0x8d, 0xb2, 0xc8, 0x71, 0x15, 0xed, 0xeb, 0xd1, 0xe7, 0x9f, 0x34, 0xb8, 0x94, 0xac, 0x8b,
+ 0xff, 0x83, 0xa9, 0xe8, 0xa7, 0xf0, 0x86, 0x85, 0x3b, 0x7e, 0x3f, 0x7c, 0x34, 0x60, 0xed, 0xe1,
+ 0x79, 0xac, 0xa8, 0xca, 0x47, 0x2a, 0xf2, 0xe9, 0x2b, 0xf9, 0xd1, 0x66, 0xe4, 0xed, 0x20, 0x13,
+ 0x7f, 0xb5, 0xb8, 0x04, 0xd5, 0x24, 0x01, 0xe4, 0x14, 0xfe, 0xb5, 0x06, 0xcb, 0x62, 0x9b, 0xab,
+ 0xf4, 0xbc, 0xc2, 0xbd, 0xe0, 0x71, 0x49, 0xc9, 0x9e, 0x4e, 0x92, 0x3d, 0x33, 0x51, 0xf6, 0x6c,
+ 0x5c, 0xf6, 0x37, 0x60, 0x65, 0x4c, 0x38, 0x29, 0xf8, 0x0e, 0x2c, 0x29, 0x67, 0x18, 0x2d, 0x7f,
+ 0xb7, 0x62, 0xf5, 0x6a, 0xfa, 0x47, 0x06, 0xf3, 0x27, 0xec, 0xfe, 0xa3, 0xe7, 0x5c, 0xd8, 0xab,
+ 0x36, 0x60, 0xe6, 0x5c, 0xce, 0xa4, 0xb0, 0xcc, 0x03, 0x58, 0x93, 0x9e, 0x1c, 0x7e, 0x4d, 0x52,
+ 0x5f, 0x1f, 0x5e, 0x61, 0x84, 0xfc, 0x7d, 0x1a, 0xae, 0x4e, 0x39, 0x56, 0x5e, 0xef, 0x0c, 0x2a,
+ 0xd1, 0xef, 0x73, 0x84, 0x22, 0xda, 0x1b, 0x8e, 0x4e, 0xf5, 0xb1, 0x46, 0x70, 0xca, 0x59, 0xd1,
+ 0xaf, 0x81, 0x0d, 0x79, 0x8e, 0xe8, 0xc0, 0x16, 0x83, 0xf1, 0x1d, 0xfd, 0x73, 0x00, 0x99, 0xc1,
+ 0x3b, 0xa8, 0x2b, 0x3f, 0x54, 0x7d, 0xf8, 0x52, 0xfc, 0x84, 0x32, 0x3f, 0x45, 0x5d, 0xc1, 0x25,
+ 0x4f, 0xd5, 0xba, 0x6a, 0x83, 0x31, 0x49, 0x98, 0x84, 0x5e, 0xef, 0xd6, 0x68, 0xaf, 0xb7, 0x52,
+ 0x8b, 0xff, 0xbf, 0x83, 0x38, 0x20, 0xfa, 0xed, 0x6f, 0x0f, 0xca, 0xa3, 0xdc, 0xcf, 0xf3, 0x6c,
+ 0x10, 0x6f, 0x1e, 0x22, 0xdd, 0xa3, 0x05, 0x57, 0x05, 0xb0, 0x2e, 0x3f, 0x4c, 0xbb, 0xe1, 0xd3,
+ 0x0f, 0x6e, 0x5d, 0xd0, 0xa7, 0xff, 0xaa, 0x81, 0x39, 0xed, 0xd0, 0x0b, 0x3b, 0xf8, 0x45, 0x6b,
+ 0xc8, 0x5d, 0x28, 0xf8, 0xee, 0x39, 0x2b, 0x08, 0xf8, 0xae, 0x4a, 0xb2, 0x8f, 0xee, 0xfd, 0xed,
+ 0xf9, 0xaa, 0xf6, 0x8f, 0xe7, 0xab, 0xda, 0xbf, 0x9e, 0xaf, 0x6a, 0xbf, 0xfa, 0xf7, 0xea, 0xb7,
+ 0x3e, 0xbf, 0xd1, 0x77, 0x28, 0x26, 0xa4, 0xe6, 0xf8, 0x1b, 0xe2, 0xd7, 0x46, 0xdb, 0xdf, 0xe8,
+ 0xd3, 0x0d, 0xfe, 0x2f, 0x25, 0x1b, 0xa1, 0x0f, 0x1d, 0xe5, 0x38, 0xe0, 0xbd, 0xff, 0x06, 0x00,
+ 0x00, 0xff, 0xff, 0xda, 0xbd, 0xf5, 0x12, 0x0f, 0x23, 0x00, 0x00,
+}
+
+func (m *ExecuteVtctlCommandRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExecuteVtctlCommandRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ExecuteVtctlCommandRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.ActionTimeout != 0 {
+ i = encodeVarintVtctldata(dAtA, i, uint64(m.ActionTimeout))
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.Args) > 0 {
+ for iNdEx := len(m.Args) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Args[iNdEx])
+ copy(dAtA[i:], m.Args[iNdEx])
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Args[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ExecuteVtctlCommandResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExecuteVtctlCommandResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ExecuteVtctlCommandResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Event != nil {
+ {
+ size, err := m.Event.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *TableMaterializeSettings) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *TableMaterializeSettings) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *TableMaterializeSettings) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.CreateDdl) > 0 {
+ i -= len(m.CreateDdl)
+ copy(dAtA[i:], m.CreateDdl)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.CreateDdl)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.SourceExpression) > 0 {
+ i -= len(m.SourceExpression)
+ copy(dAtA[i:], m.SourceExpression)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.SourceExpression)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.TargetTable) > 0 {
+ i -= len(m.TargetTable)
+ copy(dAtA[i:], m.TargetTable)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.TargetTable)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *MaterializeSettings) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *MaterializeSettings) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *MaterializeSettings) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.ExternalCluster) > 0 {
+ i -= len(m.ExternalCluster)
+ copy(dAtA[i:], m.ExternalCluster)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.ExternalCluster)))
+ i--
+ dAtA[i] = 0x42
+ }
+ if len(m.TabletTypes) > 0 {
+ i -= len(m.TabletTypes)
+ copy(dAtA[i:], m.TabletTypes)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.TabletTypes)))
+ i--
+ dAtA[i] = 0x3a
+ }
+ if len(m.Cell) > 0 {
+ i -= len(m.Cell)
+ copy(dAtA[i:], m.Cell)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Cell)))
+ i--
+ dAtA[i] = 0x32
+ }
+ if len(m.TableSettings) > 0 {
+ for iNdEx := len(m.TableSettings) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.TableSettings[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x2a
+ }
+ }
+ if m.StopAfterCopy {
+ i--
+ if m.StopAfterCopy {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x20
+ }
+ if len(m.TargetKeyspace) > 0 {
+ i -= len(m.TargetKeyspace)
+ copy(dAtA[i:], m.TargetKeyspace)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.TargetKeyspace)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.SourceKeyspace) > 0 {
+ i -= len(m.SourceKeyspace)
+ copy(dAtA[i:], m.SourceKeyspace)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.SourceKeyspace)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Workflow) > 0 {
+ i -= len(m.Workflow)
+ copy(dAtA[i:], m.Workflow)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Workflow)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Keyspace) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Keyspace) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Keyspace) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Keyspace != nil {
+ {
+ size, err := m.Keyspace.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Shard) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Shard) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Shard) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Shard != nil {
+ {
+ size, err := m.Shard.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Workflow) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Workflow) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Workflow) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.ShardStreams) > 0 {
+ for k := range m.ShardStreams {
+ v := m.ShardStreams[k]
+ baseI := i
+ if v != nil {
+ {
+ size, err := v.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintVtctldata(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x2a
+ }
+ }
+ if m.MaxVReplicationLag != 0 {
+ i = encodeVarintVtctldata(dAtA, i, uint64(m.MaxVReplicationLag))
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.Target != nil {
+ {
+ size, err := m.Target.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.Source != nil {
+ {
+ size, err := m.Source.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Workflow_ReplicationLocation) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Workflow_ReplicationLocation) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Workflow_ReplicationLocation) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Shards) > 0 {
+ for iNdEx := len(m.Shards) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Shards[iNdEx])
+ copy(dAtA[i:], m.Shards[iNdEx])
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Shards[iNdEx])))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Workflow_ShardStream) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Workflow_ShardStream) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Workflow_ShardStream) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.IsPrimaryServing {
+ i--
+ if m.IsPrimaryServing {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x18
+ }
+ if len(m.TabletControls) > 0 {
+ for iNdEx := len(m.TabletControls) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.TabletControls[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Streams) > 0 {
+ for iNdEx := len(m.Streams) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Streams[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Workflow_Stream) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Workflow_Stream) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Workflow_Stream) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.CopyStates) > 0 {
+ for iNdEx := len(m.CopyStates) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.CopyStates[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x62
+ }
+ }
+ if len(m.Message) > 0 {
+ i -= len(m.Message)
+ copy(dAtA[i:], m.Message)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Message)))
+ i--
+ dAtA[i] = 0x5a
+ }
+ if m.TimeUpdated != nil {
+ {
+ size, err := m.TimeUpdated.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x52
+ }
+ if m.TransactionTimestamp != nil {
+ {
+ size, err := m.TransactionTimestamp.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x4a
+ }
+ if len(m.DbName) > 0 {
+ i -= len(m.DbName)
+ copy(dAtA[i:], m.DbName)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.DbName)))
+ i--
+ dAtA[i] = 0x42
+ }
+ if len(m.State) > 0 {
+ i -= len(m.State)
+ copy(dAtA[i:], m.State)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.State)))
+ i--
+ dAtA[i] = 0x3a
+ }
+ if len(m.StopPosition) > 0 {
+ i -= len(m.StopPosition)
+ copy(dAtA[i:], m.StopPosition)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.StopPosition)))
+ i--
+ dAtA[i] = 0x32
+ }
+ if len(m.Position) > 0 {
+ i -= len(m.Position)
+ copy(dAtA[i:], m.Position)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Position)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if m.BinlogSource != nil {
+ {
+ size, err := m.BinlogSource.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.Tablet != nil {
+ {
+ size, err := m.Tablet.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Shard) > 0 {
+ i -= len(m.Shard)
+ copy(dAtA[i:], m.Shard)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Shard)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Id != 0 {
+ i = encodeVarintVtctldata(dAtA, i, uint64(m.Id))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Workflow_Stream_CopyState) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Workflow_Stream_CopyState) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Workflow_Stream_CopyState) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.LastPk) > 0 {
+ i -= len(m.LastPk)
+ copy(dAtA[i:], m.LastPk)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.LastPk)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Table) > 0 {
+ i -= len(m.Table)
+ copy(dAtA[i:], m.Table)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Table)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ChangeTabletTypeRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ChangeTabletTypeRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ChangeTabletTypeRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.DryRun {
+ i--
+ if m.DryRun {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.DbType != 0 {
+ i = encodeVarintVtctldata(dAtA, i, uint64(m.DbType))
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.TabletAlias != nil {
+ {
+ size, err := m.TabletAlias.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ChangeTabletTypeResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ChangeTabletTypeResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ChangeTabletTypeResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.WasDryRun {
+ i--
+ if m.WasDryRun {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.AfterTablet != nil {
+ {
+ size, err := m.AfterTablet.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.BeforeTablet != nil {
+ {
+ size, err := m.BeforeTablet.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *CreateKeyspaceRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *CreateKeyspaceRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *CreateKeyspaceRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.SnapshotTime != nil {
+ {
+ size, err := m.SnapshotTime.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x4a
+ }
+ if len(m.BaseKeyspace) > 0 {
+ i -= len(m.BaseKeyspace)
+ copy(dAtA[i:], m.BaseKeyspace)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.BaseKeyspace)))
+ i--
+ dAtA[i] = 0x42
+ }
+ if m.Type != 0 {
+ i = encodeVarintVtctldata(dAtA, i, uint64(m.Type))
+ i--
+ dAtA[i] = 0x38
+ }
+ if len(m.ServedFroms) > 0 {
+ for iNdEx := len(m.ServedFroms) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.ServedFroms[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x32
+ }
+ }
+ if m.ShardingColumnType != 0 {
+ i = encodeVarintVtctldata(dAtA, i, uint64(m.ShardingColumnType))
+ i--
+ dAtA[i] = 0x28
+ }
+ if len(m.ShardingColumnName) > 0 {
+ i -= len(m.ShardingColumnName)
+ copy(dAtA[i:], m.ShardingColumnName)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.ShardingColumnName)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.AllowEmptyVSchema {
+ i--
+ if m.AllowEmptyVSchema {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.Force {
+ i--
+ if m.Force {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *CreateKeyspaceResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *CreateKeyspaceResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *CreateKeyspaceResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Keyspace != nil {
+ {
+ size, err := m.Keyspace.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *CreateShardRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *CreateShardRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *CreateShardRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.IncludeParent {
+ i--
+ if m.IncludeParent {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.Force {
+ i--
+ if m.Force {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x18
+ }
+ if len(m.ShardName) > 0 {
+ i -= len(m.ShardName)
+ copy(dAtA[i:], m.ShardName)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.ShardName)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *CreateShardResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *CreateShardResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *CreateShardResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.ShardAlreadyExists {
+ i--
+ if m.ShardAlreadyExists {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.Shard != nil {
+ {
+ size, err := m.Shard.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Keyspace != nil {
+ {
+ size, err := m.Keyspace.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *DeleteKeyspaceRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *DeleteKeyspaceRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *DeleteKeyspaceRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Recursive {
+ i--
+ if m.Recursive {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *DeleteKeyspaceResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *DeleteKeyspaceResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *DeleteKeyspaceResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *DeleteShardsRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *DeleteShardsRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *DeleteShardsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.EvenIfServing {
+ i--
+ if m.EvenIfServing {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.Recursive {
+ i--
+ if m.Recursive {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.Shards) > 0 {
+ for iNdEx := len(m.Shards) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Shards[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *DeleteShardsResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *DeleteShardsResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *DeleteShardsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *DeleteTabletsRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *DeleteTabletsRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *DeleteTabletsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.AllowPrimary {
+ i--
+ if m.AllowPrimary {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.TabletAliases) > 0 {
+ for iNdEx := len(m.TabletAliases) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.TabletAliases[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *DeleteTabletsResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *DeleteTabletsResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *DeleteTabletsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *EmergencyReparentShardRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *EmergencyReparentShardRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *EmergencyReparentShardRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.WaitReplicasTimeout != nil {
+ {
+ size, err := m.WaitReplicasTimeout.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x2a
+ }
+ if len(m.IgnoreReplicas) > 0 {
+ for iNdEx := len(m.IgnoreReplicas) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.IgnoreReplicas[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if m.NewPrimary != nil {
+ {
+ size, err := m.NewPrimary.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Shard) > 0 {
+ i -= len(m.Shard)
+ copy(dAtA[i:], m.Shard)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Shard)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *EmergencyReparentShardResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *EmergencyReparentShardResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *EmergencyReparentShardResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Events) > 0 {
+ for iNdEx := len(m.Events) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Events[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if m.PromotedPrimary != nil {
+ {
+ size, err := m.PromotedPrimary.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Shard) > 0 {
+ i -= len(m.Shard)
+ copy(dAtA[i:], m.Shard)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Shard)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *FindAllShardsInKeyspaceRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *FindAllShardsInKeyspaceRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *FindAllShardsInKeyspaceRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *FindAllShardsInKeyspaceResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *FindAllShardsInKeyspaceResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *FindAllShardsInKeyspaceResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Shards) > 0 {
+ for k := range m.Shards {
+ v := m.Shards[k]
+ baseI := i
+ if v != nil {
+ {
+ size, err := v.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintVtctldata(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetBackupsRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetBackupsRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetBackupsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Shard) > 0 {
+ i -= len(m.Shard)
+ copy(dAtA[i:], m.Shard)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Shard)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetBackupsResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetBackupsResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetBackupsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Backups) > 0 {
+ for iNdEx := len(m.Backups) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Backups[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetCellInfoNamesRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetCellInfoNamesRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetCellInfoNamesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetCellInfoNamesResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetCellInfoNamesResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetCellInfoNamesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Names) > 0 {
+ for iNdEx := len(m.Names) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Names[iNdEx])
+ copy(dAtA[i:], m.Names[iNdEx])
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Names[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetCellInfoRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetCellInfoRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetCellInfoRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Cell) > 0 {
+ i -= len(m.Cell)
+ copy(dAtA[i:], m.Cell)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Cell)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetCellInfoResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetCellInfoResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetCellInfoResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.CellInfo != nil {
+ {
+ size, err := m.CellInfo.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetCellsAliasesRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetCellsAliasesRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetCellsAliasesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetCellsAliasesResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetCellsAliasesResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetCellsAliasesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Aliases) > 0 {
+ for k := range m.Aliases {
+ v := m.Aliases[k]
+ baseI := i
+ if v != nil {
+ {
+ size, err := v.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintVtctldata(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetKeyspacesRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetKeyspacesRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetKeyspacesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetKeyspacesResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetKeyspacesResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetKeyspacesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Keyspaces) > 0 {
+ for iNdEx := len(m.Keyspaces) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Keyspaces[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetKeyspaceRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetKeyspaceRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetKeyspaceRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetKeyspaceResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetKeyspaceResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetKeyspaceResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Keyspace != nil {
+ {
+ size, err := m.Keyspace.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetSchemaRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetSchemaRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetSchemaRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.TableSizesOnly {
+ i--
+ if m.TableSizesOnly {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x30
+ }
+ if m.TableNamesOnly {
+ i--
+ if m.TableNamesOnly {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x28
+ }
+ if m.IncludeViews {
+ i--
+ if m.IncludeViews {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x20
+ }
+ if len(m.ExcludeTables) > 0 {
+ for iNdEx := len(m.ExcludeTables) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.ExcludeTables[iNdEx])
+ copy(dAtA[i:], m.ExcludeTables[iNdEx])
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.ExcludeTables[iNdEx])))
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if len(m.Tables) > 0 {
+ for iNdEx := len(m.Tables) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Tables[iNdEx])
+ copy(dAtA[i:], m.Tables[iNdEx])
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Tables[iNdEx])))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if m.TabletAlias != nil {
+ {
+ size, err := m.TabletAlias.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetSchemaResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetSchemaResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetSchemaResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Schema != nil {
+ {
+ size, err := m.Schema.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetShardRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetShardRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetShardRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.ShardName) > 0 {
+ i -= len(m.ShardName)
+ copy(dAtA[i:], m.ShardName)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.ShardName)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetShardResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetShardResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetShardResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Shard != nil {
+ {
+ size, err := m.Shard.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetSrvKeyspacesRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetSrvKeyspacesRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetSrvKeyspacesRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Cells) > 0 {
+ for iNdEx := len(m.Cells) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Cells[iNdEx])
+ copy(dAtA[i:], m.Cells[iNdEx])
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Cells[iNdEx])))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetSrvKeyspacesResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetSrvKeyspacesResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetSrvKeyspacesResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.SrvKeyspaces) > 0 {
+ for k := range m.SrvKeyspaces {
+ v := m.SrvKeyspaces[k]
+ baseI := i
+ if v != nil {
+ {
+ size, err := v.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintVtctldata(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetSrvVSchemaRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetSrvVSchemaRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetSrvVSchemaRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Cell) > 0 {
+ i -= len(m.Cell)
+ copy(dAtA[i:], m.Cell)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Cell)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetSrvVSchemaResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetSrvVSchemaResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetSrvVSchemaResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.SrvVSchema != nil {
+ {
+ size, err := m.SrvVSchema.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetTabletRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetTabletRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetTabletRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.TabletAlias != nil {
+ {
+ size, err := m.TabletAlias.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetTabletResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetTabletResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetTabletResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Tablet != nil {
+ {
+ size, err := m.Tablet.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetTabletsRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetTabletsRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetTabletsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.TabletAliases) > 0 {
+ for iNdEx := len(m.TabletAliases) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.TabletAliases[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x2a
+ }
+ }
+ if m.Strict {
+ i--
+ if m.Strict {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x20
+ }
+ if len(m.Cells) > 0 {
+ for iNdEx := len(m.Cells) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Cells[iNdEx])
+ copy(dAtA[i:], m.Cells[iNdEx])
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Cells[iNdEx])))
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if len(m.Shard) > 0 {
+ i -= len(m.Shard)
+ copy(dAtA[i:], m.Shard)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Shard)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetTabletsResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetTabletsResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetTabletsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Tablets) > 0 {
+ for iNdEx := len(m.Tablets) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Tablets[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetVSchemaRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetVSchemaRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetVSchemaRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetVSchemaResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetVSchemaResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetVSchemaResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.VSchema != nil {
+ {
+ size, err := m.VSchema.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetWorkflowsRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetWorkflowsRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetWorkflowsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.ActiveOnly {
+ i--
+ if m.ActiveOnly {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *GetWorkflowsResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *GetWorkflowsResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *GetWorkflowsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Workflows) > 0 {
+ for iNdEx := len(m.Workflows) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Workflows[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *InitShardPrimaryRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *InitShardPrimaryRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *InitShardPrimaryRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.WaitReplicasTimeout != nil {
+ {
+ size, err := m.WaitReplicasTimeout.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x2a
+ }
+ if m.Force {
+ i--
+ if m.Force {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.PrimaryElectTabletAlias != nil {
+ {
+ size, err := m.PrimaryElectTabletAlias.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Shard) > 0 {
+ i -= len(m.Shard)
+ copy(dAtA[i:], m.Shard)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Shard)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *InitShardPrimaryResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *InitShardPrimaryResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *InitShardPrimaryResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Events) > 0 {
+ for iNdEx := len(m.Events) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Events[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *PlannedReparentShardRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PlannedReparentShardRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *PlannedReparentShardRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.WaitReplicasTimeout != nil {
+ {
+ size, err := m.WaitReplicasTimeout.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x2a
+ }
+ if m.AvoidPrimary != nil {
+ {
+ size, err := m.AvoidPrimary.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.NewPrimary != nil {
+ {
+ size, err := m.NewPrimary.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Shard) > 0 {
+ i -= len(m.Shard)
+ copy(dAtA[i:], m.Shard)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Shard)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *PlannedReparentShardResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *PlannedReparentShardResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *PlannedReparentShardResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Events) > 0 {
+ for iNdEx := len(m.Events) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Events[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ }
+ if m.PromotedPrimary != nil {
+ {
+ size, err := m.PromotedPrimary.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Shard) > 0 {
+ i -= len(m.Shard)
+ copy(dAtA[i:], m.Shard)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Shard)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RemoveKeyspaceCellRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RemoveKeyspaceCellRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RemoveKeyspaceCellRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Recursive {
+ i--
+ if m.Recursive {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.Force {
+ i--
+ if m.Force {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x18
+ }
+ if len(m.Cell) > 0 {
+ i -= len(m.Cell)
+ copy(dAtA[i:], m.Cell)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Cell)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RemoveKeyspaceCellResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RemoveKeyspaceCellResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RemoveKeyspaceCellResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RemoveShardCellRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RemoveShardCellRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RemoveShardCellRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Recursive {
+ i--
+ if m.Recursive {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x28
+ }
+ if m.Force {
+ i--
+ if m.Force {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x20
+ }
+ if len(m.Cell) > 0 {
+ i -= len(m.Cell)
+ copy(dAtA[i:], m.Cell)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Cell)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.ShardName) > 0 {
+ i -= len(m.ShardName)
+ copy(dAtA[i:], m.ShardName)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.ShardName)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RemoveShardCellResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RemoveShardCellResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RemoveShardCellResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ReparentTabletRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ReparentTabletRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ReparentTabletRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Tablet != nil {
+ {
+ size, err := m.Tablet.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ReparentTabletResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ReparentTabletResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ReparentTabletResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Primary != nil {
+ {
+ size, err := m.Primary.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Shard) > 0 {
+ i -= len(m.Shard)
+ copy(dAtA[i:], m.Shard)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Shard)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ShardReplicationPositionsRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ShardReplicationPositionsRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ShardReplicationPositionsRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Shard) > 0 {
+ i -= len(m.Shard)
+ copy(dAtA[i:], m.Shard)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Shard)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ShardReplicationPositionsResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ShardReplicationPositionsResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ShardReplicationPositionsResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.TabletMap) > 0 {
+ for k := range m.TabletMap {
+ v := m.TabletMap[k]
+ baseI := i
+ if v != nil {
+ {
+ size, err := v.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintVtctldata(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.ReplicationStatuses) > 0 {
+ for k := range m.ReplicationStatuses {
+ v := m.ReplicationStatuses[k]
+ baseI := i
+ if v != nil {
+ {
+ size, err := v.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintVtctldata(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *TabletExternallyReparentedRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *TabletExternallyReparentedRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *TabletExternallyReparentedRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Tablet != nil {
+ {
+ size, err := m.Tablet.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *TabletExternallyReparentedResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *TabletExternallyReparentedResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *TabletExternallyReparentedResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.OldPrimary != nil {
+ {
+ size, err := m.OldPrimary.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.NewPrimary != nil {
+ {
+ size, err := m.NewPrimary.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtctldata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Shard) > 0 {
+ i -= len(m.Shard)
+ copy(dAtA[i:], m.Shard)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Shard)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Keyspace) > 0 {
+ i -= len(m.Keyspace)
+ copy(dAtA[i:], m.Keyspace)
+ i = encodeVarintVtctldata(dAtA, i, uint64(len(m.Keyspace)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func encodeVarintVtctldata(dAtA []byte, offset int, v uint64) int {
+ offset -= sovVtctldata(v)
+ base := offset
+ for v >= 1<<7 {
+ dAtA[offset] = uint8(v&0x7f | 0x80)
+ v >>= 7
+ offset++
+ }
+ dAtA[offset] = uint8(v)
+ return base
+}
+func (m *ExecuteVtctlCommandRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Args) > 0 {
+ for _, s := range m.Args {
+ l = len(s)
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ }
+ if m.ActionTimeout != 0 {
+ n += 1 + sovVtctldata(uint64(m.ActionTimeout))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ExecuteVtctlCommandResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Event != nil {
+ l = m.Event.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *TableMaterializeSettings) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.TargetTable)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.SourceExpression)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.CreateDdl)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *MaterializeSettings) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Workflow)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.SourceKeyspace)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.TargetKeyspace)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.StopAfterCopy {
+ n += 2
+ }
+ if len(m.TableSettings) > 0 {
+ for _, e := range m.TableSettings {
+ l = e.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ }
+ l = len(m.Cell)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.TabletTypes)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.ExternalCluster)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Keyspace) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.Keyspace != nil {
+ l = m.Keyspace.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Shard) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.Shard != nil {
+ l = m.Shard.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Workflow) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.Source != nil {
+ l = m.Source.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.Target != nil {
+ l = m.Target.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.MaxVReplicationLag != 0 {
+ n += 1 + sovVtctldata(uint64(m.MaxVReplicationLag))
+ }
+ if len(m.ShardStreams) > 0 {
+ for k, v := range m.ShardStreams {
+ _ = k
+ _ = v
+ l = 0
+ if v != nil {
+ l = v.Size()
+ l += 1 + sovVtctldata(uint64(l))
+ }
+ mapEntrySize := 1 + len(k) + sovVtctldata(uint64(len(k))) + l
+ n += mapEntrySize + 1 + sovVtctldata(uint64(mapEntrySize))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Workflow_ReplicationLocation) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if len(m.Shards) > 0 {
+ for _, s := range m.Shards {
+ l = len(s)
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Workflow_ShardStream) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Streams) > 0 {
+ for _, e := range m.Streams {
+ l = e.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ }
+ if len(m.TabletControls) > 0 {
+ for _, e := range m.TabletControls {
+ l = e.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ }
+ if m.IsPrimaryServing {
+ n += 2
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Workflow_Stream) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Id != 0 {
+ n += 1 + sovVtctldata(uint64(m.Id))
+ }
+ l = len(m.Shard)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.Tablet != nil {
+ l = m.Tablet.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.BinlogSource != nil {
+ l = m.BinlogSource.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.Position)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.StopPosition)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.State)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.DbName)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.TransactionTimestamp != nil {
+ l = m.TransactionTimestamp.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.TimeUpdated != nil {
+ l = m.TimeUpdated.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.Message)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if len(m.CopyStates) > 0 {
+ for _, e := range m.CopyStates {
+ l = e.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Workflow_Stream_CopyState) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Table)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.LastPk)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ChangeTabletTypeRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.TabletAlias != nil {
+ l = m.TabletAlias.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.DbType != 0 {
+ n += 1 + sovVtctldata(uint64(m.DbType))
+ }
+ if m.DryRun {
+ n += 2
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ChangeTabletTypeResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.BeforeTablet != nil {
+ l = m.BeforeTablet.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.AfterTablet != nil {
+ l = m.AfterTablet.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.WasDryRun {
+ n += 2
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *CreateKeyspaceRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.Force {
+ n += 2
+ }
+ if m.AllowEmptyVSchema {
+ n += 2
+ }
+ l = len(m.ShardingColumnName)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.ShardingColumnType != 0 {
+ n += 1 + sovVtctldata(uint64(m.ShardingColumnType))
+ }
+ if len(m.ServedFroms) > 0 {
+ for _, e := range m.ServedFroms {
+ l = e.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ }
+ if m.Type != 0 {
+ n += 1 + sovVtctldata(uint64(m.Type))
+ }
+ l = len(m.BaseKeyspace)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.SnapshotTime != nil {
+ l = m.SnapshotTime.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *CreateKeyspaceResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Keyspace != nil {
+ l = m.Keyspace.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *CreateShardRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.ShardName)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.Force {
+ n += 2
+ }
+ if m.IncludeParent {
+ n += 2
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *CreateShardResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Keyspace != nil {
+ l = m.Keyspace.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.Shard != nil {
+ l = m.Shard.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.ShardAlreadyExists {
+ n += 2
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *DeleteKeyspaceRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.Recursive {
+ n += 2
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *DeleteKeyspaceResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *DeleteShardsRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Shards) > 0 {
+ for _, e := range m.Shards {
+ l = e.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ }
+ if m.Recursive {
+ n += 2
+ }
+ if m.EvenIfServing {
+ n += 2
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *DeleteShardsResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *DeleteTabletsRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.TabletAliases) > 0 {
+ for _, e := range m.TabletAliases {
+ l = e.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ }
+ if m.AllowPrimary {
+ n += 2
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *DeleteTabletsResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *EmergencyReparentShardRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.Shard)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.NewPrimary != nil {
+ l = m.NewPrimary.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if len(m.IgnoreReplicas) > 0 {
+ for _, e := range m.IgnoreReplicas {
+ l = e.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ }
+ if m.WaitReplicasTimeout != nil {
+ l = m.WaitReplicasTimeout.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *EmergencyReparentShardResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.Shard)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.PromotedPrimary != nil {
+ l = m.PromotedPrimary.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if len(m.Events) > 0 {
+ for _, e := range m.Events {
+ l = e.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *FindAllShardsInKeyspaceRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *FindAllShardsInKeyspaceResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Shards) > 0 {
+ for k, v := range m.Shards {
+ _ = k
+ _ = v
+ l = 0
+ if v != nil {
+ l = v.Size()
+ l += 1 + sovVtctldata(uint64(l))
+ }
+ mapEntrySize := 1 + len(k) + sovVtctldata(uint64(len(k))) + l
+ n += mapEntrySize + 1 + sovVtctldata(uint64(mapEntrySize))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetBackupsRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.Shard)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetBackupsResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Backups) > 0 {
+ for _, e := range m.Backups {
+ l = e.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetCellInfoNamesRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetCellInfoNamesResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Names) > 0 {
+ for _, s := range m.Names {
+ l = len(s)
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetCellInfoRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Cell)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetCellInfoResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.CellInfo != nil {
+ l = m.CellInfo.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetCellsAliasesRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetCellsAliasesResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Aliases) > 0 {
+ for k, v := range m.Aliases {
+ _ = k
+ _ = v
+ l = 0
+ if v != nil {
+ l = v.Size()
+ l += 1 + sovVtctldata(uint64(l))
+ }
+ mapEntrySize := 1 + len(k) + sovVtctldata(uint64(len(k))) + l
+ n += mapEntrySize + 1 + sovVtctldata(uint64(mapEntrySize))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetKeyspacesRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetKeyspacesResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Keyspaces) > 0 {
+ for _, e := range m.Keyspaces {
+ l = e.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetKeyspaceRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetKeyspaceResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Keyspace != nil {
+ l = m.Keyspace.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetSchemaRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.TabletAlias != nil {
+ l = m.TabletAlias.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if len(m.Tables) > 0 {
+ for _, s := range m.Tables {
+ l = len(s)
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ }
+ if len(m.ExcludeTables) > 0 {
+ for _, s := range m.ExcludeTables {
+ l = len(s)
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ }
+ if m.IncludeViews {
+ n += 2
+ }
+ if m.TableNamesOnly {
+ n += 2
+ }
+ if m.TableSizesOnly {
+ n += 2
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetSchemaResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Schema != nil {
+ l = m.Schema.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetShardRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.ShardName)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetShardResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Shard != nil {
+ l = m.Shard.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetSrvKeyspacesRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if len(m.Cells) > 0 {
+ for _, s := range m.Cells {
+ l = len(s)
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetSrvKeyspacesResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.SrvKeyspaces) > 0 {
+ for k, v := range m.SrvKeyspaces {
+ _ = k
+ _ = v
+ l = 0
+ if v != nil {
+ l = v.Size()
+ l += 1 + sovVtctldata(uint64(l))
+ }
+ mapEntrySize := 1 + len(k) + sovVtctldata(uint64(len(k))) + l
+ n += mapEntrySize + 1 + sovVtctldata(uint64(mapEntrySize))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetSrvVSchemaRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Cell)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetSrvVSchemaResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.SrvVSchema != nil {
+ l = m.SrvVSchema.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetTabletRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.TabletAlias != nil {
+ l = m.TabletAlias.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetTabletResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Tablet != nil {
+ l = m.Tablet.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetTabletsRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.Shard)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if len(m.Cells) > 0 {
+ for _, s := range m.Cells {
+ l = len(s)
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ }
+ if m.Strict {
+ n += 2
+ }
+ if len(m.TabletAliases) > 0 {
+ for _, e := range m.TabletAliases {
+ l = e.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetTabletsResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Tablets) > 0 {
+ for _, e := range m.Tablets {
+ l = e.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetVSchemaRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetVSchemaResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.VSchema != nil {
+ l = m.VSchema.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetWorkflowsRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.ActiveOnly {
+ n += 2
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *GetWorkflowsResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Workflows) > 0 {
+ for _, e := range m.Workflows {
+ l = e.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *InitShardPrimaryRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.Shard)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.PrimaryElectTabletAlias != nil {
+ l = m.PrimaryElectTabletAlias.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.Force {
+ n += 2
+ }
+ if m.WaitReplicasTimeout != nil {
+ l = m.WaitReplicasTimeout.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *InitShardPrimaryResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Events) > 0 {
+ for _, e := range m.Events {
+ l = e.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *PlannedReparentShardRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.Shard)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.NewPrimary != nil {
+ l = m.NewPrimary.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.AvoidPrimary != nil {
+ l = m.AvoidPrimary.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.WaitReplicasTimeout != nil {
+ l = m.WaitReplicasTimeout.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *PlannedReparentShardResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.Shard)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.PromotedPrimary != nil {
+ l = m.PromotedPrimary.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if len(m.Events) > 0 {
+ for _, e := range m.Events {
+ l = e.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RemoveKeyspaceCellRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.Cell)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.Force {
+ n += 2
+ }
+ if m.Recursive {
+ n += 2
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RemoveKeyspaceCellResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RemoveShardCellRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.ShardName)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.Cell)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.Force {
+ n += 2
+ }
+ if m.Recursive {
+ n += 2
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RemoveShardCellResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ReparentTabletRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Tablet != nil {
+ l = m.Tablet.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ReparentTabletResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.Shard)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.Primary != nil {
+ l = m.Primary.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ShardReplicationPositionsRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.Shard)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ShardReplicationPositionsResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.ReplicationStatuses) > 0 {
+ for k, v := range m.ReplicationStatuses {
+ _ = k
+ _ = v
+ l = 0
+ if v != nil {
+ l = v.Size()
+ l += 1 + sovVtctldata(uint64(l))
+ }
+ mapEntrySize := 1 + len(k) + sovVtctldata(uint64(len(k))) + l
+ n += mapEntrySize + 1 + sovVtctldata(uint64(mapEntrySize))
+ }
+ }
+ if len(m.TabletMap) > 0 {
+ for k, v := range m.TabletMap {
+ _ = k
+ _ = v
+ l = 0
+ if v != nil {
+ l = v.Size()
+ l += 1 + sovVtctldata(uint64(l))
+ }
+ mapEntrySize := 1 + len(k) + sovVtctldata(uint64(len(k))) + l
+ n += mapEntrySize + 1 + sovVtctldata(uint64(mapEntrySize))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *TabletExternallyReparentedRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Tablet != nil {
+ l = m.Tablet.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *TabletExternallyReparentedResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Keyspace)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ l = len(m.Shard)
+ if l > 0 {
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.NewPrimary != nil {
+ l = m.NewPrimary.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.OldPrimary != nil {
+ l = m.OldPrimary.Size()
+ n += 1 + l + sovVtctldata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func sovVtctldata(x uint64) (n int) {
+ return (math_bits.Len64(x|1) + 6) / 7
+}
+func sozVtctldata(x uint64) (n int) {
+ return sovVtctldata(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+}
+func (m *ExecuteVtctlCommandRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExecuteVtctlCommandRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExecuteVtctlCommandRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Args", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Args = append(m.Args, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ActionTimeout", wireType)
+ }
+ m.ActionTimeout = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.ActionTimeout |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ExecuteVtctlCommandResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExecuteVtctlCommandResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExecuteVtctlCommandResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Event", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Event == nil {
+ m.Event = &logutil.Event{}
+ }
+ if err := m.Event.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *TableMaterializeSettings) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: TableMaterializeSettings: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: TableMaterializeSettings: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TargetTable", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.TargetTable = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SourceExpression", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.SourceExpression = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CreateDdl", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.CreateDdl = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *MaterializeSettings) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: MaterializeSettings: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: MaterializeSettings: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Workflow", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Workflow = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SourceKeyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.SourceKeyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TargetKeyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.TargetKeyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field StopAfterCopy", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.StopAfterCopy = bool(v != 0)
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TableSettings", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.TableSettings = append(m.TableSettings, &TableMaterializeSettings{})
+ if err := m.TableSettings[len(m.TableSettings)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cell", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Cell = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletTypes", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.TabletTypes = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 8:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ExternalCluster", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ExternalCluster = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Keyspace) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Keyspace: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Keyspace: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Keyspace == nil {
+ m.Keyspace = &topodata.Keyspace{}
+ }
+ if err := m.Keyspace.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Shard) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Shard: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Shard: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Shard", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Shard == nil {
+ m.Shard = &topodata.Shard{}
+ }
+ if err := m.Shard.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Workflow) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Workflow: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Workflow: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Source", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Source == nil {
+ m.Source = &Workflow_ReplicationLocation{}
+ }
+ if err := m.Source.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &Workflow_ReplicationLocation{}
+ }
+ if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MaxVReplicationLag", wireType)
+ }
+ m.MaxVReplicationLag = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.MaxVReplicationLag |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ShardStreams", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ShardStreams == nil {
+ m.ShardStreams = make(map[string]*Workflow_ShardStream)
+ }
+ var mapkey string
+ var mapvalue *Workflow_ShardStream
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var mapmsglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ mapmsglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if mapmsglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postmsgIndex := iNdEx + mapmsglen
+ if postmsgIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postmsgIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = &Workflow_ShardStream{}
+ if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
+ return err
+ }
+ iNdEx = postmsgIndex
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.ShardStreams[mapkey] = mapvalue
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Workflow_ReplicationLocation) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ReplicationLocation: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ReplicationLocation: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Shards", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Shards = append(m.Shards, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Workflow_ShardStream) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ShardStream: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ShardStream: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Streams", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Streams = append(m.Streams, &Workflow_Stream{})
+ if err := m.Streams[len(m.Streams)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletControls", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.TabletControls = append(m.TabletControls, &topodata.Shard_TabletControl{})
+ if err := m.TabletControls[len(m.TabletControls)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field IsPrimaryServing", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.IsPrimaryServing = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Workflow_Stream) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Stream: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Stream: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
+ }
+ m.Id = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Id |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Shard", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Shard = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Tablet", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Tablet == nil {
+ m.Tablet = &topodata.TabletAlias{}
+ }
+ if err := m.Tablet.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field BinlogSource", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.BinlogSource == nil {
+ m.BinlogSource = &binlogdata.BinlogSource{}
+ }
+ if err := m.BinlogSource.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Position", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Position = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field StopPosition", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.StopPosition = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field State", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.State = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 8:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field DbName", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.DbName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 9:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TransactionTimestamp", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.TransactionTimestamp == nil {
+ m.TransactionTimestamp = &vttime.Time{}
+ }
+ if err := m.TransactionTimestamp.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 10:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TimeUpdated", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.TimeUpdated == nil {
+ m.TimeUpdated = &vttime.Time{}
+ }
+ if err := m.TimeUpdated.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 11:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Message = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 12:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CopyStates", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.CopyStates = append(m.CopyStates, &Workflow_Stream_CopyState{})
+ if err := m.CopyStates[len(m.CopyStates)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Workflow_Stream_CopyState) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: CopyState: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: CopyState: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Table", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Table = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LastPk", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.LastPk = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ChangeTabletTypeRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ChangeTabletTypeRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ChangeTabletTypeRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletAlias", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.TabletAlias == nil {
+ m.TabletAlias = &topodata.TabletAlias{}
+ }
+ if err := m.TabletAlias.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field DbType", wireType)
+ }
+ m.DbType = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.DbType |= topodata.TabletType(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field DryRun", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.DryRun = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ChangeTabletTypeResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ChangeTabletTypeResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ChangeTabletTypeResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field BeforeTablet", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.BeforeTablet == nil {
+ m.BeforeTablet = &topodata.Tablet{}
+ }
+ if err := m.BeforeTablet.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field AfterTablet", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.AfterTablet == nil {
+ m.AfterTablet = &topodata.Tablet{}
+ }
+ if err := m.AfterTablet.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field WasDryRun", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.WasDryRun = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *CreateKeyspaceRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: CreateKeyspaceRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: CreateKeyspaceRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Force", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Force = bool(v != 0)
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field AllowEmptyVSchema", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.AllowEmptyVSchema = bool(v != 0)
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ShardingColumnName", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ShardingColumnName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 5:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ShardingColumnType", wireType)
+ }
+ m.ShardingColumnType = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.ShardingColumnType |= topodata.KeyspaceIdType(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ServedFroms", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ServedFroms = append(m.ServedFroms, &topodata.Keyspace_ServedFrom{})
+ if err := m.ServedFroms[len(m.ServedFroms)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 7:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Type", wireType)
+ }
+ m.Type = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Type |= topodata.KeyspaceType(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 8:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field BaseKeyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.BaseKeyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 9:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SnapshotTime", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.SnapshotTime == nil {
+ m.SnapshotTime = &vttime.Time{}
+ }
+ if err := m.SnapshotTime.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *CreateKeyspaceResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: CreateKeyspaceResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: CreateKeyspaceResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Keyspace == nil {
+ m.Keyspace = &Keyspace{}
+ }
+ if err := m.Keyspace.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *CreateShardRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: CreateShardRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: CreateShardRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ShardName", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ShardName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Force", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Force = bool(v != 0)
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field IncludeParent", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.IncludeParent = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *CreateShardResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: CreateShardResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: CreateShardResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Keyspace == nil {
+ m.Keyspace = &Keyspace{}
+ }
+ if err := m.Keyspace.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Shard", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Shard == nil {
+ m.Shard = &Shard{}
+ }
+ if err := m.Shard.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ShardAlreadyExists", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.ShardAlreadyExists = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *DeleteKeyspaceRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: DeleteKeyspaceRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: DeleteKeyspaceRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Recursive", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Recursive = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *DeleteKeyspaceResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: DeleteKeyspaceResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: DeleteKeyspaceResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *DeleteShardsRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: DeleteShardsRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: DeleteShardsRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Shards", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Shards = append(m.Shards, &Shard{})
+ if err := m.Shards[len(m.Shards)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Recursive", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Recursive = bool(v != 0)
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EvenIfServing", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.EvenIfServing = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *DeleteShardsResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: DeleteShardsResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: DeleteShardsResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *DeleteTabletsRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: DeleteTabletsRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: DeleteTabletsRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletAliases", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.TabletAliases = append(m.TabletAliases, &topodata.TabletAlias{})
+ if err := m.TabletAliases[len(m.TabletAliases)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field AllowPrimary", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.AllowPrimary = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *DeleteTabletsResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: DeleteTabletsResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: DeleteTabletsResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *EmergencyReparentShardRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: EmergencyReparentShardRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: EmergencyReparentShardRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Shard", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Shard = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field NewPrimary", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.NewPrimary == nil {
+ m.NewPrimary = &topodata.TabletAlias{}
+ }
+ if err := m.NewPrimary.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field IgnoreReplicas", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.IgnoreReplicas = append(m.IgnoreReplicas, &topodata.TabletAlias{})
+ if err := m.IgnoreReplicas[len(m.IgnoreReplicas)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field WaitReplicasTimeout", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.WaitReplicasTimeout == nil {
+ m.WaitReplicasTimeout = &vttime.Duration{}
+ }
+ if err := m.WaitReplicasTimeout.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *EmergencyReparentShardResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: EmergencyReparentShardResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: EmergencyReparentShardResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Shard", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Shard = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PromotedPrimary", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.PromotedPrimary == nil {
+ m.PromotedPrimary = &topodata.TabletAlias{}
+ }
+ if err := m.PromotedPrimary.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Events", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Events = append(m.Events, &logutil.Event{})
+ if err := m.Events[len(m.Events)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *FindAllShardsInKeyspaceRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: FindAllShardsInKeyspaceRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: FindAllShardsInKeyspaceRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *FindAllShardsInKeyspaceResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: FindAllShardsInKeyspaceResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: FindAllShardsInKeyspaceResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Shards", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Shards == nil {
+ m.Shards = make(map[string]*Shard)
+ }
+ var mapkey string
+ var mapvalue *Shard
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var mapmsglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ mapmsglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if mapmsglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postmsgIndex := iNdEx + mapmsglen
+ if postmsgIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postmsgIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = &Shard{}
+ if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
+ return err
+ }
+ iNdEx = postmsgIndex
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.Shards[mapkey] = mapvalue
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetBackupsRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetBackupsRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetBackupsRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Shard", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Shard = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetBackupsResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetBackupsResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetBackupsResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Backups", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Backups = append(m.Backups, &mysqlctl.BackupInfo{})
+ if err := m.Backups[len(m.Backups)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetCellInfoNamesRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetCellInfoNamesRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetCellInfoNamesRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetCellInfoNamesResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetCellInfoNamesResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetCellInfoNamesResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Names", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Names = append(m.Names, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetCellInfoRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetCellInfoRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetCellInfoRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cell", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Cell = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetCellInfoResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetCellInfoResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetCellInfoResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CellInfo", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.CellInfo == nil {
+ m.CellInfo = &topodata.CellInfo{}
+ }
+ if err := m.CellInfo.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetCellsAliasesRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetCellsAliasesRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetCellsAliasesRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetCellsAliasesResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetCellsAliasesResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetCellsAliasesResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Aliases", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Aliases == nil {
+ m.Aliases = make(map[string]*topodata.CellsAlias)
+ }
+ var mapkey string
+ var mapvalue *topodata.CellsAlias
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var mapmsglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ mapmsglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if mapmsglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postmsgIndex := iNdEx + mapmsglen
+ if postmsgIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postmsgIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = &topodata.CellsAlias{}
+ if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
+ return err
+ }
+ iNdEx = postmsgIndex
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.Aliases[mapkey] = mapvalue
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetKeyspacesRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetKeyspacesRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetKeyspacesRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetKeyspacesResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetKeyspacesResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetKeyspacesResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspaces", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspaces = append(m.Keyspaces, &Keyspace{})
+ if err := m.Keyspaces[len(m.Keyspaces)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetKeyspaceRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetKeyspaceRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetKeyspaceRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetKeyspaceResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetKeyspaceResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetKeyspaceResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Keyspace == nil {
+ m.Keyspace = &Keyspace{}
+ }
+ if err := m.Keyspace.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetSchemaRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetSchemaRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetSchemaRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletAlias", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.TabletAlias == nil {
+ m.TabletAlias = &topodata.TabletAlias{}
+ }
+ if err := m.TabletAlias.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Tables", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Tables = append(m.Tables, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ExcludeTables", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ExcludeTables = append(m.ExcludeTables, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field IncludeViews", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.IncludeViews = bool(v != 0)
+ case 5:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TableNamesOnly", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.TableNamesOnly = bool(v != 0)
+ case 6:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TableSizesOnly", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.TableSizesOnly = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetSchemaResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetSchemaResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetSchemaResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Schema", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Schema == nil {
+ m.Schema = &tabletmanagerdata.SchemaDefinition{}
+ }
+ if err := m.Schema.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetShardRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetShardRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetShardRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ShardName", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ShardName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetShardResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetShardResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetShardResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Shard", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Shard == nil {
+ m.Shard = &Shard{}
+ }
+ if err := m.Shard.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetSrvKeyspacesRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetSrvKeyspacesRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetSrvKeyspacesRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cells", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Cells = append(m.Cells, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetSrvKeyspacesResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetSrvKeyspacesResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetSrvKeyspacesResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SrvKeyspaces", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.SrvKeyspaces == nil {
+ m.SrvKeyspaces = make(map[string]*topodata.SrvKeyspace)
+ }
+ var mapkey string
+ var mapvalue *topodata.SrvKeyspace
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var mapmsglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ mapmsglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if mapmsglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postmsgIndex := iNdEx + mapmsglen
+ if postmsgIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postmsgIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = &topodata.SrvKeyspace{}
+ if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
+ return err
+ }
+ iNdEx = postmsgIndex
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.SrvKeyspaces[mapkey] = mapvalue
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetSrvVSchemaRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetSrvVSchemaRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetSrvVSchemaRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cell", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Cell = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetSrvVSchemaResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetSrvVSchemaResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetSrvVSchemaResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SrvVSchema", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.SrvVSchema == nil {
+ m.SrvVSchema = &vschema.SrvVSchema{}
+ }
+ if err := m.SrvVSchema.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetTabletRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetTabletRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetTabletRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletAlias", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.TabletAlias == nil {
+ m.TabletAlias = &topodata.TabletAlias{}
+ }
+ if err := m.TabletAlias.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetTabletResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetTabletResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetTabletResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Tablet", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Tablet == nil {
+ m.Tablet = &topodata.Tablet{}
+ }
+ if err := m.Tablet.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetTabletsRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetTabletsRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetTabletsRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Shard", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Shard = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cells", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Cells = append(m.Cells, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Strict", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Strict = bool(v != 0)
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletAliases", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.TabletAliases = append(m.TabletAliases, &topodata.TabletAlias{})
+ if err := m.TabletAliases[len(m.TabletAliases)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetTabletsResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetTabletsResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetTabletsResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Tablets", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Tablets = append(m.Tablets, &topodata.Tablet{})
+ if err := m.Tablets[len(m.Tablets)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetVSchemaRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetVSchemaRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetVSchemaRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetVSchemaResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetVSchemaResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetVSchemaResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field VSchema", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.VSchema == nil {
+ m.VSchema = &vschema.Keyspace{}
+ }
+ if err := m.VSchema.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetWorkflowsRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetWorkflowsRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetWorkflowsRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ActiveOnly", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.ActiveOnly = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *GetWorkflowsResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: GetWorkflowsResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: GetWorkflowsResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Workflows", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Workflows = append(m.Workflows, &Workflow{})
+ if err := m.Workflows[len(m.Workflows)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *InitShardPrimaryRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: InitShardPrimaryRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: InitShardPrimaryRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Shard", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Shard = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PrimaryElectTabletAlias", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.PrimaryElectTabletAlias == nil {
+ m.PrimaryElectTabletAlias = &topodata.TabletAlias{}
+ }
+ if err := m.PrimaryElectTabletAlias.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Force", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Force = bool(v != 0)
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field WaitReplicasTimeout", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.WaitReplicasTimeout == nil {
+ m.WaitReplicasTimeout = &vttime.Duration{}
+ }
+ if err := m.WaitReplicasTimeout.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *InitShardPrimaryResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: InitShardPrimaryResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: InitShardPrimaryResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Events", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Events = append(m.Events, &logutil.Event{})
+ if err := m.Events[len(m.Events)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PlannedReparentShardRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PlannedReparentShardRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PlannedReparentShardRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Shard", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Shard = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field NewPrimary", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.NewPrimary == nil {
+ m.NewPrimary = &topodata.TabletAlias{}
+ }
+ if err := m.NewPrimary.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field AvoidPrimary", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.AvoidPrimary == nil {
+ m.AvoidPrimary = &topodata.TabletAlias{}
+ }
+ if err := m.AvoidPrimary.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field WaitReplicasTimeout", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.WaitReplicasTimeout == nil {
+ m.WaitReplicasTimeout = &vttime.Duration{}
+ }
+ if err := m.WaitReplicasTimeout.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *PlannedReparentShardResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: PlannedReparentShardResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: PlannedReparentShardResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Shard", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Shard = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PromotedPrimary", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.PromotedPrimary == nil {
+ m.PromotedPrimary = &topodata.TabletAlias{}
+ }
+ if err := m.PromotedPrimary.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Events", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Events = append(m.Events, &logutil.Event{})
+ if err := m.Events[len(m.Events)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RemoveKeyspaceCellRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RemoveKeyspaceCellRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RemoveKeyspaceCellRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cell", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Cell = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Force", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Force = bool(v != 0)
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Recursive", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Recursive = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RemoveKeyspaceCellResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RemoveKeyspaceCellResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RemoveKeyspaceCellResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RemoveShardCellRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RemoveShardCellRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RemoveShardCellRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ShardName", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ShardName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cell", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Cell = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Force", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Force = bool(v != 0)
+ case 5:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Recursive", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Recursive = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RemoveShardCellResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RemoveShardCellResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RemoveShardCellResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ReparentTabletRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ReparentTabletRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ReparentTabletRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Tablet", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Tablet == nil {
+ m.Tablet = &topodata.TabletAlias{}
+ }
+ if err := m.Tablet.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ReparentTabletResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ReparentTabletResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ReparentTabletResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Shard", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Shard = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Primary", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Primary == nil {
+ m.Primary = &topodata.TabletAlias{}
+ }
+ if err := m.Primary.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ShardReplicationPositionsRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ShardReplicationPositionsRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ShardReplicationPositionsRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Shard", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Shard = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ShardReplicationPositionsResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ShardReplicationPositionsResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ShardReplicationPositionsResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ReplicationStatuses", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ReplicationStatuses == nil {
+ m.ReplicationStatuses = make(map[string]*replicationdata.Status)
+ }
+ var mapkey string
+ var mapvalue *replicationdata.Status
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var mapmsglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ mapmsglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if mapmsglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postmsgIndex := iNdEx + mapmsglen
+ if postmsgIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postmsgIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = &replicationdata.Status{}
+ if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
+ return err
+ }
+ iNdEx = postmsgIndex
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.ReplicationStatuses[mapkey] = mapvalue
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletMap", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.TabletMap == nil {
+ m.TabletMap = make(map[string]*topodata.Tablet)
+ }
+ var mapkey string
+ var mapvalue *topodata.Tablet
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var mapmsglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ mapmsglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if mapmsglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postmsgIndex := iNdEx + mapmsglen
+ if postmsgIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postmsgIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = &topodata.Tablet{}
+ if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
+ return err
+ }
+ iNdEx = postmsgIndex
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.TabletMap[mapkey] = mapvalue
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *TabletExternallyReparentedRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: TabletExternallyReparentedRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: TabletExternallyReparentedRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Tablet", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Tablet == nil {
+ m.Tablet = &topodata.TabletAlias{}
+ }
+ if err := m.Tablet.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *TabletExternallyReparentedResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: TabletExternallyReparentedResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: TabletExternallyReparentedResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspace", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspace = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Shard", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Shard = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field NewPrimary", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.NewPrimary == nil {
+ m.NewPrimary = &topodata.TabletAlias{}
+ }
+ if err := m.NewPrimary.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field OldPrimary", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.OldPrimary == nil {
+ m.OldPrimary = &topodata.TabletAlias{}
+ }
+ if err := m.OldPrimary.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtctldata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtctldata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func skipVtctldata(dAtA []byte) (n int, err error) {
+ l := len(dAtA)
+ iNdEx := 0
+ depth := 0
+ for iNdEx < l {
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ wireType := int(wire & 0x7)
+ switch wireType {
+ case 0:
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ iNdEx++
+ if dAtA[iNdEx-1] < 0x80 {
+ break
+ }
+ }
+ case 1:
+ iNdEx += 8
+ case 2:
+ var length int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowVtctldata
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ length |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if length < 0 {
+ return 0, ErrInvalidLengthVtctldata
+ }
+ iNdEx += length
+ case 3:
+ depth++
+ case 4:
+ if depth == 0 {
+ return 0, ErrUnexpectedEndOfGroupVtctldata
+ }
+ depth--
+ case 5:
+ iNdEx += 4
+ default:
+ return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
+ }
+ if iNdEx < 0 {
+ return 0, ErrInvalidLengthVtctldata
+ }
+ if depth == 0 {
+ return iNdEx, nil
+ }
+ }
+ return 0, io.ErrUnexpectedEOF
+}
+
+var (
+ ErrInvalidLengthVtctldata = fmt.Errorf("proto: negative length found during unmarshaling")
+ ErrIntOverflowVtctldata = fmt.Errorf("proto: integer overflow")
+ ErrUnexpectedEndOfGroupVtctldata = fmt.Errorf("proto: unexpected end of group")
+)
diff --git a/go/vt/proto/vtctlservice/vtctlservice.pb.go b/go/vt/proto/vtctlservice/vtctlservice.pb.go
index 3f7e5a349cb..053b6ee12fa 100644
--- a/go/vt/proto/vtctlservice/vtctlservice.pb.go
+++ b/go/vt/proto/vtctlservice/vtctlservice.pb.go
@@ -1,4 +1,4 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: vtctlservice.proto
package vtctlservice
@@ -12,7 +12,6 @@ import (
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
-
vtctldata "vitess.io/vitess/go/vt/proto/vtctldata"
)
@@ -30,22 +29,55 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
func init() { proto.RegisterFile("vtctlservice.proto", fileDescriptor_27055cdbb1148d2b) }
var fileDescriptor_27055cdbb1148d2b = []byte{
- // 235 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x2a, 0x2b, 0x49, 0x2e,
- 0xc9, 0x29, 0x4e, 0x2d, 0x2a, 0xcb, 0x4c, 0x4e, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2,
- 0x41, 0x16, 0x93, 0xe2, 0x07, 0xf3, 0x52, 0x12, 0x4b, 0x12, 0x21, 0xd2, 0x46, 0x85, 0x5c, 0xac,
- 0x61, 0x20, 0x21, 0xa1, 0x0c, 0x2e, 0x61, 0xd7, 0x8a, 0xd4, 0xe4, 0xd2, 0x92, 0x54, 0x30, 0xdf,
- 0x39, 0x3f, 0x37, 0x37, 0x31, 0x2f, 0x45, 0x48, 0x55, 0x0f, 0xa1, 0x03, 0x8b, 0x7c, 0x50, 0x6a,
- 0x61, 0x69, 0x6a, 0x71, 0x89, 0x94, 0x1a, 0x21, 0x65, 0xc5, 0x05, 0xf9, 0x79, 0xc5, 0xa9, 0x4a,
- 0x0c, 0x06, 0x8c, 0x46, 0xf3, 0x99, 0xb8, 0xd8, 0xc0, 0x92, 0x29, 0x42, 0x45, 0x5c, 0xe2, 0x6e,
- 0x99, 0x79, 0x29, 0x8e, 0x39, 0x39, 0xc1, 0x19, 0x89, 0x45, 0x29, 0xc5, 0x9e, 0x79, 0xde, 0xa9,
- 0x95, 0xc5, 0x05, 0x89, 0xc9, 0xa9, 0x42, 0x9a, 0x48, 0x26, 0xe2, 0x50, 0x03, 0xb3, 0x5c, 0x8b,
- 0x18, 0xa5, 0x30, 0x07, 0x08, 0xf9, 0x71, 0x71, 0xbb, 0xa7, 0x96, 0xc0, 0xed, 0x91, 0x45, 0xd2,
- 0x8c, 0x24, 0x0e, 0x33, 0x5b, 0x0e, 0x97, 0x34, 0xdc, 0xbc, 0x40, 0x2e, 0x1e, 0x24, 0x89, 0x62,
- 0x21, 0x1c, 0x3a, 0x8a, 0x61, 0x26, 0xca, 0xe3, 0x94, 0x87, 0x19, 0xe9, 0xa4, 0x1d, 0xa5, 0x59,
- 0x96, 0x59, 0x92, 0x5a, 0x5c, 0xac, 0x97, 0x99, 0xaf, 0x0f, 0x61, 0xe9, 0xa7, 0xe7, 0xeb, 0x97,
- 0x95, 0xe8, 0x83, 0x23, 0x4d, 0x1f, 0x39, 0x4a, 0x93, 0xd8, 0xc0, 0x62, 0xc6, 0x80, 0x00, 0x00,
- 0x00, 0xff, 0xff, 0xd5, 0x49, 0x16, 0xd1, 0xfd, 0x01, 0x00, 0x00,
+ // 753 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x96, 0xdf, 0x4e, 0x14, 0x3f,
+ 0x14, 0xc7, 0xd9, 0x8b, 0x1f, 0xf9, 0x59, 0x51, 0x48, 0x25, 0x1a, 0x17, 0x76, 0x58, 0x50, 0x54,
+ 0xfc, 0xc3, 0x1a, 0xbc, 0xf4, 0x0a, 0xd6, 0x15, 0x09, 0x09, 0x41, 0x20, 0x90, 0x90, 0x70, 0x51,
+ 0x66, 0x0e, 0xec, 0x84, 0x99, 0x76, 0x98, 0x96, 0x95, 0x8d, 0x2f, 0xe2, 0x1b, 0xe9, 0xa5, 0x8f,
+ 0x60, 0xf0, 0x45, 0xcc, 0x4e, 0xb7, 0xa5, 0xd3, 0x69, 0xd9, 0xbd, 0x82, 0xed, 0xe7, 0x7b, 0xbe,
+ 0xa7, 0xff, 0xce, 0xe9, 0x20, 0xdc, 0x13, 0xa1, 0x48, 0x38, 0xe4, 0xbd, 0x38, 0x84, 0xd5, 0x2c,
+ 0x67, 0x82, 0xe1, 0x29, 0x73, 0xac, 0x3e, 0x5d, 0xfc, 0x8a, 0x88, 0x20, 0x12, 0xaf, 0x5d, 0xa2,
+ 0xff, 0x0e, 0x07, 0x43, 0xb8, 0x8b, 0x1e, 0x75, 0xae, 0x21, 0xbc, 0x12, 0x50, 0xfc, 0x6e, 0xb3,
+ 0x34, 0x25, 0x34, 0xc2, 0xcb, 0xab, 0xb7, 0x11, 0x0e, 0xbe, 0x07, 0x97, 0x57, 0xc0, 0x45, 0xfd,
+ 0xc5, 0x28, 0x19, 0xcf, 0x18, 0xe5, 0xb0, 0x34, 0xf1, 0xbe, 0xb6, 0xf6, 0x73, 0x16, 0x4d, 0x16,
+ 0x30, 0xc2, 0x27, 0x68, 0xa6, 0xdd, 0x25, 0xf4, 0x1c, 0x0e, 0xc8, 0x69, 0x02, 0xe2, 0xa0, 0x9f,
+ 0x01, 0x5e, 0x32, 0xac, 0x6c, 0xa8, 0xd2, 0x3d, 0xbb, 0x53, 0xa3, 0x72, 0xe1, 0x23, 0xf4, 0xb0,
+ 0x9d, 0x03, 0x11, 0xb0, 0x0d, 0x7d, 0x9e, 0x91, 0x10, 0x70, 0xd3, 0x0c, 0x2c, 0x21, 0x65, 0xbd,
+ 0x78, 0x87, 0x42, 0x1b, 0xef, 0xa0, 0xfb, 0x92, 0xed, 0x77, 0x49, 0x1e, 0xe1, 0x46, 0x25, 0xa6,
+ 0x18, 0x57, 0x96, 0x81, 0x0f, 0x9b, 0x13, 0xfd, 0x04, 0x09, 0x78, 0x26, 0x5a, 0x46, 0xae, 0x89,
+ 0xda, 0x0a, 0x6d, 0xfc, 0x15, 0x4d, 0x49, 0x56, 0x64, 0xe4, 0x38, 0xa8, 0x04, 0x49, 0xa0, 0x4c,
+ 0x17, 0xbc, 0x5c, 0x5b, 0x1e, 0xa0, 0x07, 0x92, 0xc8, 0x2d, 0xe7, 0xb8, 0x1a, 0x33, 0x24, 0xca,
+ 0xb4, 0xe9, 0x17, 0x68, 0x57, 0x86, 0x1e, 0x77, 0x52, 0xc8, 0xcf, 0x81, 0x86, 0xfd, 0x3d, 0xc8,
+ 0x48, 0x0e, 0x54, 0xc8, 0xcd, 0x7d, 0x65, 0x5e, 0x2d, 0xa7, 0x44, 0xe5, 0x59, 0x19, 0x43, 0xa9,
+ 0x13, 0xe6, 0xe8, 0xc9, 0xe7, 0x98, 0x46, 0xeb, 0x49, 0x22, 0x57, 0xb8, 0x45, 0xf5, 0xde, 0x9b,
+ 0x3e, 0x1e, 0x8d, 0x4a, 0xf9, 0x7a, 0x1c, 0xa9, 0xce, 0xb9, 0x8d, 0xd0, 0x26, 0x88, 0x0d, 0x12,
+ 0x5e, 0x5c, 0x65, 0x1c, 0xcf, 0x1b, 0xb1, 0xb7, 0xc3, 0xca, 0xb9, 0xe1, 0xa1, 0xda, 0xec, 0x04,
+ 0xcd, 0x6c, 0x82, 0x68, 0x43, 0x92, 0x6c, 0xd1, 0x33, 0xb6, 0x43, 0x52, 0xe0, 0xa5, 0xda, 0xb1,
+ 0xa1, 0xab, 0x76, 0xaa, 0x1a, 0xf3, 0x8a, 0x1b, 0x14, 0x37, 0xdc, 0x51, 0xae, 0x2b, 0x5e, 0xc2,
+ 0xda, 0xef, 0x18, 0x4d, 0x0f, 0x01, 0x5f, 0x4f, 0x62, 0xc2, 0x81, 0xe3, 0xc5, 0x6a, 0x90, 0x62,
+ 0xca, 0x77, 0xe9, 0x2e, 0x89, 0x35, 0x57, 0x7d, 0x7e, 0xd6, 0x5c, 0xed, 0x33, 0x0b, 0x7c, 0xd8,
+ 0xac, 0x1a, 0x03, 0x94, 0xab, 0xc6, 0x04, 0xae, 0xaa, 0x29, 0x73, 0x6d, 0xf9, 0x05, 0xdd, 0xdb,
+ 0x04, 0xb1, 0x1f, 0x76, 0x21, 0x25, 0x78, 0xae, 0xac, 0x97, 0xa3, 0xca, 0x6c, 0xde, 0x0d, 0xb5,
+ 0x53, 0x07, 0xfd, 0x3f, 0x18, 0x2e, 0x6a, 0xa3, 0x6e, 0x69, 0xcd, 0x6a, 0x98, 0x73, 0x32, 0xeb,
+ 0x3c, 0xf6, 0xf3, 0xde, 0xed, 0x32, 0xad, 0xf3, 0x30, 0x99, 0xe7, 0x3c, 0xca, 0x12, 0xb3, 0x45,
+ 0x48, 0x78, 0x38, 0x5c, 0xf0, 0x42, 0x25, 0xec, 0xb0, 0xbc, 0xe8, 0xa6, 0x5f, 0x60, 0x6d, 0xa1,
+ 0x6c, 0x1d, 0xf6, 0x16, 0xca, 0x51, 0xcf, 0x16, 0x2a, 0x68, 0xd5, 0xa1, 0xea, 0x5f, 0x4e, 0xb5,
+ 0xaf, 0x0e, 0xab, 0x9d, 0x4b, 0x9a, 0xa9, 0x95, 0x5a, 0x66, 0xd6, 0x32, 0x1b, 0x1e, 0x6a, 0xdd,
+ 0xbc, 0x23, 0x96, 0x5f, 0x9c, 0x25, 0xec, 0x5b, 0xe5, 0xe6, 0x69, 0xe0, 0xb9, 0x79, 0x06, 0x37,
+ 0xfb, 0xc4, 0x16, 0x8d, 0xe5, 0xf9, 0xef, 0xe6, 0x71, 0x4a, 0xf2, 0x7e, 0xa9, 0x4f, 0xd8, 0xd0,
+ 0xd5, 0x27, 0xaa, 0x1a, 0x6d, 0x1f, 0xa3, 0xd9, 0xdd, 0x84, 0x50, 0x0a, 0x51, 0xb9, 0x6d, 0x9b,
+ 0x5f, 0x04, 0x2e, 0x81, 0x4a, 0xf3, 0x72, 0xa4, 0x4e, 0xa7, 0x0a, 0x11, 0xde, 0x83, 0x94, 0xf5,
+ 0xf4, 0x43, 0x37, 0x68, 0x07, 0xf8, 0xb9, 0x61, 0x50, 0xc5, 0x2a, 0xcd, 0xf2, 0x08, 0x95, 0x59,
+ 0x17, 0x92, 0x17, 0xd9, 0x8b, 0x0c, 0x8b, 0x95, 0x58, 0xcd, 0x5c, 0x75, 0x51, 0x91, 0x98, 0xcf,
+ 0xbc, 0x5a, 0xdb, 0xf0, 0x1a, 0x37, 0x4b, 0x71, 0x26, 0x72, 0x3d, 0xf3, 0xb6, 0x42, 0x1b, 0x5f,
+ 0xa3, 0xa7, 0xc3, 0xcd, 0xca, 0x92, 0x38, 0x24, 0x22, 0x66, 0x74, 0x97, 0xf1, 0x78, 0xf0, 0x97,
+ 0xe3, 0x37, 0x86, 0x83, 0x57, 0xa5, 0xd2, 0xbd, 0x1d, 0x4f, 0xac, 0x33, 0x7f, 0x47, 0x75, 0x39,
+ 0x9b, 0xce, 0xb5, 0x80, 0x9c, 0x92, 0x24, 0xd1, 0x2f, 0x2e, 0x44, 0xd8, 0x74, 0xf3, 0xcb, 0x54,
+ 0xee, 0x77, 0x63, 0xaa, 0x55, 0xf2, 0x8d, 0x8f, 0xbf, 0x6e, 0x82, 0xda, 0xef, 0x9b, 0xa0, 0xf6,
+ 0xe7, 0x26, 0xa8, 0xfd, 0xf8, 0x1b, 0x4c, 0x1c, 0xaf, 0xf4, 0x62, 0x01, 0x9c, 0xaf, 0xc6, 0xac,
+ 0x25, 0xff, 0x6b, 0x9d, 0xb3, 0x56, 0x4f, 0xb4, 0x8a, 0x8f, 0xdd, 0x96, 0xf9, 0x29, 0x7c, 0x3a,
+ 0x59, 0x8c, 0x7d, 0xf8, 0x17, 0x00, 0x00, 0xff, 0xff, 0xe0, 0x50, 0xd7, 0x8b, 0x35, 0x0b, 0x00,
+ 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
@@ -159,12 +191,107 @@ var _Vtctl_serviceDesc = grpc.ServiceDesc{
//
// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream.
type VtctldClient interface {
- // FindAllShardsInKeyspace returns a map of shard names to shard references for a given keyspace.
+ // ChangeTabletType changes the db type for the specified tablet, if possible.
+ // This is used primarily to arrange replicas, and it will not convert a
+ // primary. For that, use InitShardPrimary.
+ //
+ // NOTE: This command automatically updates the serving graph.
+ ChangeTabletType(ctx context.Context, in *vtctldata.ChangeTabletTypeRequest, opts ...grpc.CallOption) (*vtctldata.ChangeTabletTypeResponse, error)
+ // CreateKeyspace creates the specified keyspace in the topology. For a
+ // SNAPSHOT keyspace, the request must specify the name of a base keyspace,
+ // as well as a snapshot time.
+ CreateKeyspace(ctx context.Context, in *vtctldata.CreateKeyspaceRequest, opts ...grpc.CallOption) (*vtctldata.CreateKeyspaceResponse, error)
+ // CreateShard creates the specified shard in the topology.
+ CreateShard(ctx context.Context, in *vtctldata.CreateShardRequest, opts ...grpc.CallOption) (*vtctldata.CreateShardResponse, error)
+ // DeleteKeyspace deletes the specified keyspace from the topology. In
+ // recursive mode, it also recursively deletes all shards in the keyspace.
+ // Otherwise, the keyspace must be empty (have no shards), or DeleteKeyspace
+ // returns an error.
+ DeleteKeyspace(ctx context.Context, in *vtctldata.DeleteKeyspaceRequest, opts ...grpc.CallOption) (*vtctldata.DeleteKeyspaceResponse, error)
+ // DeleteShards deletes the specified shards from the topology. In recursive
+ // mode, it also deletes all tablets belonging to the shard. Otherwise, the
+ // shard must be empty (have no tablets) or DeleteShards returns an error for
+ // that shard.
+ DeleteShards(ctx context.Context, in *vtctldata.DeleteShardsRequest, opts ...grpc.CallOption) (*vtctldata.DeleteShardsResponse, error)
+ // DeleteTablets deletes one or more tablets from the topology.
+ DeleteTablets(ctx context.Context, in *vtctldata.DeleteTabletsRequest, opts ...grpc.CallOption) (*vtctldata.DeleteTabletsResponse, error)
+ // EmergencyReparentShard reparents the shard to the new primary. It assumes
+ // the old primary is dead or otherwise not responding.
+ EmergencyReparentShard(ctx context.Context, in *vtctldata.EmergencyReparentShardRequest, opts ...grpc.CallOption) (*vtctldata.EmergencyReparentShardResponse, error)
+ // FindAllShardsInKeyspace returns a map of shard names to shard references
+ // for a given keyspace.
FindAllShardsInKeyspace(ctx context.Context, in *vtctldata.FindAllShardsInKeyspaceRequest, opts ...grpc.CallOption) (*vtctldata.FindAllShardsInKeyspaceResponse, error)
+ // GetBackups returns all the backups for a shard.
+ GetBackups(ctx context.Context, in *vtctldata.GetBackupsRequest, opts ...grpc.CallOption) (*vtctldata.GetBackupsResponse, error)
+ // GetCellInfoNames returns all the cells for which we have a CellInfo object,
+ // meaning we have a topology service registered.
+ GetCellInfoNames(ctx context.Context, in *vtctldata.GetCellInfoNamesRequest, opts ...grpc.CallOption) (*vtctldata.GetCellInfoNamesResponse, error)
+ // GetCellInfo returns the information for a cell.
+ GetCellInfo(ctx context.Context, in *vtctldata.GetCellInfoRequest, opts ...grpc.CallOption) (*vtctldata.GetCellInfoResponse, error)
+ // GetCellsAliases returns a mapping of cell alias to cells identified by that
+ // alias.
+ GetCellsAliases(ctx context.Context, in *vtctldata.GetCellsAliasesRequest, opts ...grpc.CallOption) (*vtctldata.GetCellsAliasesResponse, error)
// GetKeyspace reads the given keyspace from the topo and returns it.
GetKeyspace(ctx context.Context, in *vtctldata.GetKeyspaceRequest, opts ...grpc.CallOption) (*vtctldata.GetKeyspaceResponse, error)
// GetKeyspaces returns the keyspace struct of all keyspaces in the topo.
GetKeyspaces(ctx context.Context, in *vtctldata.GetKeyspacesRequest, opts ...grpc.CallOption) (*vtctldata.GetKeyspacesResponse, error)
+ // GetSchema returns the schema for a tablet, or just the schema for the
+ // specified tables in that tablet.
+ GetSchema(ctx context.Context, in *vtctldata.GetSchemaRequest, opts ...grpc.CallOption) (*vtctldata.GetSchemaResponse, error)
+ // GetShard returns information about a shard in the topology.
+ GetShard(ctx context.Context, in *vtctldata.GetShardRequest, opts ...grpc.CallOption) (*vtctldata.GetShardResponse, error)
+ // GetSrvKeyspaces returns the SrvKeyspaces for a keyspace in one or more
+ // cells.
+ GetSrvKeyspaces(ctx context.Context, in *vtctldata.GetSrvKeyspacesRequest, opts ...grpc.CallOption) (*vtctldata.GetSrvKeyspacesResponse, error)
+ // GetSrvVSchema returns a the SrvVSchema for a cell.
+ GetSrvVSchema(ctx context.Context, in *vtctldata.GetSrvVSchemaRequest, opts ...grpc.CallOption) (*vtctldata.GetSrvVSchemaResponse, error)
+ // GetTablet returns information about a tablet.
+ GetTablet(ctx context.Context, in *vtctldata.GetTabletRequest, opts ...grpc.CallOption) (*vtctldata.GetTabletResponse, error)
+ // GetTablets returns tablets, optionally filtered by keyspace and shard.
+ GetTablets(ctx context.Context, in *vtctldata.GetTabletsRequest, opts ...grpc.CallOption) (*vtctldata.GetTabletsResponse, error)
+ // GetVSchema returns the vschema for a keyspace.
+ GetVSchema(ctx context.Context, in *vtctldata.GetVSchemaRequest, opts ...grpc.CallOption) (*vtctldata.GetVSchemaResponse, error)
+ // GetWorkflows returns a list of workflows for the given keyspace.
+ GetWorkflows(ctx context.Context, in *vtctldata.GetWorkflowsRequest, opts ...grpc.CallOption) (*vtctldata.GetWorkflowsResponse, error)
+ // InitShardPrimary sets the initial primary for a shard. Will make all other
+ // tablets in the shard replicas of the provided primary.
+ //
+ // WARNING: This could cause data loss on an already replicating shard.
+ // PlannedReparentShard or EmergencyReparentShard should be used in those
+ // cases instead.
+ InitShardPrimary(ctx context.Context, in *vtctldata.InitShardPrimaryRequest, opts ...grpc.CallOption) (*vtctldata.InitShardPrimaryResponse, error)
+ // PlannedReparentShard reparents the shard to the new primary, or away from
+ // an old primary. Both the old and new primaries need to be reachable and
+ // running.
+ //
+ // **NOTE**: The vtctld will not consider any replicas outside the cell the
+ // current shard primary is in for promotion unless NewPrimary is explicitly
+ // provided in the request.
+ PlannedReparentShard(ctx context.Context, in *vtctldata.PlannedReparentShardRequest, opts ...grpc.CallOption) (*vtctldata.PlannedReparentShardResponse, error)
+ // RemoveKeyspaceCell removes the specified cell from the Cells list for all
+ // shards in the specified keyspace, as well as from the SrvKeyspace for that
+ // keyspace in that cell.
+ RemoveKeyspaceCell(ctx context.Context, in *vtctldata.RemoveKeyspaceCellRequest, opts ...grpc.CallOption) (*vtctldata.RemoveKeyspaceCellResponse, error)
+ // RemoveShardCell removes the specified cell from the specified shard's Cells
+ // list.
+ RemoveShardCell(ctx context.Context, in *vtctldata.RemoveShardCellRequest, opts ...grpc.CallOption) (*vtctldata.RemoveShardCellResponse, error)
+ // ReparentTablet reparents a tablet to the current primary in the shard. This
+ // only works if the current replica position matches the last known reparent
+ // action.
+ ReparentTablet(ctx context.Context, in *vtctldata.ReparentTabletRequest, opts ...grpc.CallOption) (*vtctldata.ReparentTabletResponse, error)
+ // ShardReplicationPositions returns the replication position of each tablet
+ // in a shard. This RPC makes a best-effort to return partial results. For
+ // example, if one tablet in the shard graph is unreachable, then
+ // ShardReplicationPositions will return non-error, and include valid results
+ // for the reachable tablets.
+ ShardReplicationPositions(ctx context.Context, in *vtctldata.ShardReplicationPositionsRequest, opts ...grpc.CallOption) (*vtctldata.ShardReplicationPositionsResponse, error)
+ // TabletExternallyReparented changes metadata in the topology server to
+ // acknowledge a shard primary change performed by an external tool (e.g.
+ // orchestrator).
+ //
+ // See the Reparenting guide for more information:
+ // https://vitess.io/docs/user-guides/configuration-advanced/reparenting/#external-reparenting.
+ TabletExternallyReparented(ctx context.Context, in *vtctldata.TabletExternallyReparentedRequest, opts ...grpc.CallOption) (*vtctldata.TabletExternallyReparentedResponse, error)
}
type vtctldClient struct {
@@ -175,6 +302,69 @@ func NewVtctldClient(cc *grpc.ClientConn) VtctldClient {
return &vtctldClient{cc}
}
+func (c *vtctldClient) ChangeTabletType(ctx context.Context, in *vtctldata.ChangeTabletTypeRequest, opts ...grpc.CallOption) (*vtctldata.ChangeTabletTypeResponse, error) {
+ out := new(vtctldata.ChangeTabletTypeResponse)
+ err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/ChangeTabletType", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vtctldClient) CreateKeyspace(ctx context.Context, in *vtctldata.CreateKeyspaceRequest, opts ...grpc.CallOption) (*vtctldata.CreateKeyspaceResponse, error) {
+ out := new(vtctldata.CreateKeyspaceResponse)
+ err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/CreateKeyspace", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vtctldClient) CreateShard(ctx context.Context, in *vtctldata.CreateShardRequest, opts ...grpc.CallOption) (*vtctldata.CreateShardResponse, error) {
+ out := new(vtctldata.CreateShardResponse)
+ err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/CreateShard", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vtctldClient) DeleteKeyspace(ctx context.Context, in *vtctldata.DeleteKeyspaceRequest, opts ...grpc.CallOption) (*vtctldata.DeleteKeyspaceResponse, error) {
+ out := new(vtctldata.DeleteKeyspaceResponse)
+ err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/DeleteKeyspace", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vtctldClient) DeleteShards(ctx context.Context, in *vtctldata.DeleteShardsRequest, opts ...grpc.CallOption) (*vtctldata.DeleteShardsResponse, error) {
+ out := new(vtctldata.DeleteShardsResponse)
+ err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/DeleteShards", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vtctldClient) DeleteTablets(ctx context.Context, in *vtctldata.DeleteTabletsRequest, opts ...grpc.CallOption) (*vtctldata.DeleteTabletsResponse, error) {
+ out := new(vtctldata.DeleteTabletsResponse)
+ err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/DeleteTablets", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vtctldClient) EmergencyReparentShard(ctx context.Context, in *vtctldata.EmergencyReparentShardRequest, opts ...grpc.CallOption) (*vtctldata.EmergencyReparentShardResponse, error) {
+ out := new(vtctldata.EmergencyReparentShardResponse)
+ err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/EmergencyReparentShard", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
func (c *vtctldClient) FindAllShardsInKeyspace(ctx context.Context, in *vtctldata.FindAllShardsInKeyspaceRequest, opts ...grpc.CallOption) (*vtctldata.FindAllShardsInKeyspaceResponse, error) {
out := new(vtctldata.FindAllShardsInKeyspaceResponse)
err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/FindAllShardsInKeyspace", in, out, opts...)
@@ -184,6 +374,42 @@ func (c *vtctldClient) FindAllShardsInKeyspace(ctx context.Context, in *vtctldat
return out, nil
}
+func (c *vtctldClient) GetBackups(ctx context.Context, in *vtctldata.GetBackupsRequest, opts ...grpc.CallOption) (*vtctldata.GetBackupsResponse, error) {
+ out := new(vtctldata.GetBackupsResponse)
+ err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/GetBackups", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vtctldClient) GetCellInfoNames(ctx context.Context, in *vtctldata.GetCellInfoNamesRequest, opts ...grpc.CallOption) (*vtctldata.GetCellInfoNamesResponse, error) {
+ out := new(vtctldata.GetCellInfoNamesResponse)
+ err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/GetCellInfoNames", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vtctldClient) GetCellInfo(ctx context.Context, in *vtctldata.GetCellInfoRequest, opts ...grpc.CallOption) (*vtctldata.GetCellInfoResponse, error) {
+ out := new(vtctldata.GetCellInfoResponse)
+ err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/GetCellInfo", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vtctldClient) GetCellsAliases(ctx context.Context, in *vtctldata.GetCellsAliasesRequest, opts ...grpc.CallOption) (*vtctldata.GetCellsAliasesResponse, error) {
+ out := new(vtctldata.GetCellsAliasesResponse)
+ err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/GetCellsAliases", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
func (c *vtctldClient) GetKeyspace(ctx context.Context, in *vtctldata.GetKeyspaceRequest, opts ...grpc.CallOption) (*vtctldata.GetKeyspaceResponse, error) {
out := new(vtctldata.GetKeyspaceResponse)
err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/GetKeyspace", in, out, opts...)
@@ -202,103 +428,983 @@ func (c *vtctldClient) GetKeyspaces(ctx context.Context, in *vtctldata.GetKeyspa
return out, nil
}
+func (c *vtctldClient) GetSchema(ctx context.Context, in *vtctldata.GetSchemaRequest, opts ...grpc.CallOption) (*vtctldata.GetSchemaResponse, error) {
+ out := new(vtctldata.GetSchemaResponse)
+ err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/GetSchema", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vtctldClient) GetShard(ctx context.Context, in *vtctldata.GetShardRequest, opts ...grpc.CallOption) (*vtctldata.GetShardResponse, error) {
+ out := new(vtctldata.GetShardResponse)
+ err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/GetShard", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vtctldClient) GetSrvKeyspaces(ctx context.Context, in *vtctldata.GetSrvKeyspacesRequest, opts ...grpc.CallOption) (*vtctldata.GetSrvKeyspacesResponse, error) {
+ out := new(vtctldata.GetSrvKeyspacesResponse)
+ err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/GetSrvKeyspaces", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vtctldClient) GetSrvVSchema(ctx context.Context, in *vtctldata.GetSrvVSchemaRequest, opts ...grpc.CallOption) (*vtctldata.GetSrvVSchemaResponse, error) {
+ out := new(vtctldata.GetSrvVSchemaResponse)
+ err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/GetSrvVSchema", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vtctldClient) GetTablet(ctx context.Context, in *vtctldata.GetTabletRequest, opts ...grpc.CallOption) (*vtctldata.GetTabletResponse, error) {
+ out := new(vtctldata.GetTabletResponse)
+ err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/GetTablet", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vtctldClient) GetTablets(ctx context.Context, in *vtctldata.GetTabletsRequest, opts ...grpc.CallOption) (*vtctldata.GetTabletsResponse, error) {
+ out := new(vtctldata.GetTabletsResponse)
+ err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/GetTablets", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vtctldClient) GetVSchema(ctx context.Context, in *vtctldata.GetVSchemaRequest, opts ...grpc.CallOption) (*vtctldata.GetVSchemaResponse, error) {
+ out := new(vtctldata.GetVSchemaResponse)
+ err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/GetVSchema", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vtctldClient) GetWorkflows(ctx context.Context, in *vtctldata.GetWorkflowsRequest, opts ...grpc.CallOption) (*vtctldata.GetWorkflowsResponse, error) {
+ out := new(vtctldata.GetWorkflowsResponse)
+ err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/GetWorkflows", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vtctldClient) InitShardPrimary(ctx context.Context, in *vtctldata.InitShardPrimaryRequest, opts ...grpc.CallOption) (*vtctldata.InitShardPrimaryResponse, error) {
+ out := new(vtctldata.InitShardPrimaryResponse)
+ err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/InitShardPrimary", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vtctldClient) PlannedReparentShard(ctx context.Context, in *vtctldata.PlannedReparentShardRequest, opts ...grpc.CallOption) (*vtctldata.PlannedReparentShardResponse, error) {
+ out := new(vtctldata.PlannedReparentShardResponse)
+ err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/PlannedReparentShard", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vtctldClient) RemoveKeyspaceCell(ctx context.Context, in *vtctldata.RemoveKeyspaceCellRequest, opts ...grpc.CallOption) (*vtctldata.RemoveKeyspaceCellResponse, error) {
+ out := new(vtctldata.RemoveKeyspaceCellResponse)
+ err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/RemoveKeyspaceCell", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vtctldClient) RemoveShardCell(ctx context.Context, in *vtctldata.RemoveShardCellRequest, opts ...grpc.CallOption) (*vtctldata.RemoveShardCellResponse, error) {
+ out := new(vtctldata.RemoveShardCellResponse)
+ err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/RemoveShardCell", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vtctldClient) ReparentTablet(ctx context.Context, in *vtctldata.ReparentTabletRequest, opts ...grpc.CallOption) (*vtctldata.ReparentTabletResponse, error) {
+ out := new(vtctldata.ReparentTabletResponse)
+ err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/ReparentTablet", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vtctldClient) ShardReplicationPositions(ctx context.Context, in *vtctldata.ShardReplicationPositionsRequest, opts ...grpc.CallOption) (*vtctldata.ShardReplicationPositionsResponse, error) {
+ out := new(vtctldata.ShardReplicationPositionsResponse)
+ err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/ShardReplicationPositions", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *vtctldClient) TabletExternallyReparented(ctx context.Context, in *vtctldata.TabletExternallyReparentedRequest, opts ...grpc.CallOption) (*vtctldata.TabletExternallyReparentedResponse, error) {
+ out := new(vtctldata.TabletExternallyReparentedResponse)
+ err := c.cc.Invoke(ctx, "/vtctlservice.Vtctld/TabletExternallyReparented", in, out, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
// VtctldServer is the server API for Vtctld service.
type VtctldServer interface {
- // FindAllShardsInKeyspace returns a map of shard names to shard references for a given keyspace.
+ // ChangeTabletType changes the db type for the specified tablet, if possible.
+ // This is used primarily to arrange replicas, and it will not convert a
+ // primary. For that, use InitShardPrimary.
+ //
+ // NOTE: This command automatically updates the serving graph.
+ ChangeTabletType(context.Context, *vtctldata.ChangeTabletTypeRequest) (*vtctldata.ChangeTabletTypeResponse, error)
+ // CreateKeyspace creates the specified keyspace in the topology. For a
+ // SNAPSHOT keyspace, the request must specify the name of a base keyspace,
+ // as well as a snapshot time.
+ CreateKeyspace(context.Context, *vtctldata.CreateKeyspaceRequest) (*vtctldata.CreateKeyspaceResponse, error)
+ // CreateShard creates the specified shard in the topology.
+ CreateShard(context.Context, *vtctldata.CreateShardRequest) (*vtctldata.CreateShardResponse, error)
+ // DeleteKeyspace deletes the specified keyspace from the topology. In
+ // recursive mode, it also recursively deletes all shards in the keyspace.
+ // Otherwise, the keyspace must be empty (have no shards), or DeleteKeyspace
+ // returns an error.
+ DeleteKeyspace(context.Context, *vtctldata.DeleteKeyspaceRequest) (*vtctldata.DeleteKeyspaceResponse, error)
+ // DeleteShards deletes the specified shards from the topology. In recursive
+ // mode, it also deletes all tablets belonging to the shard. Otherwise, the
+ // shard must be empty (have no tablets) or DeleteShards returns an error for
+ // that shard.
+ DeleteShards(context.Context, *vtctldata.DeleteShardsRequest) (*vtctldata.DeleteShardsResponse, error)
+ // DeleteTablets deletes one or more tablets from the topology.
+ DeleteTablets(context.Context, *vtctldata.DeleteTabletsRequest) (*vtctldata.DeleteTabletsResponse, error)
+ // EmergencyReparentShard reparents the shard to the new primary. It assumes
+ // the old primary is dead or otherwise not responding.
+ EmergencyReparentShard(context.Context, *vtctldata.EmergencyReparentShardRequest) (*vtctldata.EmergencyReparentShardResponse, error)
+ // FindAllShardsInKeyspace returns a map of shard names to shard references
+ // for a given keyspace.
FindAllShardsInKeyspace(context.Context, *vtctldata.FindAllShardsInKeyspaceRequest) (*vtctldata.FindAllShardsInKeyspaceResponse, error)
+ // GetBackups returns all the backups for a shard.
+ GetBackups(context.Context, *vtctldata.GetBackupsRequest) (*vtctldata.GetBackupsResponse, error)
+ // GetCellInfoNames returns all the cells for which we have a CellInfo object,
+ // meaning we have a topology service registered.
+ GetCellInfoNames(context.Context, *vtctldata.GetCellInfoNamesRequest) (*vtctldata.GetCellInfoNamesResponse, error)
+ // GetCellInfo returns the information for a cell.
+ GetCellInfo(context.Context, *vtctldata.GetCellInfoRequest) (*vtctldata.GetCellInfoResponse, error)
+ // GetCellsAliases returns a mapping of cell alias to cells identified by that
+ // alias.
+ GetCellsAliases(context.Context, *vtctldata.GetCellsAliasesRequest) (*vtctldata.GetCellsAliasesResponse, error)
// GetKeyspace reads the given keyspace from the topo and returns it.
GetKeyspace(context.Context, *vtctldata.GetKeyspaceRequest) (*vtctldata.GetKeyspaceResponse, error)
// GetKeyspaces returns the keyspace struct of all keyspaces in the topo.
GetKeyspaces(context.Context, *vtctldata.GetKeyspacesRequest) (*vtctldata.GetKeyspacesResponse, error)
+ // GetSchema returns the schema for a tablet, or just the schema for the
+ // specified tables in that tablet.
+ GetSchema(context.Context, *vtctldata.GetSchemaRequest) (*vtctldata.GetSchemaResponse, error)
+ // GetShard returns information about a shard in the topology.
+ GetShard(context.Context, *vtctldata.GetShardRequest) (*vtctldata.GetShardResponse, error)
+ // GetSrvKeyspaces returns the SrvKeyspaces for a keyspace in one or more
+ // cells.
+ GetSrvKeyspaces(context.Context, *vtctldata.GetSrvKeyspacesRequest) (*vtctldata.GetSrvKeyspacesResponse, error)
+ // GetSrvVSchema returns a the SrvVSchema for a cell.
+ GetSrvVSchema(context.Context, *vtctldata.GetSrvVSchemaRequest) (*vtctldata.GetSrvVSchemaResponse, error)
+ // GetTablet returns information about a tablet.
+ GetTablet(context.Context, *vtctldata.GetTabletRequest) (*vtctldata.GetTabletResponse, error)
+ // GetTablets returns tablets, optionally filtered by keyspace and shard.
+ GetTablets(context.Context, *vtctldata.GetTabletsRequest) (*vtctldata.GetTabletsResponse, error)
+ // GetVSchema returns the vschema for a keyspace.
+ GetVSchema(context.Context, *vtctldata.GetVSchemaRequest) (*vtctldata.GetVSchemaResponse, error)
+ // GetWorkflows returns a list of workflows for the given keyspace.
+ GetWorkflows(context.Context, *vtctldata.GetWorkflowsRequest) (*vtctldata.GetWorkflowsResponse, error)
+ // InitShardPrimary sets the initial primary for a shard. Will make all other
+ // tablets in the shard replicas of the provided primary.
+ //
+ // WARNING: This could cause data loss on an already replicating shard.
+ // PlannedReparentShard or EmergencyReparentShard should be used in those
+ // cases instead.
+ InitShardPrimary(context.Context, *vtctldata.InitShardPrimaryRequest) (*vtctldata.InitShardPrimaryResponse, error)
+ // PlannedReparentShard reparents the shard to the new primary, or away from
+ // an old primary. Both the old and new primaries need to be reachable and
+ // running.
+ //
+ // **NOTE**: The vtctld will not consider any replicas outside the cell the
+ // current shard primary is in for promotion unless NewPrimary is explicitly
+ // provided in the request.
+ PlannedReparentShard(context.Context, *vtctldata.PlannedReparentShardRequest) (*vtctldata.PlannedReparentShardResponse, error)
+ // RemoveKeyspaceCell removes the specified cell from the Cells list for all
+ // shards in the specified keyspace, as well as from the SrvKeyspace for that
+ // keyspace in that cell.
+ RemoveKeyspaceCell(context.Context, *vtctldata.RemoveKeyspaceCellRequest) (*vtctldata.RemoveKeyspaceCellResponse, error)
+ // RemoveShardCell removes the specified cell from the specified shard's Cells
+ // list.
+ RemoveShardCell(context.Context, *vtctldata.RemoveShardCellRequest) (*vtctldata.RemoveShardCellResponse, error)
+ // ReparentTablet reparents a tablet to the current primary in the shard. This
+ // only works if the current replica position matches the last known reparent
+ // action.
+ ReparentTablet(context.Context, *vtctldata.ReparentTabletRequest) (*vtctldata.ReparentTabletResponse, error)
+ // ShardReplicationPositions returns the replication position of each tablet
+ // in a shard. This RPC makes a best-effort to return partial results. For
+ // example, if one tablet in the shard graph is unreachable, then
+ // ShardReplicationPositions will return non-error, and include valid results
+ // for the reachable tablets.
+ ShardReplicationPositions(context.Context, *vtctldata.ShardReplicationPositionsRequest) (*vtctldata.ShardReplicationPositionsResponse, error)
+ // TabletExternallyReparented changes metadata in the topology server to
+ // acknowledge a shard primary change performed by an external tool (e.g.
+ // orchestrator).
+ //
+ // See the Reparenting guide for more information:
+ // https://vitess.io/docs/user-guides/configuration-advanced/reparenting/#external-reparenting.
+ TabletExternallyReparented(context.Context, *vtctldata.TabletExternallyReparentedRequest) (*vtctldata.TabletExternallyReparentedResponse, error)
}
// UnimplementedVtctldServer can be embedded to have forward compatible implementations.
type UnimplementedVtctldServer struct {
}
+func (*UnimplementedVtctldServer) ChangeTabletType(ctx context.Context, req *vtctldata.ChangeTabletTypeRequest) (*vtctldata.ChangeTabletTypeResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method ChangeTabletType not implemented")
+}
+func (*UnimplementedVtctldServer) CreateKeyspace(ctx context.Context, req *vtctldata.CreateKeyspaceRequest) (*vtctldata.CreateKeyspaceResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method CreateKeyspace not implemented")
+}
+func (*UnimplementedVtctldServer) CreateShard(ctx context.Context, req *vtctldata.CreateShardRequest) (*vtctldata.CreateShardResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method CreateShard not implemented")
+}
+func (*UnimplementedVtctldServer) DeleteKeyspace(ctx context.Context, req *vtctldata.DeleteKeyspaceRequest) (*vtctldata.DeleteKeyspaceResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method DeleteKeyspace not implemented")
+}
+func (*UnimplementedVtctldServer) DeleteShards(ctx context.Context, req *vtctldata.DeleteShardsRequest) (*vtctldata.DeleteShardsResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method DeleteShards not implemented")
+}
+func (*UnimplementedVtctldServer) DeleteTablets(ctx context.Context, req *vtctldata.DeleteTabletsRequest) (*vtctldata.DeleteTabletsResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method DeleteTablets not implemented")
+}
+func (*UnimplementedVtctldServer) EmergencyReparentShard(ctx context.Context, req *vtctldata.EmergencyReparentShardRequest) (*vtctldata.EmergencyReparentShardResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method EmergencyReparentShard not implemented")
+}
func (*UnimplementedVtctldServer) FindAllShardsInKeyspace(ctx context.Context, req *vtctldata.FindAllShardsInKeyspaceRequest) (*vtctldata.FindAllShardsInKeyspaceResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method FindAllShardsInKeyspace not implemented")
}
+func (*UnimplementedVtctldServer) GetBackups(ctx context.Context, req *vtctldata.GetBackupsRequest) (*vtctldata.GetBackupsResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetBackups not implemented")
+}
+func (*UnimplementedVtctldServer) GetCellInfoNames(ctx context.Context, req *vtctldata.GetCellInfoNamesRequest) (*vtctldata.GetCellInfoNamesResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetCellInfoNames not implemented")
+}
+func (*UnimplementedVtctldServer) GetCellInfo(ctx context.Context, req *vtctldata.GetCellInfoRequest) (*vtctldata.GetCellInfoResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetCellInfo not implemented")
+}
+func (*UnimplementedVtctldServer) GetCellsAliases(ctx context.Context, req *vtctldata.GetCellsAliasesRequest) (*vtctldata.GetCellsAliasesResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetCellsAliases not implemented")
+}
func (*UnimplementedVtctldServer) GetKeyspace(ctx context.Context, req *vtctldata.GetKeyspaceRequest) (*vtctldata.GetKeyspaceResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetKeyspace not implemented")
}
func (*UnimplementedVtctldServer) GetKeyspaces(ctx context.Context, req *vtctldata.GetKeyspacesRequest) (*vtctldata.GetKeyspacesResponse, error) {
return nil, status.Errorf(codes.Unimplemented, "method GetKeyspaces not implemented")
}
+func (*UnimplementedVtctldServer) GetSchema(ctx context.Context, req *vtctldata.GetSchemaRequest) (*vtctldata.GetSchemaResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetSchema not implemented")
+}
+func (*UnimplementedVtctldServer) GetShard(ctx context.Context, req *vtctldata.GetShardRequest) (*vtctldata.GetShardResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetShard not implemented")
+}
+func (*UnimplementedVtctldServer) GetSrvKeyspaces(ctx context.Context, req *vtctldata.GetSrvKeyspacesRequest) (*vtctldata.GetSrvKeyspacesResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetSrvKeyspaces not implemented")
+}
+func (*UnimplementedVtctldServer) GetSrvVSchema(ctx context.Context, req *vtctldata.GetSrvVSchemaRequest) (*vtctldata.GetSrvVSchemaResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetSrvVSchema not implemented")
+}
+func (*UnimplementedVtctldServer) GetTablet(ctx context.Context, req *vtctldata.GetTabletRequest) (*vtctldata.GetTabletResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetTablet not implemented")
+}
+func (*UnimplementedVtctldServer) GetTablets(ctx context.Context, req *vtctldata.GetTabletsRequest) (*vtctldata.GetTabletsResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetTablets not implemented")
+}
+func (*UnimplementedVtctldServer) GetVSchema(ctx context.Context, req *vtctldata.GetVSchemaRequest) (*vtctldata.GetVSchemaResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetVSchema not implemented")
+}
+func (*UnimplementedVtctldServer) GetWorkflows(ctx context.Context, req *vtctldata.GetWorkflowsRequest) (*vtctldata.GetWorkflowsResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method GetWorkflows not implemented")
+}
+func (*UnimplementedVtctldServer) InitShardPrimary(ctx context.Context, req *vtctldata.InitShardPrimaryRequest) (*vtctldata.InitShardPrimaryResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method InitShardPrimary not implemented")
+}
+func (*UnimplementedVtctldServer) PlannedReparentShard(ctx context.Context, req *vtctldata.PlannedReparentShardRequest) (*vtctldata.PlannedReparentShardResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method PlannedReparentShard not implemented")
+}
+func (*UnimplementedVtctldServer) RemoveKeyspaceCell(ctx context.Context, req *vtctldata.RemoveKeyspaceCellRequest) (*vtctldata.RemoveKeyspaceCellResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method RemoveKeyspaceCell not implemented")
+}
+func (*UnimplementedVtctldServer) RemoveShardCell(ctx context.Context, req *vtctldata.RemoveShardCellRequest) (*vtctldata.RemoveShardCellResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method RemoveShardCell not implemented")
+}
+func (*UnimplementedVtctldServer) ReparentTablet(ctx context.Context, req *vtctldata.ReparentTabletRequest) (*vtctldata.ReparentTabletResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method ReparentTablet not implemented")
+}
+func (*UnimplementedVtctldServer) ShardReplicationPositions(ctx context.Context, req *vtctldata.ShardReplicationPositionsRequest) (*vtctldata.ShardReplicationPositionsResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method ShardReplicationPositions not implemented")
+}
+func (*UnimplementedVtctldServer) TabletExternallyReparented(ctx context.Context, req *vtctldata.TabletExternallyReparentedRequest) (*vtctldata.TabletExternallyReparentedResponse, error) {
+ return nil, status.Errorf(codes.Unimplemented, "method TabletExternallyReparented not implemented")
+}
func RegisterVtctldServer(s *grpc.Server, srv VtctldServer) {
s.RegisterService(&_Vtctld_serviceDesc, srv)
}
-func _Vtctld_FindAllShardsInKeyspace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(vtctldata.FindAllShardsInKeyspaceRequest)
+func _Vtctld_ChangeTabletType_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.ChangeTabletTypeRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(VtctldServer).FindAllShardsInKeyspace(ctx, in)
+ return srv.(VtctldServer).ChangeTabletType(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/vtctlservice.Vtctld/FindAllShardsInKeyspace",
+ FullMethod: "/vtctlservice.Vtctld/ChangeTabletType",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(VtctldServer).FindAllShardsInKeyspace(ctx, req.(*vtctldata.FindAllShardsInKeyspaceRequest))
+ return srv.(VtctldServer).ChangeTabletType(ctx, req.(*vtctldata.ChangeTabletTypeRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _Vtctld_GetKeyspace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(vtctldata.GetKeyspaceRequest)
+func _Vtctld_CreateKeyspace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.CreateKeyspaceRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(VtctldServer).GetKeyspace(ctx, in)
+ return srv.(VtctldServer).CreateKeyspace(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/vtctlservice.Vtctld/GetKeyspace",
+ FullMethod: "/vtctlservice.Vtctld/CreateKeyspace",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(VtctldServer).GetKeyspace(ctx, req.(*vtctldata.GetKeyspaceRequest))
+ return srv.(VtctldServer).CreateKeyspace(ctx, req.(*vtctldata.CreateKeyspaceRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _Vtctld_GetKeyspaces_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(vtctldata.GetKeyspacesRequest)
+func _Vtctld_CreateShard_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.CreateShardRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(VtctldServer).GetKeyspaces(ctx, in)
+ return srv.(VtctldServer).CreateShard(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/vtctlservice.Vtctld/GetKeyspaces",
+ FullMethod: "/vtctlservice.Vtctld/CreateShard",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(VtctldServer).GetKeyspaces(ctx, req.(*vtctldata.GetKeyspacesRequest))
+ return srv.(VtctldServer).CreateShard(ctx, req.(*vtctldata.CreateShardRequest))
}
return interceptor(ctx, in, info, handler)
}
-var _Vtctld_serviceDesc = grpc.ServiceDesc{
- ServiceName: "vtctlservice.Vtctld",
- HandlerType: (*VtctldServer)(nil),
- Methods: []grpc.MethodDesc{
- {
- MethodName: "FindAllShardsInKeyspace",
- Handler: _Vtctld_FindAllShardsInKeyspace_Handler,
- },
- {
- MethodName: "GetKeyspace",
- Handler: _Vtctld_GetKeyspace_Handler,
- },
- {
- MethodName: "GetKeyspaces",
- Handler: _Vtctld_GetKeyspaces_Handler,
+func _Vtctld_DeleteKeyspace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.DeleteKeyspaceRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VtctldServer).DeleteKeyspace(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtctlservice.Vtctld/DeleteKeyspace",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VtctldServer).DeleteKeyspace(ctx, req.(*vtctldata.DeleteKeyspaceRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Vtctld_DeleteShards_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.DeleteShardsRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VtctldServer).DeleteShards(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtctlservice.Vtctld/DeleteShards",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VtctldServer).DeleteShards(ctx, req.(*vtctldata.DeleteShardsRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Vtctld_DeleteTablets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.DeleteTabletsRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VtctldServer).DeleteTablets(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtctlservice.Vtctld/DeleteTablets",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VtctldServer).DeleteTablets(ctx, req.(*vtctldata.DeleteTabletsRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Vtctld_EmergencyReparentShard_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.EmergencyReparentShardRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VtctldServer).EmergencyReparentShard(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtctlservice.Vtctld/EmergencyReparentShard",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VtctldServer).EmergencyReparentShard(ctx, req.(*vtctldata.EmergencyReparentShardRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Vtctld_FindAllShardsInKeyspace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.FindAllShardsInKeyspaceRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VtctldServer).FindAllShardsInKeyspace(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtctlservice.Vtctld/FindAllShardsInKeyspace",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VtctldServer).FindAllShardsInKeyspace(ctx, req.(*vtctldata.FindAllShardsInKeyspaceRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Vtctld_GetBackups_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.GetBackupsRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VtctldServer).GetBackups(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtctlservice.Vtctld/GetBackups",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VtctldServer).GetBackups(ctx, req.(*vtctldata.GetBackupsRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Vtctld_GetCellInfoNames_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.GetCellInfoNamesRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VtctldServer).GetCellInfoNames(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtctlservice.Vtctld/GetCellInfoNames",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VtctldServer).GetCellInfoNames(ctx, req.(*vtctldata.GetCellInfoNamesRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Vtctld_GetCellInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.GetCellInfoRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VtctldServer).GetCellInfo(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtctlservice.Vtctld/GetCellInfo",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VtctldServer).GetCellInfo(ctx, req.(*vtctldata.GetCellInfoRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Vtctld_GetCellsAliases_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.GetCellsAliasesRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VtctldServer).GetCellsAliases(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtctlservice.Vtctld/GetCellsAliases",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VtctldServer).GetCellsAliases(ctx, req.(*vtctldata.GetCellsAliasesRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Vtctld_GetKeyspace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.GetKeyspaceRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VtctldServer).GetKeyspace(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtctlservice.Vtctld/GetKeyspace",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VtctldServer).GetKeyspace(ctx, req.(*vtctldata.GetKeyspaceRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Vtctld_GetKeyspaces_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.GetKeyspacesRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VtctldServer).GetKeyspaces(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtctlservice.Vtctld/GetKeyspaces",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VtctldServer).GetKeyspaces(ctx, req.(*vtctldata.GetKeyspacesRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Vtctld_GetSchema_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.GetSchemaRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VtctldServer).GetSchema(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtctlservice.Vtctld/GetSchema",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VtctldServer).GetSchema(ctx, req.(*vtctldata.GetSchemaRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Vtctld_GetShard_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.GetShardRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VtctldServer).GetShard(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtctlservice.Vtctld/GetShard",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VtctldServer).GetShard(ctx, req.(*vtctldata.GetShardRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Vtctld_GetSrvKeyspaces_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.GetSrvKeyspacesRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VtctldServer).GetSrvKeyspaces(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtctlservice.Vtctld/GetSrvKeyspaces",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VtctldServer).GetSrvKeyspaces(ctx, req.(*vtctldata.GetSrvKeyspacesRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Vtctld_GetSrvVSchema_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.GetSrvVSchemaRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VtctldServer).GetSrvVSchema(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtctlservice.Vtctld/GetSrvVSchema",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VtctldServer).GetSrvVSchema(ctx, req.(*vtctldata.GetSrvVSchemaRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Vtctld_GetTablet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.GetTabletRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VtctldServer).GetTablet(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtctlservice.Vtctld/GetTablet",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VtctldServer).GetTablet(ctx, req.(*vtctldata.GetTabletRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Vtctld_GetTablets_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.GetTabletsRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VtctldServer).GetTablets(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtctlservice.Vtctld/GetTablets",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VtctldServer).GetTablets(ctx, req.(*vtctldata.GetTabletsRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Vtctld_GetVSchema_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.GetVSchemaRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VtctldServer).GetVSchema(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtctlservice.Vtctld/GetVSchema",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VtctldServer).GetVSchema(ctx, req.(*vtctldata.GetVSchemaRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Vtctld_GetWorkflows_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.GetWorkflowsRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VtctldServer).GetWorkflows(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtctlservice.Vtctld/GetWorkflows",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VtctldServer).GetWorkflows(ctx, req.(*vtctldata.GetWorkflowsRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Vtctld_InitShardPrimary_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.InitShardPrimaryRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VtctldServer).InitShardPrimary(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtctlservice.Vtctld/InitShardPrimary",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VtctldServer).InitShardPrimary(ctx, req.(*vtctldata.InitShardPrimaryRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Vtctld_PlannedReparentShard_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.PlannedReparentShardRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VtctldServer).PlannedReparentShard(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtctlservice.Vtctld/PlannedReparentShard",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VtctldServer).PlannedReparentShard(ctx, req.(*vtctldata.PlannedReparentShardRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Vtctld_RemoveKeyspaceCell_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.RemoveKeyspaceCellRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VtctldServer).RemoveKeyspaceCell(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtctlservice.Vtctld/RemoveKeyspaceCell",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VtctldServer).RemoveKeyspaceCell(ctx, req.(*vtctldata.RemoveKeyspaceCellRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Vtctld_RemoveShardCell_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.RemoveShardCellRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VtctldServer).RemoveShardCell(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtctlservice.Vtctld/RemoveShardCell",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VtctldServer).RemoveShardCell(ctx, req.(*vtctldata.RemoveShardCellRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Vtctld_ReparentTablet_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.ReparentTabletRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VtctldServer).ReparentTablet(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtctlservice.Vtctld/ReparentTablet",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VtctldServer).ReparentTablet(ctx, req.(*vtctldata.ReparentTabletRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Vtctld_ShardReplicationPositions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.ShardReplicationPositionsRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VtctldServer).ShardReplicationPositions(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtctlservice.Vtctld/ShardReplicationPositions",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VtctldServer).ShardReplicationPositions(ctx, req.(*vtctldata.ShardReplicationPositionsRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Vtctld_TabletExternallyReparented_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(vtctldata.TabletExternallyReparentedRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(VtctldServer).TabletExternallyReparented(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/vtctlservice.Vtctld/TabletExternallyReparented",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(VtctldServer).TabletExternallyReparented(ctx, req.(*vtctldata.TabletExternallyReparentedRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+var _Vtctld_serviceDesc = grpc.ServiceDesc{
+ ServiceName: "vtctlservice.Vtctld",
+ HandlerType: (*VtctldServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "ChangeTabletType",
+ Handler: _Vtctld_ChangeTabletType_Handler,
+ },
+ {
+ MethodName: "CreateKeyspace",
+ Handler: _Vtctld_CreateKeyspace_Handler,
+ },
+ {
+ MethodName: "CreateShard",
+ Handler: _Vtctld_CreateShard_Handler,
+ },
+ {
+ MethodName: "DeleteKeyspace",
+ Handler: _Vtctld_DeleteKeyspace_Handler,
+ },
+ {
+ MethodName: "DeleteShards",
+ Handler: _Vtctld_DeleteShards_Handler,
+ },
+ {
+ MethodName: "DeleteTablets",
+ Handler: _Vtctld_DeleteTablets_Handler,
+ },
+ {
+ MethodName: "EmergencyReparentShard",
+ Handler: _Vtctld_EmergencyReparentShard_Handler,
+ },
+ {
+ MethodName: "FindAllShardsInKeyspace",
+ Handler: _Vtctld_FindAllShardsInKeyspace_Handler,
+ },
+ {
+ MethodName: "GetBackups",
+ Handler: _Vtctld_GetBackups_Handler,
+ },
+ {
+ MethodName: "GetCellInfoNames",
+ Handler: _Vtctld_GetCellInfoNames_Handler,
+ },
+ {
+ MethodName: "GetCellInfo",
+ Handler: _Vtctld_GetCellInfo_Handler,
+ },
+ {
+ MethodName: "GetCellsAliases",
+ Handler: _Vtctld_GetCellsAliases_Handler,
+ },
+ {
+ MethodName: "GetKeyspace",
+ Handler: _Vtctld_GetKeyspace_Handler,
+ },
+ {
+ MethodName: "GetKeyspaces",
+ Handler: _Vtctld_GetKeyspaces_Handler,
+ },
+ {
+ MethodName: "GetSchema",
+ Handler: _Vtctld_GetSchema_Handler,
+ },
+ {
+ MethodName: "GetShard",
+ Handler: _Vtctld_GetShard_Handler,
+ },
+ {
+ MethodName: "GetSrvKeyspaces",
+ Handler: _Vtctld_GetSrvKeyspaces_Handler,
+ },
+ {
+ MethodName: "GetSrvVSchema",
+ Handler: _Vtctld_GetSrvVSchema_Handler,
+ },
+ {
+ MethodName: "GetTablet",
+ Handler: _Vtctld_GetTablet_Handler,
+ },
+ {
+ MethodName: "GetTablets",
+ Handler: _Vtctld_GetTablets_Handler,
+ },
+ {
+ MethodName: "GetVSchema",
+ Handler: _Vtctld_GetVSchema_Handler,
+ },
+ {
+ MethodName: "GetWorkflows",
+ Handler: _Vtctld_GetWorkflows_Handler,
+ },
+ {
+ MethodName: "InitShardPrimary",
+ Handler: _Vtctld_InitShardPrimary_Handler,
+ },
+ {
+ MethodName: "PlannedReparentShard",
+ Handler: _Vtctld_PlannedReparentShard_Handler,
+ },
+ {
+ MethodName: "RemoveKeyspaceCell",
+ Handler: _Vtctld_RemoveKeyspaceCell_Handler,
+ },
+ {
+ MethodName: "RemoveShardCell",
+ Handler: _Vtctld_RemoveShardCell_Handler,
+ },
+ {
+ MethodName: "ReparentTablet",
+ Handler: _Vtctld_ReparentTablet_Handler,
+ },
+ {
+ MethodName: "ShardReplicationPositions",
+ Handler: _Vtctld_ShardReplicationPositions_Handler,
+ },
+ {
+ MethodName: "TabletExternallyReparented",
+ Handler: _Vtctld_TabletExternallyReparented_Handler,
},
},
Streams: []grpc.StreamDesc{},
diff --git a/go/vt/proto/vtgate/vtgate.pb.go b/go/vt/proto/vtgate/vtgate.pb.go
index 199d82cd0f6..d265e098d5b 100644
--- a/go/vt/proto/vtgate/vtgate.pb.go
+++ b/go/vt/proto/vtgate/vtgate.pb.go
@@ -1,14 +1,16 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: vtgate.proto
package vtgate
import (
+ encoding_binary "encoding/binary"
fmt "fmt"
+ io "io"
math "math"
+ math_bits "math/bits"
proto "github.com/golang/protobuf/proto"
-
binlogdata "vitess.io/vitess/go/vt/proto/binlogdata"
query "vitess.io/vitess/go/vt/proto/query"
topodata "vitess.io/vitess/go/vt/proto/topodata"
@@ -157,7 +159,9 @@ type Session struct {
// DDL strategy
DDLStrategy string `protobuf:"bytes,21,opt,name=DDLStrategy,proto3" json:"DDLStrategy,omitempty"`
// Session UUID
- SessionUUID string `protobuf:"bytes,22,opt,name=SessionUUID,proto3" json:"SessionUUID,omitempty"`
+ SessionUUID string `protobuf:"bytes,22,opt,name=SessionUUID,proto3" json:"SessionUUID,omitempty"`
+ // enable_system_settings defines if we can use reserved connections.
+ EnableSystemSettings bool `protobuf:"varint,23,opt,name=enable_system_settings,json=enableSystemSettings,proto3" json:"enable_system_settings,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@@ -169,18 +173,26 @@ func (*Session) ProtoMessage() {}
func (*Session) Descriptor() ([]byte, []int) {
return fileDescriptor_aab96496ceaf1ebb, []int{0}
}
-
func (m *Session) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Session.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Session) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Session.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Session.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Session) XXX_Merge(src proto.Message) {
xxx_messageInfo_Session.Merge(m, src)
}
func (m *Session) XXX_Size() int {
- return xxx_messageInfo_Session.Size(m)
+ return m.Size()
}
func (m *Session) XXX_DiscardUnknown() {
xxx_messageInfo_Session.DiscardUnknown(m)
@@ -335,6 +347,13 @@ func (m *Session) GetSessionUUID() string {
return ""
}
+func (m *Session) GetEnableSystemSettings() bool {
+ if m != nil {
+ return m.EnableSystemSettings
+ }
+ return false
+}
+
type Session_ShardSession struct {
Target *query.Target `protobuf:"bytes,1,opt,name=target,proto3" json:"target,omitempty"`
TransactionId int64 `protobuf:"varint,2,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"`
@@ -352,18 +371,26 @@ func (*Session_ShardSession) ProtoMessage() {}
func (*Session_ShardSession) Descriptor() ([]byte, []int) {
return fileDescriptor_aab96496ceaf1ebb, []int{0, 0}
}
-
func (m *Session_ShardSession) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Session_ShardSession.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Session_ShardSession) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Session_ShardSession.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Session_ShardSession.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Session_ShardSession) XXX_Merge(src proto.Message) {
xxx_messageInfo_Session_ShardSession.Merge(m, src)
}
func (m *Session_ShardSession) XXX_Size() int {
- return xxx_messageInfo_Session_ShardSession.Size(m)
+ return m.Size()
}
func (m *Session_ShardSession) XXX_DiscardUnknown() {
xxx_messageInfo_Session_ShardSession.DiscardUnknown(m)
@@ -416,18 +443,26 @@ func (*ReadAfterWrite) ProtoMessage() {}
func (*ReadAfterWrite) Descriptor() ([]byte, []int) {
return fileDescriptor_aab96496ceaf1ebb, []int{1}
}
-
func (m *ReadAfterWrite) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ReadAfterWrite.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ReadAfterWrite) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ReadAfterWrite.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ReadAfterWrite.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ReadAfterWrite) XXX_Merge(src proto.Message) {
xxx_messageInfo_ReadAfterWrite.Merge(m, src)
}
func (m *ReadAfterWrite) XXX_Size() int {
- return xxx_messageInfo_ReadAfterWrite.Size(m)
+ return m.Size()
}
func (m *ReadAfterWrite) XXX_DiscardUnknown() {
xxx_messageInfo_ReadAfterWrite.DiscardUnknown(m)
@@ -481,18 +516,26 @@ func (*ExecuteRequest) ProtoMessage() {}
func (*ExecuteRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_aab96496ceaf1ebb, []int{2}
}
-
func (m *ExecuteRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ExecuteRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ExecuteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ExecuteRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ExecuteRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ExecuteRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ExecuteRequest.Merge(m, src)
}
func (m *ExecuteRequest) XXX_Size() int {
- return xxx_messageInfo_ExecuteRequest.Size(m)
+ return m.Size()
}
func (m *ExecuteRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ExecuteRequest.DiscardUnknown(m)
@@ -563,18 +606,26 @@ func (*ExecuteResponse) ProtoMessage() {}
func (*ExecuteResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_aab96496ceaf1ebb, []int{3}
}
-
func (m *ExecuteResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ExecuteResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ExecuteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ExecuteResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ExecuteResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ExecuteResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ExecuteResponse.Merge(m, src)
}
func (m *ExecuteResponse) XXX_Size() int {
- return xxx_messageInfo_ExecuteResponse.Size(m)
+ return m.Size()
}
func (m *ExecuteResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ExecuteResponse.DiscardUnknown(m)
@@ -629,18 +680,26 @@ func (*ExecuteBatchRequest) ProtoMessage() {}
func (*ExecuteBatchRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_aab96496ceaf1ebb, []int{4}
}
-
func (m *ExecuteBatchRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ExecuteBatchRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ExecuteBatchRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ExecuteBatchRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ExecuteBatchRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ExecuteBatchRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ExecuteBatchRequest.Merge(m, src)
}
func (m *ExecuteBatchRequest) XXX_Size() int {
- return xxx_messageInfo_ExecuteBatchRequest.Size(m)
+ return m.Size()
}
func (m *ExecuteBatchRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ExecuteBatchRequest.DiscardUnknown(m)
@@ -718,18 +777,26 @@ func (*ExecuteBatchResponse) ProtoMessage() {}
func (*ExecuteBatchResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_aab96496ceaf1ebb, []int{5}
}
-
func (m *ExecuteBatchResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ExecuteBatchResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ExecuteBatchResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ExecuteBatchResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ExecuteBatchResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ExecuteBatchResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ExecuteBatchResponse.Merge(m, src)
}
func (m *ExecuteBatchResponse) XXX_Size() int {
- return xxx_messageInfo_ExecuteBatchResponse.Size(m)
+ return m.Size()
}
func (m *ExecuteBatchResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ExecuteBatchResponse.DiscardUnknown(m)
@@ -783,18 +850,26 @@ func (*StreamExecuteRequest) ProtoMessage() {}
func (*StreamExecuteRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_aab96496ceaf1ebb, []int{6}
}
-
func (m *StreamExecuteRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StreamExecuteRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *StreamExecuteRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StreamExecuteRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_StreamExecuteRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *StreamExecuteRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_StreamExecuteRequest.Merge(m, src)
}
func (m *StreamExecuteRequest) XXX_Size() int {
- return xxx_messageInfo_StreamExecuteRequest.Size(m)
+ return m.Size()
}
func (m *StreamExecuteRequest) XXX_DiscardUnknown() {
xxx_messageInfo_StreamExecuteRequest.DiscardUnknown(m)
@@ -863,18 +938,26 @@ func (*StreamExecuteResponse) ProtoMessage() {}
func (*StreamExecuteResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_aab96496ceaf1ebb, []int{7}
}
-
func (m *StreamExecuteResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_StreamExecuteResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *StreamExecuteResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_StreamExecuteResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_StreamExecuteResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *StreamExecuteResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_StreamExecuteResponse.Merge(m, src)
}
func (m *StreamExecuteResponse) XXX_Size() int {
- return xxx_messageInfo_StreamExecuteResponse.Size(m)
+ return m.Size()
}
func (m *StreamExecuteResponse) XXX_DiscardUnknown() {
xxx_messageInfo_StreamExecuteResponse.DiscardUnknown(m)
@@ -907,18 +990,26 @@ func (*ResolveTransactionRequest) ProtoMessage() {}
func (*ResolveTransactionRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_aab96496ceaf1ebb, []int{8}
}
-
func (m *ResolveTransactionRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ResolveTransactionRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ResolveTransactionRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ResolveTransactionRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ResolveTransactionRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ResolveTransactionRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ResolveTransactionRequest.Merge(m, src)
}
func (m *ResolveTransactionRequest) XXX_Size() int {
- return xxx_messageInfo_ResolveTransactionRequest.Size(m)
+ return m.Size()
}
func (m *ResolveTransactionRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ResolveTransactionRequest.DiscardUnknown(m)
@@ -953,18 +1044,26 @@ func (*ResolveTransactionResponse) ProtoMessage() {}
func (*ResolveTransactionResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_aab96496ceaf1ebb, []int{9}
}
-
func (m *ResolveTransactionResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ResolveTransactionResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ResolveTransactionResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ResolveTransactionResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ResolveTransactionResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ResolveTransactionResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ResolveTransactionResponse.Merge(m, src)
}
func (m *ResolveTransactionResponse) XXX_Size() int {
- return xxx_messageInfo_ResolveTransactionResponse.Size(m)
+ return m.Size()
}
func (m *ResolveTransactionResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ResolveTransactionResponse.DiscardUnknown(m)
@@ -972,6 +1071,53 @@ func (m *ResolveTransactionResponse) XXX_DiscardUnknown() {
var xxx_messageInfo_ResolveTransactionResponse proto.InternalMessageInfo
+type VStreamFlags struct {
+ MinimizeSkew bool `protobuf:"varint,1,opt,name=minimize_skew,json=minimizeSkew,proto3" json:"minimize_skew,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *VStreamFlags) Reset() { *m = VStreamFlags{} }
+func (m *VStreamFlags) String() string { return proto.CompactTextString(m) }
+func (*VStreamFlags) ProtoMessage() {}
+func (*VStreamFlags) Descriptor() ([]byte, []int) {
+ return fileDescriptor_aab96496ceaf1ebb, []int{10}
+}
+func (m *VStreamFlags) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *VStreamFlags) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_VStreamFlags.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *VStreamFlags) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_VStreamFlags.Merge(m, src)
+}
+func (m *VStreamFlags) XXX_Size() int {
+ return m.Size()
+}
+func (m *VStreamFlags) XXX_DiscardUnknown() {
+ xxx_messageInfo_VStreamFlags.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_VStreamFlags proto.InternalMessageInfo
+
+func (m *VStreamFlags) GetMinimizeSkew() bool {
+ if m != nil {
+ return m.MinimizeSkew
+ }
+ return false
+}
+
// VStreamRequest is the payload for VStream.
type VStreamRequest struct {
CallerId *vtrpc.CallerID `protobuf:"bytes,1,opt,name=caller_id,json=callerId,proto3" json:"caller_id,omitempty"`
@@ -981,6 +1127,7 @@ type VStreamRequest struct {
// position is of the form 'ks1:0@MySQL56/|ks2:-80@MySQL56/'.
Vgtid *binlogdata.VGtid `protobuf:"bytes,3,opt,name=vgtid,proto3" json:"vgtid,omitempty"`
Filter *binlogdata.Filter `protobuf:"bytes,4,opt,name=filter,proto3" json:"filter,omitempty"`
+ Flags *VStreamFlags `protobuf:"bytes,5,opt,name=flags,proto3" json:"flags,omitempty"`
XXX_NoUnkeyedLiteral struct{} `json:"-"`
XXX_unrecognized []byte `json:"-"`
XXX_sizecache int32 `json:"-"`
@@ -990,20 +1137,28 @@ func (m *VStreamRequest) Reset() { *m = VStreamRequest{} }
func (m *VStreamRequest) String() string { return proto.CompactTextString(m) }
func (*VStreamRequest) ProtoMessage() {}
func (*VStreamRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor_aab96496ceaf1ebb, []int{10}
+ return fileDescriptor_aab96496ceaf1ebb, []int{11}
}
-
func (m *VStreamRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_VStreamRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *VStreamRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_VStreamRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_VStreamRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *VStreamRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_VStreamRequest.Merge(m, src)
}
func (m *VStreamRequest) XXX_Size() int {
- return xxx_messageInfo_VStreamRequest.Size(m)
+ return m.Size()
}
func (m *VStreamRequest) XXX_DiscardUnknown() {
xxx_messageInfo_VStreamRequest.DiscardUnknown(m)
@@ -1039,6 +1194,13 @@ func (m *VStreamRequest) GetFilter() *binlogdata.Filter {
return nil
}
+func (m *VStreamRequest) GetFlags() *VStreamFlags {
+ if m != nil {
+ return m.Flags
+ }
+ return nil
+}
+
// VStreamResponse is streamed by VStream.
type VStreamResponse struct {
Events []*binlogdata.VEvent `protobuf:"bytes,1,rep,name=events,proto3" json:"events,omitempty"`
@@ -1051,20 +1213,28 @@ func (m *VStreamResponse) Reset() { *m = VStreamResponse{} }
func (m *VStreamResponse) String() string { return proto.CompactTextString(m) }
func (*VStreamResponse) ProtoMessage() {}
func (*VStreamResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor_aab96496ceaf1ebb, []int{11}
+ return fileDescriptor_aab96496ceaf1ebb, []int{12}
}
-
func (m *VStreamResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_VStreamResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *VStreamResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_VStreamResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_VStreamResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *VStreamResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_VStreamResponse.Merge(m, src)
}
func (m *VStreamResponse) XXX_Size() int {
- return xxx_messageInfo_VStreamResponse.Size(m)
+ return m.Size()
}
func (m *VStreamResponse) XXX_DiscardUnknown() {
xxx_messageInfo_VStreamResponse.DiscardUnknown(m)
@@ -1095,6 +1265,7 @@ func init() {
proto.RegisterType((*StreamExecuteResponse)(nil), "vtgate.StreamExecuteResponse")
proto.RegisterType((*ResolveTransactionRequest)(nil), "vtgate.ResolveTransactionRequest")
proto.RegisterType((*ResolveTransactionResponse)(nil), "vtgate.ResolveTransactionResponse")
+ proto.RegisterType((*VStreamFlags)(nil), "vtgate.VStreamFlags")
proto.RegisterType((*VStreamRequest)(nil), "vtgate.VStreamRequest")
proto.RegisterType((*VStreamResponse)(nil), "vtgate.VStreamResponse")
}
@@ -1102,90 +1273,4559 @@ func init() {
func init() { proto.RegisterFile("vtgate.proto", fileDescriptor_aab96496ceaf1ebb) }
var fileDescriptor_aab96496ceaf1ebb = []byte{
- // 1357 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0x6d, 0x6f, 0x1b, 0xc5,
- 0x13, 0xef, 0xf9, 0xd9, 0xe3, 0xa7, 0xcb, 0xe6, 0xe1, 0x7f, 0xcd, 0xbf, 0x80, 0xe5, 0xb6, 0xaa,
- 0x5b, 0x50, 0x02, 0x41, 0x40, 0x85, 0x40, 0x90, 0xd8, 0x6e, 0x71, 0x95, 0xd4, 0x61, 0xed, 0x24,
- 0x12, 0x02, 0x9d, 0x2e, 0xbe, 0x8d, 0xb3, 0x8a, 0x73, 0xeb, 0xee, 0xae, 0x1d, 0xfc, 0x29, 0x78,
- 0x0f, 0x1f, 0x80, 0x37, 0xbc, 0xe7, 0x3b, 0xf0, 0x8e, 0x6f, 0x84, 0x76, 0xf7, 0xce, 0x3e, 0xbb,
- 0x81, 0xa6, 0xad, 0xfa, 0xc6, 0xba, 0x9d, 0xdf, 0xec, 0xec, 0xcc, 0xfc, 0x66, 0x76, 0xd6, 0x50,
- 0x9c, 0xc8, 0x81, 0x27, 0xc9, 0xd6, 0x88, 0x33, 0xc9, 0x50, 0xc6, 0xac, 0x36, 0xed, 0x53, 0x1a,
- 0x0c, 0xd9, 0xc0, 0xf7, 0xa4, 0x67, 0x90, 0xcd, 0xc2, 0x8b, 0x31, 0xe1, 0xd3, 0x70, 0x51, 0x96,
- 0x6c, 0xc4, 0xe2, 0xe0, 0x44, 0xf2, 0x51, 0xdf, 0x2c, 0x6a, 0xbf, 0x15, 0x20, 0xdb, 0x25, 0x42,
- 0x50, 0x16, 0xa0, 0xfb, 0x50, 0xa6, 0x81, 0x2b, 0xb9, 0x17, 0x08, 0xaf, 0x2f, 0x29, 0x0b, 0x1c,
- 0xab, 0x6a, 0xd5, 0x73, 0xb8, 0x44, 0x83, 0xde, 0x5c, 0x88, 0x1a, 0x50, 0x16, 0xe7, 0x1e, 0xf7,
- 0x5d, 0x61, 0xf6, 0x09, 0x27, 0x51, 0x4d, 0xd6, 0x0b, 0x3b, 0x77, 0xb6, 0x42, 0xef, 0x42, 0x7b,
- 0x5b, 0x5d, 0xa5, 0x15, 0x2e, 0x70, 0x49, 0xc4, 0x56, 0x02, 0xbd, 0x0f, 0xe0, 0x8d, 0x25, 0xeb,
- 0xb3, 0xcb, 0x4b, 0x2a, 0x9d, 0x94, 0x3e, 0x27, 0x26, 0x41, 0x77, 0xa1, 0x24, 0x3d, 0x3e, 0x20,
- 0xd2, 0x15, 0x92, 0xd3, 0x60, 0xe0, 0xa4, 0xab, 0x56, 0x3d, 0x8f, 0x8b, 0x46, 0xd8, 0xd5, 0x32,
- 0xb4, 0x0d, 0x59, 0x36, 0x92, 0xda, 0x85, 0x4c, 0xd5, 0xaa, 0x17, 0x76, 0xd6, 0xb7, 0x4c, 0xe0,
- 0xad, 0x9f, 0x49, 0x7f, 0x2c, 0x49, 0xc7, 0x80, 0x38, 0xd2, 0x42, 0x7b, 0x60, 0xc7, 0xc2, 0x73,
- 0x2f, 0x99, 0x4f, 0x9c, 0x6c, 0xd5, 0xaa, 0x97, 0x77, 0xfe, 0x17, 0x39, 0x1f, 0x8b, 0xf4, 0x80,
- 0xf9, 0x04, 0x57, 0xe4, 0xa2, 0x00, 0x6d, 0x43, 0xee, 0xca, 0xe3, 0x01, 0x0d, 0x06, 0xc2, 0xc9,
- 0xe9, 0xc0, 0x57, 0xc3, 0x53, 0xbf, 0x57, 0xbf, 0x27, 0x06, 0xc3, 0x33, 0x25, 0xf4, 0x0d, 0x14,
- 0x47, 0x9c, 0xcc, 0xb3, 0x95, 0xbf, 0x41, 0xb6, 0x0a, 0x23, 0x4e, 0x66, 0xb9, 0xda, 0x85, 0xd2,
- 0x88, 0x09, 0x39, 0xb7, 0x00, 0x37, 0xb0, 0x50, 0x54, 0x5b, 0x66, 0x26, 0xee, 0x41, 0x79, 0xe8,
- 0x09, 0xe9, 0xd2, 0x40, 0x10, 0x2e, 0x5d, 0xea, 0x3b, 0x85, 0xaa, 0x55, 0x4f, 0xe1, 0xa2, 0x92,
- 0xb6, 0xb5, 0xb0, 0xed, 0xa3, 0xf7, 0x00, 0xce, 0xd8, 0x38, 0xf0, 0x5d, 0xce, 0xae, 0x84, 0x53,
- 0xd4, 0x1a, 0x79, 0x2d, 0xc1, 0xec, 0x4a, 0x20, 0x17, 0x36, 0xc6, 0x82, 0x70, 0xd7, 0x27, 0x67,
- 0x34, 0x20, 0xbe, 0x3b, 0xf1, 0x38, 0xf5, 0x4e, 0x87, 0x44, 0x38, 0x25, 0xed, 0xd0, 0xc3, 0x65,
- 0x87, 0x8e, 0x04, 0xe1, 0x4d, 0xa3, 0x7c, 0x1c, 0xe9, 0xb6, 0x02, 0xc9, 0xa7, 0x78, 0x6d, 0x7c,
- 0x0d, 0x84, 0x3a, 0x60, 0x8b, 0xa9, 0x90, 0xe4, 0x32, 0x66, 0xba, 0xac, 0x4d, 0xdf, 0x7b, 0x29,
- 0x56, 0xad, 0xb7, 0x64, 0xb5, 0x22, 0x16, 0xa5, 0xe8, 0xff, 0x90, 0xe7, 0xec, 0xca, 0xed, 0xb3,
- 0x71, 0x20, 0x9d, 0x4a, 0xd5, 0xaa, 0x27, 0x71, 0x8e, 0xb3, 0xab, 0x86, 0x5a, 0xab, 0x12, 0x14,
- 0xde, 0x84, 0x8c, 0x18, 0x0d, 0xa4, 0x70, 0xec, 0x6a, 0xb2, 0x9e, 0xc7, 0x31, 0x09, 0xaa, 0x83,
- 0x4d, 0x03, 0x97, 0x13, 0x41, 0xf8, 0x84, 0xf8, 0x6e, 0x9f, 0x05, 0x81, 0xb3, 0xa2, 0x0b, 0xb5,
- 0x4c, 0x03, 0x1c, 0x8a, 0x1b, 0x2c, 0x08, 0x14, 0xc3, 0x43, 0xd6, 0xbf, 0x88, 0x08, 0x72, 0x90,
- 0x2e, 0xc6, 0x57, 0x30, 0xac, 0x76, 0x44, 0x9d, 0xb7, 0x05, 0xab, 0x9a, 0x1e, 0x6d, 0xe5, 0x9c,
- 0x78, 0x5c, 0x9e, 0x12, 0x4f, 0x3a, 0xab, 0xda, 0xe3, 0x15, 0x05, 0xed, 0xb3, 0xfe, 0xc5, 0x77,
- 0x11, 0x80, 0xbe, 0x05, 0x9b, 0x13, 0xcf, 0x77, 0xbd, 0x33, 0x49, 0xb8, 0x7b, 0xc5, 0xa9, 0x24,
- 0xce, 0x9a, 0x3e, 0x74, 0x23, 0x3a, 0x14, 0x13, 0xcf, 0xdf, 0x55, 0xf0, 0x89, 0x42, 0x71, 0x99,
- 0x2f, 0xac, 0x51, 0x15, 0x0a, 0xcd, 0xe6, 0x7e, 0x57, 0x72, 0x4f, 0x92, 0xc1, 0xd4, 0x59, 0xd7,
- 0xdd, 0x15, 0x17, 0x29, 0x8d, 0xd0, 0xbd, 0xa3, 0xa3, 0x76, 0xd3, 0xd9, 0x30, 0x1a, 0x31, 0xd1,
- 0xe6, 0x9f, 0x16, 0x14, 0xe3, 0x31, 0xa1, 0xfb, 0x90, 0x31, 0xfd, 0xa9, 0x2f, 0x8e, 0xc2, 0x4e,
- 0x29, 0x6c, 0x8c, 0x9e, 0x16, 0xe2, 0x10, 0x54, 0xf7, 0x4c, 0xbc, 0x0b, 0xa9, 0xef, 0x24, 0x74,
- 0xa0, 0xa5, 0x98, 0xb4, 0xed, 0xa3, 0xc7, 0x50, 0x94, 0x8a, 0x46, 0xe9, 0x7a, 0x43, 0xea, 0x09,
- 0x27, 0x19, 0xb6, 0xf8, 0xec, 0x3a, 0xeb, 0x69, 0x74, 0x57, 0x81, 0xb8, 0x20, 0xe7, 0x0b, 0xf4,
- 0x01, 0x14, 0x66, 0xb4, 0x51, 0x5f, 0xdf, 0x2e, 0x49, 0x0c, 0x91, 0xa8, 0xed, 0x6f, 0xfe, 0x08,
- 0xb7, 0xff, 0xb5, 0x36, 0x91, 0x0d, 0xc9, 0x0b, 0x32, 0xd5, 0x21, 0xe4, 0xb1, 0xfa, 0x44, 0x0f,
- 0x21, 0x3d, 0xf1, 0x86, 0x63, 0xa2, 0xfd, 0x9c, 0xf7, 0xfb, 0x1e, 0x0d, 0x66, 0x7b, 0xb1, 0xd1,
- 0xf8, 0x32, 0xf1, 0xd8, 0xda, 0xdc, 0x83, 0xb5, 0xeb, 0xca, 0xf3, 0x1a, 0xc3, 0x6b, 0x71, 0xc3,
- 0xf9, 0x98, 0x8d, 0x67, 0xa9, 0x5c, 0xd2, 0x4e, 0xd5, 0xfe, 0xb0, 0xa0, 0xbc, 0x48, 0x24, 0xfa,
- 0x04, 0xd6, 0x97, 0xa9, 0x77, 0x07, 0x92, 0xfa, 0xa1, 0x59, 0xb4, 0xc8, 0xf3, 0x53, 0x49, 0x7d,
- 0xf4, 0x05, 0x38, 0x2f, 0x6d, 0x91, 0xf4, 0x92, 0xb0, 0xb1, 0xd4, 0x07, 0x5b, 0x78, 0x7d, 0x71,
- 0x57, 0xcf, 0x80, 0xaa, 0x2c, 0xc3, 0x92, 0x56, 0x53, 0xa1, 0x7f, 0xa1, 0x0f, 0x32, 0x44, 0xe4,
- 0xf0, 0x4a, 0x08, 0xf5, 0x14, 0xa2, 0xce, 0x11, 0xb5, 0xdf, 0x13, 0x50, 0x0e, 0xaf, 0x5e, 0x4c,
- 0x5e, 0x8c, 0x89, 0x90, 0xe8, 0x23, 0xc8, 0xf7, 0xbd, 0xe1, 0x90, 0x70, 0x37, 0x74, 0xb1, 0xb0,
- 0x53, 0xd9, 0x32, 0x03, 0xa8, 0xa1, 0xe5, 0xed, 0x26, 0xce, 0x19, 0x8d, 0xb6, 0x8f, 0x1e, 0x42,
- 0x36, 0xea, 0xa1, 0xc4, 0x4c, 0x37, 0xde, 0x43, 0x38, 0xc2, 0xd1, 0x03, 0x48, 0x6b, 0x16, 0xc2,
- 0xb2, 0x58, 0x89, 0x38, 0x51, 0xb7, 0x95, 0xbe, 0x88, 0xb1, 0xc1, 0xd1, 0x67, 0x10, 0xd6, 0x86,
- 0x2b, 0xa7, 0x23, 0xa2, 0x8b, 0xa1, 0xbc, 0xb3, 0xb6, 0x5c, 0x45, 0xbd, 0xe9, 0x88, 0x60, 0x90,
- 0xb3, 0x6f, 0x55, 0xa4, 0x17, 0x64, 0x2a, 0x46, 0x5e, 0x9f, 0xb8, 0x7a, 0x74, 0xe9, 0x11, 0x93,
- 0xc7, 0xa5, 0x48, 0xaa, 0x2b, 0x3f, 0x3e, 0x82, 0xb2, 0x37, 0x19, 0x41, 0xcf, 0x52, 0xb9, 0xb4,
- 0x9d, 0xa9, 0xfd, 0x62, 0x41, 0x65, 0x96, 0x29, 0x31, 0x62, 0x81, 0x50, 0x27, 0xa6, 0x09, 0xe7,
- 0x8c, 0x2f, 0xa5, 0x09, 0x1f, 0x36, 0x5a, 0x4a, 0x8c, 0x0d, 0xfa, 0x3a, 0x39, 0x7a, 0x04, 0x19,
- 0x4e, 0xc4, 0x78, 0x28, 0xc3, 0x24, 0xa1, 0xf8, 0xa0, 0xc2, 0x1a, 0xc1, 0xa1, 0x46, 0xed, 0xef,
- 0x04, 0xac, 0x86, 0x1e, 0xed, 0x79, 0xb2, 0x7f, 0xfe, 0xce, 0x09, 0xfc, 0x10, 0xb2, 0xca, 0x1b,
- 0x4a, 0x54, 0x41, 0x25, 0xaf, 0xa7, 0x30, 0xd2, 0x78, 0x0b, 0x12, 0x3d, 0xb1, 0xf0, 0xa2, 0x49,
- 0x9b, 0x17, 0x8d, 0x27, 0xe2, 0x2f, 0x9a, 0x77, 0xc4, 0x75, 0xed, 0x57, 0x0b, 0xd6, 0x16, 0x73,
- 0xfa, 0xce, 0xa8, 0xfe, 0x18, 0xb2, 0x86, 0xc8, 0x28, 0x9b, 0x1b, 0xa1, 0x6f, 0x86, 0xe6, 0x13,
- 0x2a, 0xcf, 0x8d, 0xe9, 0x48, 0x4d, 0x35, 0xeb, 0x5a, 0x57, 0x72, 0xe2, 0x5d, 0xbe, 0x55, 0xcb,
- 0xce, 0xfa, 0x30, 0xf1, 0x7a, 0x7d, 0x98, 0x7c, 0xe3, 0x3e, 0x4c, 0xbd, 0x82, 0x9b, 0xf4, 0x8d,
- 0x9e, 0x82, 0xb1, 0xdc, 0x66, 0xfe, 0x3b, 0xb7, 0xb5, 0x06, 0xac, 0x2f, 0x25, 0x2a, 0xa4, 0x71,
- 0xde, 0x5f, 0xd6, 0x2b, 0xfb, 0xeb, 0x27, 0xb8, 0x8d, 0x89, 0x60, 0xc3, 0x09, 0x89, 0x55, 0xde,
- 0x9b, 0xa5, 0x1c, 0x41, 0xca, 0x97, 0xe1, 0xd4, 0xcc, 0x63, 0xfd, 0x5d, 0xbb, 0x03, 0x9b, 0xd7,
- 0x99, 0x37, 0x8e, 0xd6, 0xfe, 0xb2, 0xa0, 0x7c, 0x6c, 0x62, 0x78, 0xb3, 0x23, 0x97, 0xc8, 0x4b,
- 0xdc, 0x90, 0xbc, 0x07, 0x90, 0x9e, 0xe8, 0xe1, 0x14, 0x5d, 0xd2, 0xb1, 0x7f, 0x2a, 0xc7, 0x6a,
- 0x66, 0x60, 0x83, 0xab, 0x4c, 0x9e, 0xd1, 0xa1, 0x24, 0x5c, 0xb3, 0xab, 0x32, 0x19, 0xd3, 0x7c,
- 0xa2, 0x11, 0x1c, 0x6a, 0xd4, 0xbe, 0x86, 0xca, 0x2c, 0x96, 0x39, 0x11, 0x64, 0x42, 0xd4, 0x33,
- 0xce, 0xd2, 0xc5, 0xbf, 0xb0, 0xfd, 0xb8, 0xa5, 0x20, 0x1c, 0x6a, 0x3c, 0x6a, 0x42, 0x65, 0xe9,
- 0x8d, 0x8f, 0x2a, 0x50, 0x38, 0x7a, 0xde, 0x3d, 0x6c, 0x35, 0xda, 0x4f, 0xda, 0xad, 0xa6, 0x7d,
- 0x0b, 0x01, 0x64, 0xba, 0xed, 0xe7, 0x4f, 0xf7, 0x5b, 0xb6, 0x85, 0xf2, 0x90, 0x3e, 0x38, 0xda,
- 0xef, 0xb5, 0xed, 0x84, 0xfa, 0xec, 0x9d, 0x74, 0x0e, 0x1b, 0x76, 0xf2, 0xd1, 0x57, 0x50, 0x68,
- 0xe8, 0x7f, 0x2a, 0x1d, 0xee, 0x13, 0xae, 0x36, 0x3c, 0xef, 0xe0, 0x83, 0xdd, 0x7d, 0xfb, 0x16,
- 0xca, 0x42, 0xf2, 0x10, 0xab, 0x9d, 0x39, 0x48, 0x1d, 0x76, 0xba, 0x3d, 0x3b, 0x81, 0xca, 0x00,
- 0xbb, 0x47, 0xbd, 0x4e, 0xa3, 0x73, 0x70, 0xd0, 0xee, 0xd9, 0xc9, 0xbd, 0xcf, 0xa1, 0x42, 0xd9,
- 0xd6, 0x84, 0x4a, 0x22, 0x84, 0xf9, 0x23, 0xf6, 0xc3, 0xdd, 0x70, 0x45, 0xd9, 0xb6, 0xf9, 0xda,
- 0x1e, 0xb0, 0xed, 0x89, 0xdc, 0xd6, 0xe8, 0xb6, 0x29, 0xcd, 0xd3, 0x8c, 0x5e, 0x7d, 0xfa, 0x4f,
- 0x00, 0x00, 0x00, 0xff, 0xff, 0x90, 0xad, 0x39, 0x45, 0x08, 0x0e, 0x00, 0x00,
+ // 1454 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x57, 0xdd, 0x6e, 0x1b, 0xb7,
+ 0x12, 0xce, 0xea, 0x5f, 0xa3, 0xbf, 0x35, 0x2d, 0x3b, 0x1b, 0x9f, 0x1c, 0x1f, 0x41, 0x49, 0x10,
+ 0xc5, 0xa7, 0xb0, 0x5b, 0xa7, 0x45, 0x83, 0xa2, 0x45, 0x6b, 0xcb, 0x76, 0xaa, 0xc0, 0x8e, 0x5c,
+ 0x4a, 0xb6, 0x81, 0xa2, 0xc5, 0x62, 0xad, 0xa5, 0x65, 0xc2, 0xd2, 0xae, 0x42, 0x52, 0x52, 0xd5,
+ 0x97, 0xe8, 0x6d, 0xd1, 0x17, 0xe8, 0x4d, 0xef, 0xfb, 0x0a, 0xbd, 0x6c, 0xde, 0xa0, 0x48, 0xdf,
+ 0xa1, 0xd7, 0x05, 0xb9, 0x5c, 0x79, 0xa5, 0xb8, 0x8d, 0x93, 0x20, 0x37, 0x82, 0x38, 0xdf, 0x70,
+ 0x38, 0xfc, 0xbe, 0x19, 0x92, 0x0b, 0xf9, 0x91, 0xe8, 0x3a, 0x82, 0xac, 0x0f, 0x98, 0x2f, 0x7c,
+ 0x94, 0x0a, 0x46, 0x2b, 0xe6, 0x29, 0xf5, 0x7a, 0x7e, 0xd7, 0x75, 0x84, 0x13, 0x20, 0x2b, 0xb9,
+ 0x67, 0x43, 0xc2, 0x26, 0x7a, 0x50, 0x14, 0xfe, 0xc0, 0x8f, 0x82, 0x23, 0xc1, 0x06, 0x9d, 0x60,
+ 0x50, 0x7d, 0x9e, 0x83, 0x74, 0x8b, 0x70, 0x4e, 0x7d, 0x0f, 0xdd, 0x83, 0x22, 0xf5, 0x6c, 0xc1,
+ 0x1c, 0x8f, 0x3b, 0x1d, 0x41, 0x7d, 0xcf, 0x32, 0x2a, 0x46, 0x2d, 0x83, 0x0b, 0xd4, 0x6b, 0x5f,
+ 0x1a, 0x51, 0x1d, 0x8a, 0xfc, 0xdc, 0x61, 0xae, 0xcd, 0x83, 0x79, 0xdc, 0x8a, 0x55, 0xe2, 0xb5,
+ 0xdc, 0xe6, 0xed, 0x75, 0x9d, 0x9d, 0x8e, 0xb7, 0xde, 0x92, 0x5e, 0x7a, 0x80, 0x0b, 0x3c, 0x32,
+ 0xe2, 0x68, 0x15, 0xc0, 0x19, 0x0a, 0xbf, 0xe3, 0xf7, 0xfb, 0x54, 0x58, 0x09, 0xb5, 0x4e, 0xc4,
+ 0x82, 0xee, 0x40, 0x41, 0x38, 0xac, 0x4b, 0x84, 0xcd, 0x05, 0xa3, 0x5e, 0xd7, 0x4a, 0x56, 0x8c,
+ 0x5a, 0x16, 0xe7, 0x03, 0x63, 0x4b, 0xd9, 0xd0, 0x06, 0xa4, 0xfd, 0x81, 0x50, 0x29, 0xa4, 0x2a,
+ 0x46, 0x2d, 0xb7, 0xb9, 0xb4, 0x1e, 0x6c, 0x7c, 0xf7, 0x3b, 0xd2, 0x19, 0x0a, 0xd2, 0x0c, 0x40,
+ 0x1c, 0x7a, 0xa1, 0x6d, 0x30, 0x23, 0xdb, 0xb3, 0xfb, 0xbe, 0x4b, 0xac, 0x74, 0xc5, 0xa8, 0x15,
+ 0x37, 0x6f, 0x86, 0xc9, 0x47, 0x76, 0x7a, 0xe0, 0xbb, 0x04, 0x97, 0xc4, 0xac, 0x01, 0x6d, 0x40,
+ 0x66, 0xec, 0x30, 0x8f, 0x7a, 0x5d, 0x6e, 0x65, 0xd4, 0xc6, 0x17, 0xf5, 0xaa, 0x5f, 0xc9, 0xdf,
+ 0x93, 0x00, 0xc3, 0x53, 0x27, 0xf4, 0x39, 0xe4, 0x07, 0x8c, 0x5c, 0xb2, 0x95, 0xbd, 0x06, 0x5b,
+ 0xb9, 0x01, 0x23, 0x53, 0xae, 0xb6, 0xa0, 0x30, 0xf0, 0xb9, 0xb8, 0x8c, 0x00, 0xd7, 0x88, 0x90,
+ 0x97, 0x53, 0xa6, 0x21, 0xee, 0x42, 0xb1, 0xe7, 0x70, 0x61, 0x53, 0x8f, 0x13, 0x26, 0x6c, 0xea,
+ 0x5a, 0xb9, 0x8a, 0x51, 0x4b, 0xe0, 0xbc, 0xb4, 0x36, 0x94, 0xb1, 0xe1, 0xa2, 0xff, 0x02, 0x9c,
+ 0xf9, 0x43, 0xcf, 0xb5, 0x99, 0x3f, 0xe6, 0x56, 0x5e, 0x79, 0x64, 0x95, 0x05, 0xfb, 0x63, 0x8e,
+ 0x6c, 0x58, 0x1e, 0x72, 0xc2, 0x6c, 0x97, 0x9c, 0x51, 0x8f, 0xb8, 0xf6, 0xc8, 0x61, 0xd4, 0x39,
+ 0xed, 0x11, 0x6e, 0x15, 0x54, 0x42, 0x0f, 0xe6, 0x13, 0x3a, 0xe2, 0x84, 0xed, 0x04, 0xce, 0xc7,
+ 0xa1, 0xef, 0xae, 0x27, 0xd8, 0x04, 0x97, 0x87, 0x57, 0x40, 0xa8, 0x09, 0x26, 0x9f, 0x70, 0x41,
+ 0xfa, 0x91, 0xd0, 0x45, 0x15, 0xfa, 0xee, 0x4b, 0x7b, 0x55, 0x7e, 0x73, 0x51, 0x4b, 0x7c, 0xd6,
+ 0x8a, 0xfe, 0x03, 0x59, 0xe6, 0x8f, 0xed, 0x8e, 0x3f, 0xf4, 0x84, 0x55, 0xaa, 0x18, 0xb5, 0x38,
+ 0xce, 0x30, 0x7f, 0x5c, 0x97, 0x63, 0x59, 0x82, 0xdc, 0x19, 0x91, 0x81, 0x4f, 0x3d, 0xc1, 0x2d,
+ 0xb3, 0x12, 0xaf, 0x65, 0x71, 0xc4, 0x82, 0x6a, 0x60, 0x52, 0xcf, 0x66, 0x84, 0x13, 0x36, 0x22,
+ 0xae, 0xdd, 0xf1, 0x3d, 0xcf, 0x5a, 0x50, 0x85, 0x5a, 0xa4, 0x1e, 0xd6, 0xe6, 0xba, 0xef, 0x79,
+ 0x52, 0xe1, 0x9e, 0xdf, 0xb9, 0x08, 0x05, 0xb2, 0x90, 0x2a, 0xc6, 0x57, 0x28, 0x2c, 0x67, 0x84,
+ 0x9d, 0xb7, 0x0e, 0x8b, 0x4a, 0x1e, 0x15, 0xe5, 0x9c, 0x38, 0x4c, 0x9c, 0x12, 0x47, 0x58, 0x8b,
+ 0x2a, 0xe3, 0x05, 0x09, 0xed, 0xfb, 0x9d, 0x8b, 0x2f, 0x43, 0x00, 0x7d, 0x01, 0x26, 0x23, 0x8e,
+ 0x6b, 0x3b, 0x67, 0x82, 0x30, 0x7b, 0xcc, 0xa8, 0x20, 0x56, 0x59, 0x2d, 0xba, 0x1c, 0x2e, 0x8a,
+ 0x89, 0xe3, 0x6e, 0x49, 0xf8, 0x44, 0xa2, 0xb8, 0xc8, 0x66, 0xc6, 0xa8, 0x02, 0xb9, 0x9d, 0x9d,
+ 0xfd, 0x96, 0x60, 0x8e, 0x20, 0xdd, 0x89, 0xb5, 0xa4, 0xba, 0x2b, 0x6a, 0x92, 0x1e, 0x3a, 0xbd,
+ 0xa3, 0xa3, 0xc6, 0x8e, 0xb5, 0x1c, 0x78, 0x44, 0x4c, 0xe8, 0x43, 0x58, 0x26, 0x9e, 0x24, 0xda,
+ 0xd6, 0xaa, 0x71, 0x22, 0x84, 0xea, 0x8b, 0x9b, 0x8a, 0xa6, 0x72, 0x80, 0x06, 0x52, 0xb5, 0x34,
+ 0xb6, 0xf2, 0xab, 0x01, 0xf9, 0x28, 0x13, 0xe8, 0x1e, 0xa4, 0x82, 0xae, 0x56, 0xc7, 0x4d, 0x6e,
+ 0xb3, 0xa0, 0xdb, 0xa9, 0xad, 0x8c, 0x58, 0x83, 0xf2, 0x74, 0x8a, 0xf6, 0x2e, 0x75, 0xad, 0x98,
+ 0xa2, 0xa7, 0x10, 0xb1, 0x36, 0x5c, 0xf4, 0x08, 0xf2, 0x42, 0xae, 0x2a, 0x6c, 0xa7, 0x47, 0x1d,
+ 0x6e, 0xc5, 0xf5, 0xc1, 0x30, 0x3d, 0x04, 0xdb, 0x0a, 0xdd, 0x92, 0x20, 0xce, 0x89, 0xcb, 0x01,
+ 0xfa, 0x1f, 0xe4, 0xa6, 0x62, 0x53, 0x57, 0x9d, 0x49, 0x71, 0x0c, 0xa1, 0xa9, 0xe1, 0xae, 0x7c,
+ 0x03, 0xb7, 0xfe, 0xb1, 0xa2, 0x91, 0x09, 0xf1, 0x0b, 0x32, 0x51, 0x5b, 0xc8, 0x62, 0xf9, 0x17,
+ 0x3d, 0x80, 0xe4, 0xc8, 0xe9, 0x0d, 0x89, 0xca, 0xf3, 0xf2, 0x94, 0xd8, 0xa6, 0xde, 0x74, 0x2e,
+ 0x0e, 0x3c, 0x3e, 0x89, 0x3d, 0x32, 0x56, 0xb6, 0xa1, 0x7c, 0x55, 0x51, 0x5f, 0x11, 0xb8, 0x1c,
+ 0x0d, 0x9c, 0x8d, 0xc4, 0x78, 0x92, 0xc8, 0xc4, 0xcd, 0x44, 0xf5, 0x17, 0x03, 0x8a, 0xb3, 0xf2,
+ 0xa3, 0x0f, 0x60, 0x69, 0xbe, 0x60, 0xec, 0xae, 0xa0, 0xae, 0x0e, 0x8b, 0x66, 0xab, 0xe3, 0xb1,
+ 0xa0, 0x2e, 0xfa, 0x18, 0xac, 0x97, 0xa6, 0x08, 0xda, 0x27, 0xfe, 0x50, 0xa8, 0x85, 0x0d, 0xbc,
+ 0x34, 0x3b, 0xab, 0x1d, 0x80, 0xb2, 0x98, 0x75, 0x23, 0xc8, 0xbb, 0xa4, 0x73, 0xa1, 0x16, 0x0a,
+ 0x84, 0xc8, 0xe0, 0x05, 0x0d, 0xb5, 0x25, 0x22, 0xd7, 0xe1, 0xd5, 0x9f, 0x63, 0x50, 0xd4, 0x07,
+ 0x36, 0x26, 0xcf, 0x86, 0x84, 0x0b, 0xf4, 0x1e, 0x64, 0x3b, 0x4e, 0xaf, 0x47, 0x98, 0xad, 0x53,
+ 0xcc, 0x6d, 0x96, 0xd6, 0x83, 0x6b, 0xab, 0xae, 0xec, 0x8d, 0x1d, 0x9c, 0x09, 0x3c, 0x1a, 0x2e,
+ 0x7a, 0x00, 0xe9, 0xb0, 0xf3, 0x62, 0x53, 0xdf, 0x68, 0xe7, 0xe1, 0x10, 0x47, 0xf7, 0x21, 0xa9,
+ 0x54, 0xd0, 0x65, 0xb1, 0x10, 0x6a, 0x22, 0xcf, 0x38, 0x75, 0x7c, 0xe3, 0x00, 0x47, 0x1f, 0x81,
+ 0xae, 0x0d, 0x5b, 0x4c, 0x06, 0x44, 0x15, 0x43, 0x71, 0xb3, 0x3c, 0x5f, 0x45, 0xed, 0xc9, 0x80,
+ 0x60, 0x10, 0xd3, 0xff, 0xb2, 0x48, 0x2f, 0xc8, 0x84, 0x0f, 0x9c, 0x0e, 0xb1, 0xd5, 0x85, 0xa7,
+ 0x2e, 0xa6, 0x2c, 0x2e, 0x84, 0x56, 0x55, 0xf9, 0xd1, 0x8b, 0x2b, 0x7d, 0x9d, 0x8b, 0xeb, 0x49,
+ 0x22, 0x93, 0x34, 0x53, 0xd5, 0x1f, 0x0c, 0x28, 0x4d, 0x99, 0xe2, 0x03, 0xdf, 0xe3, 0x72, 0xc5,
+ 0x24, 0x61, 0xcc, 0x67, 0x73, 0x34, 0xe1, 0xc3, 0xfa, 0xae, 0x34, 0xe3, 0x00, 0x7d, 0x1d, 0x8e,
+ 0xd6, 0x20, 0xc5, 0x08, 0x1f, 0xf6, 0x84, 0x26, 0x09, 0x45, 0xaf, 0x37, 0xac, 0x10, 0xac, 0x3d,
+ 0xaa, 0xcf, 0x63, 0xb0, 0xa8, 0x33, 0xda, 0x76, 0x44, 0xe7, 0xfc, 0x9d, 0x0b, 0xf8, 0x7f, 0x48,
+ 0xcb, 0x6c, 0x28, 0x91, 0x05, 0x15, 0xbf, 0x5a, 0xc2, 0xd0, 0xe3, 0x2d, 0x44, 0x74, 0xf8, 0xcc,
+ 0x3b, 0x28, 0x19, 0xbc, 0x83, 0x1c, 0x1e, 0x7d, 0x07, 0xbd, 0x23, 0xad, 0xab, 0x3f, 0x19, 0x50,
+ 0x9e, 0xe5, 0xf4, 0x9d, 0x49, 0xfd, 0x3e, 0xa4, 0x03, 0x21, 0x43, 0x36, 0x97, 0x75, 0x6e, 0x81,
+ 0xcc, 0x27, 0x54, 0x9c, 0x07, 0xa1, 0x43, 0x37, 0xd9, 0xac, 0xe5, 0x96, 0x60, 0xc4, 0xe9, 0xbf,
+ 0x55, 0xcb, 0x4e, 0xfb, 0x30, 0xf6, 0x7a, 0x7d, 0x18, 0x7f, 0xe3, 0x3e, 0x4c, 0xbc, 0x42, 0x9b,
+ 0xe4, 0xb5, 0x1e, 0x90, 0x11, 0x6e, 0x53, 0xff, 0xce, 0x6d, 0xb5, 0x0e, 0x4b, 0x73, 0x44, 0x69,
+ 0x19, 0x2f, 0xfb, 0xcb, 0x78, 0x65, 0x7f, 0x7d, 0x0b, 0xb7, 0x30, 0xe1, 0x7e, 0x6f, 0x44, 0x22,
+ 0x95, 0xf7, 0x66, 0x94, 0x23, 0x48, 0xb8, 0x42, 0xdf, 0x9a, 0x59, 0xac, 0xfe, 0x57, 0x6f, 0xc3,
+ 0xca, 0x55, 0xe1, 0x83, 0x44, 0xab, 0x0f, 0x21, 0x7f, 0x1c, 0x6c, 0x61, 0xaf, 0xe7, 0x74, 0xb9,
+ 0x7c, 0x93, 0xf7, 0xa9, 0x47, 0xfb, 0xf4, 0x7b, 0x62, 0xf3, 0x0b, 0x32, 0xd6, 0x9f, 0x07, 0xf9,
+ 0xd0, 0xd8, 0xba, 0x20, 0xe3, 0xea, 0x5f, 0x06, 0x14, 0xf5, 0xac, 0x37, 0xcb, 0x73, 0x4e, 0xf1,
+ 0xd8, 0x35, 0x15, 0xbf, 0x0f, 0xc9, 0x91, 0xba, 0xd1, 0xc2, 0x93, 0x3d, 0xf2, 0x51, 0x74, 0x2c,
+ 0x2f, 0x1a, 0x1c, 0xe0, 0x92, 0xfe, 0x33, 0xda, 0x13, 0x84, 0xa9, 0x92, 0x90, 0xf4, 0x47, 0x3c,
+ 0xf7, 0x14, 0x82, 0xb5, 0x07, 0x5a, 0x83, 0xe4, 0x99, 0xdc, 0xba, 0xae, 0x8e, 0x72, 0x28, 0x76,
+ 0x94, 0x16, 0x1c, 0xb8, 0x54, 0x3f, 0x83, 0xd2, 0x74, 0xdf, 0x97, 0x4a, 0x93, 0x11, 0x91, 0xaf,
+ 0x4b, 0x43, 0x75, 0xd7, 0xcc, 0x52, 0xc7, 0xbb, 0x12, 0xc2, 0xda, 0x63, 0x6d, 0x07, 0x4a, 0x73,
+ 0x9f, 0x1e, 0xa8, 0x04, 0xb9, 0xa3, 0xa7, 0xad, 0xc3, 0xdd, 0x7a, 0x63, 0xaf, 0xb1, 0xbb, 0x63,
+ 0xde, 0x40, 0x00, 0xa9, 0x56, 0xe3, 0xe9, 0xe3, 0xfd, 0x5d, 0xd3, 0x40, 0x59, 0x48, 0x1e, 0x1c,
+ 0xed, 0xb7, 0x1b, 0x66, 0x4c, 0xfe, 0x6d, 0x9f, 0x34, 0x0f, 0xeb, 0x66, 0x7c, 0xed, 0x53, 0xc8,
+ 0xd5, 0xd5, 0x07, 0x54, 0x93, 0xb9, 0x84, 0xc9, 0x09, 0x4f, 0x9b, 0xf8, 0x60, 0x6b, 0xdf, 0xbc,
+ 0x81, 0xd2, 0x10, 0x3f, 0xc4, 0x72, 0x66, 0x06, 0x12, 0x87, 0xcd, 0x56, 0xdb, 0x8c, 0xa1, 0x22,
+ 0xc0, 0xd6, 0x51, 0xbb, 0x59, 0x6f, 0x1e, 0x1c, 0x34, 0xda, 0x66, 0x7c, 0x7b, 0xef, 0xb7, 0x17,
+ 0xab, 0xc6, 0xef, 0x2f, 0x56, 0x8d, 0x3f, 0x5e, 0xac, 0x1a, 0x3f, 0xfe, 0xb9, 0x7a, 0x03, 0x4a,
+ 0xd4, 0x5f, 0x1f, 0x51, 0x41, 0x38, 0x0f, 0xbe, 0x17, 0xbf, 0xbe, 0xa3, 0x47, 0xd4, 0xdf, 0x08,
+ 0xfe, 0x6d, 0x74, 0xfd, 0x8d, 0x91, 0xd8, 0x50, 0xe8, 0x46, 0x40, 0xcf, 0x69, 0x4a, 0x8d, 0x1e,
+ 0xfe, 0x1d, 0x00, 0x00, 0xff, 0xff, 0xb1, 0xa5, 0xb0, 0xf3, 0xaf, 0x0e, 0x00, 0x00,
+}
+
+func (m *Session) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Session) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Session) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.EnableSystemSettings {
+ i--
+ if m.EnableSystemSettings {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x1
+ i--
+ dAtA[i] = 0xb8
+ }
+ if len(m.SessionUUID) > 0 {
+ i -= len(m.SessionUUID)
+ copy(dAtA[i:], m.SessionUUID)
+ i = encodeVarintVtgate(dAtA, i, uint64(len(m.SessionUUID)))
+ i--
+ dAtA[i] = 0x1
+ i--
+ dAtA[i] = 0xb2
+ }
+ if len(m.DDLStrategy) > 0 {
+ i -= len(m.DDLStrategy)
+ copy(dAtA[i:], m.DDLStrategy)
+ i = encodeVarintVtgate(dAtA, i, uint64(len(m.DDLStrategy)))
+ i--
+ dAtA[i] = 0x1
+ i--
+ dAtA[i] = 0xaa
+ }
+ if m.ReadAfterWrite != nil {
+ {
+ size, err := m.ReadAfterWrite.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1
+ i--
+ dAtA[i] = 0xa2
+ }
+ if m.LastLockHeartbeat != 0 {
+ i = encodeVarintVtgate(dAtA, i, uint64(m.LastLockHeartbeat))
+ i--
+ dAtA[i] = 0x1
+ i--
+ dAtA[i] = 0x98
+ }
+ if m.LockSession != nil {
+ {
+ size, err := m.LockSession.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1
+ i--
+ dAtA[i] = 0x92
+ }
+ if m.InReservedConn {
+ i--
+ if m.InReservedConn {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x1
+ i--
+ dAtA[i] = 0x88
+ }
+ if len(m.Savepoints) > 0 {
+ for iNdEx := len(m.Savepoints) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Savepoints[iNdEx])
+ copy(dAtA[i:], m.Savepoints[iNdEx])
+ i = encodeVarintVtgate(dAtA, i, uint64(len(m.Savepoints[iNdEx])))
+ i--
+ dAtA[i] = 0x1
+ i--
+ dAtA[i] = 0x82
+ }
+ }
+ if m.RowCount != 0 {
+ i = encodeVarintVtgate(dAtA, i, uint64(m.RowCount))
+ i--
+ dAtA[i] = 0x78
+ }
+ if len(m.SystemVariables) > 0 {
+ for k := range m.SystemVariables {
+ v := m.SystemVariables[k]
+ baseI := i
+ i -= len(v)
+ copy(dAtA[i:], v)
+ i = encodeVarintVtgate(dAtA, i, uint64(len(v)))
+ i--
+ dAtA[i] = 0x12
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintVtgate(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintVtgate(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x72
+ }
+ }
+ if len(m.UserDefinedVariables) > 0 {
+ for k := range m.UserDefinedVariables {
+ v := m.UserDefinedVariables[k]
+ baseI := i
+ if v != nil {
+ {
+ size, err := v.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintVtgate(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintVtgate(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x6a
+ }
+ }
+ if m.FoundRows != 0 {
+ i = encodeVarintVtgate(dAtA, i, uint64(m.FoundRows))
+ i--
+ dAtA[i] = 0x60
+ }
+ if m.LastInsertId != 0 {
+ i = encodeVarintVtgate(dAtA, i, uint64(m.LastInsertId))
+ i--
+ dAtA[i] = 0x58
+ }
+ if len(m.PostSessions) > 0 {
+ for iNdEx := len(m.PostSessions) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.PostSessions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x52
+ }
+ }
+ if len(m.PreSessions) > 0 {
+ for iNdEx := len(m.PreSessions) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.PreSessions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x4a
+ }
+ }
+ if len(m.Warnings) > 0 {
+ for iNdEx := len(m.Warnings) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Warnings[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x42
+ }
+ }
+ if m.TransactionMode != 0 {
+ i = encodeVarintVtgate(dAtA, i, uint64(m.TransactionMode))
+ i--
+ dAtA[i] = 0x38
+ }
+ if m.Options != nil {
+ {
+ size, err := m.Options.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x32
+ }
+ if len(m.TargetString) > 0 {
+ i -= len(m.TargetString)
+ copy(dAtA[i:], m.TargetString)
+ i = encodeVarintVtgate(dAtA, i, uint64(len(m.TargetString)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if m.Autocommit {
+ i--
+ if m.Autocommit {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x20
+ }
+ if len(m.ShardSessions) > 0 {
+ for iNdEx := len(m.ShardSessions) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.ShardSessions[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if m.InTransaction {
+ i--
+ if m.InTransaction {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Session_ShardSession) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Session_ShardSession) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Session_ShardSession) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.ReservedId != 0 {
+ i = encodeVarintVtgate(dAtA, i, uint64(m.ReservedId))
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.TabletAlias != nil {
+ {
+ size, err := m.TabletAlias.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.TransactionId != 0 {
+ i = encodeVarintVtgate(dAtA, i, uint64(m.TransactionId))
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.Target != nil {
+ {
+ size, err := m.Target.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ReadAfterWrite) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ReadAfterWrite) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ReadAfterWrite) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.SessionTrackGtids {
+ i--
+ if m.SessionTrackGtids {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.ReadAfterWriteTimeout != 0 {
+ i -= 8
+ encoding_binary.LittleEndian.PutUint64(dAtA[i:], uint64(math.Float64bits(float64(m.ReadAfterWriteTimeout))))
+ i--
+ dAtA[i] = 0x11
+ }
+ if len(m.ReadAfterWriteGtid) > 0 {
+ i -= len(m.ReadAfterWriteGtid)
+ copy(dAtA[i:], m.ReadAfterWriteGtid)
+ i = encodeVarintVtgate(dAtA, i, uint64(len(m.ReadAfterWriteGtid)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ExecuteRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExecuteRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ExecuteRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Options != nil {
+ {
+ size, err := m.Options.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x3a
+ }
+ if len(m.KeyspaceShard) > 0 {
+ i -= len(m.KeyspaceShard)
+ copy(dAtA[i:], m.KeyspaceShard)
+ i = encodeVarintVtgate(dAtA, i, uint64(len(m.KeyspaceShard)))
+ i--
+ dAtA[i] = 0x32
+ }
+ if m.TabletType != 0 {
+ i = encodeVarintVtgate(dAtA, i, uint64(m.TabletType))
+ i--
+ dAtA[i] = 0x20
+ }
+ if m.Query != nil {
+ {
+ size, err := m.Query.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.Session != nil {
+ {
+ size, err := m.Session.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.CallerId != nil {
+ {
+ size, err := m.CallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ExecuteResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExecuteResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ExecuteResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Result != nil {
+ {
+ size, err := m.Result.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.Session != nil {
+ {
+ size, err := m.Session.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Error != nil {
+ {
+ size, err := m.Error.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ExecuteBatchRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExecuteBatchRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ExecuteBatchRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Options != nil {
+ {
+ size, err := m.Options.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x3a
+ }
+ if len(m.KeyspaceShard) > 0 {
+ i -= len(m.KeyspaceShard)
+ copy(dAtA[i:], m.KeyspaceShard)
+ i = encodeVarintVtgate(dAtA, i, uint64(len(m.KeyspaceShard)))
+ i--
+ dAtA[i] = 0x32
+ }
+ if m.AsTransaction {
+ i--
+ if m.AsTransaction {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x28
+ }
+ if m.TabletType != 0 {
+ i = encodeVarintVtgate(dAtA, i, uint64(m.TabletType))
+ i--
+ dAtA[i] = 0x20
+ }
+ if len(m.Queries) > 0 {
+ for iNdEx := len(m.Queries) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Queries[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if m.Session != nil {
+ {
+ size, err := m.Session.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.CallerId != nil {
+ {
+ size, err := m.CallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ExecuteBatchResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExecuteBatchResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ExecuteBatchResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Results) > 0 {
+ for iNdEx := len(m.Results) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Results[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if m.Session != nil {
+ {
+ size, err := m.Session.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.Error != nil {
+ {
+ size, err := m.Error.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *StreamExecuteRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StreamExecuteRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *StreamExecuteRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Session != nil {
+ {
+ size, err := m.Session.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x32
+ }
+ if m.Options != nil {
+ {
+ size, err := m.Options.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x2a
+ }
+ if len(m.KeyspaceShard) > 0 {
+ i -= len(m.KeyspaceShard)
+ copy(dAtA[i:], m.KeyspaceShard)
+ i = encodeVarintVtgate(dAtA, i, uint64(len(m.KeyspaceShard)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.TabletType != 0 {
+ i = encodeVarintVtgate(dAtA, i, uint64(m.TabletType))
+ i--
+ dAtA[i] = 0x18
+ }
+ if m.Query != nil {
+ {
+ size, err := m.Query.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.CallerId != nil {
+ {
+ size, err := m.CallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *StreamExecuteResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *StreamExecuteResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *StreamExecuteResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Result != nil {
+ {
+ size, err := m.Result.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ResolveTransactionRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ResolveTransactionRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ResolveTransactionRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Dtid) > 0 {
+ i -= len(m.Dtid)
+ copy(dAtA[i:], m.Dtid)
+ i = encodeVarintVtgate(dAtA, i, uint64(len(m.Dtid)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.CallerId != nil {
+ {
+ size, err := m.CallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ResolveTransactionResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ResolveTransactionResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ResolveTransactionResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *VStreamFlags) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *VStreamFlags) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *VStreamFlags) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.MinimizeSkew {
+ i--
+ if m.MinimizeSkew {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *VStreamRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
}
+
+func (m *VStreamRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *VStreamRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Flags != nil {
+ {
+ size, err := m.Flags.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x2a
+ }
+ if m.Filter != nil {
+ {
+ size, err := m.Filter.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x22
+ }
+ if m.Vgtid != nil {
+ {
+ size, err := m.Vgtid.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x1a
+ }
+ if m.TabletType != 0 {
+ i = encodeVarintVtgate(dAtA, i, uint64(m.TabletType))
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.CallerId != nil {
+ {
+ size, err := m.CallerId.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *VStreamResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *VStreamResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *VStreamResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Events) > 0 {
+ for iNdEx := len(m.Events) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Events[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtgate(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func encodeVarintVtgate(dAtA []byte, offset int, v uint64) int {
+ offset -= sovVtgate(v)
+ base := offset
+ for v >= 1<<7 {
+ dAtA[offset] = uint8(v&0x7f | 0x80)
+ v >>= 7
+ offset++
+ }
+ dAtA[offset] = uint8(v)
+ return base
+}
+func (m *Session) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.InTransaction {
+ n += 2
+ }
+ if len(m.ShardSessions) > 0 {
+ for _, e := range m.ShardSessions {
+ l = e.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ }
+ if m.Autocommit {
+ n += 2
+ }
+ l = len(m.TargetString)
+ if l > 0 {
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.Options != nil {
+ l = m.Options.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.TransactionMode != 0 {
+ n += 1 + sovVtgate(uint64(m.TransactionMode))
+ }
+ if len(m.Warnings) > 0 {
+ for _, e := range m.Warnings {
+ l = e.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ }
+ if len(m.PreSessions) > 0 {
+ for _, e := range m.PreSessions {
+ l = e.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ }
+ if len(m.PostSessions) > 0 {
+ for _, e := range m.PostSessions {
+ l = e.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ }
+ if m.LastInsertId != 0 {
+ n += 1 + sovVtgate(uint64(m.LastInsertId))
+ }
+ if m.FoundRows != 0 {
+ n += 1 + sovVtgate(uint64(m.FoundRows))
+ }
+ if len(m.UserDefinedVariables) > 0 {
+ for k, v := range m.UserDefinedVariables {
+ _ = k
+ _ = v
+ l = 0
+ if v != nil {
+ l = v.Size()
+ l += 1 + sovVtgate(uint64(l))
+ }
+ mapEntrySize := 1 + len(k) + sovVtgate(uint64(len(k))) + l
+ n += mapEntrySize + 1 + sovVtgate(uint64(mapEntrySize))
+ }
+ }
+ if len(m.SystemVariables) > 0 {
+ for k, v := range m.SystemVariables {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovVtgate(uint64(len(k))) + 1 + len(v) + sovVtgate(uint64(len(v)))
+ n += mapEntrySize + 1 + sovVtgate(uint64(mapEntrySize))
+ }
+ }
+ if m.RowCount != 0 {
+ n += 1 + sovVtgate(uint64(m.RowCount))
+ }
+ if len(m.Savepoints) > 0 {
+ for _, s := range m.Savepoints {
+ l = len(s)
+ n += 2 + l + sovVtgate(uint64(l))
+ }
+ }
+ if m.InReservedConn {
+ n += 3
+ }
+ if m.LockSession != nil {
+ l = m.LockSession.Size()
+ n += 2 + l + sovVtgate(uint64(l))
+ }
+ if m.LastLockHeartbeat != 0 {
+ n += 2 + sovVtgate(uint64(m.LastLockHeartbeat))
+ }
+ if m.ReadAfterWrite != nil {
+ l = m.ReadAfterWrite.Size()
+ n += 2 + l + sovVtgate(uint64(l))
+ }
+ l = len(m.DDLStrategy)
+ if l > 0 {
+ n += 2 + l + sovVtgate(uint64(l))
+ }
+ l = len(m.SessionUUID)
+ if l > 0 {
+ n += 2 + l + sovVtgate(uint64(l))
+ }
+ if m.EnableSystemSettings {
+ n += 3
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Session_ShardSession) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Target != nil {
+ l = m.Target.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.TransactionId != 0 {
+ n += 1 + sovVtgate(uint64(m.TransactionId))
+ }
+ if m.TabletAlias != nil {
+ l = m.TabletAlias.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.ReservedId != 0 {
+ n += 1 + sovVtgate(uint64(m.ReservedId))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ReadAfterWrite) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.ReadAfterWriteGtid)
+ if l > 0 {
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.ReadAfterWriteTimeout != 0 {
+ n += 9
+ }
+ if m.SessionTrackGtids {
+ n += 2
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ExecuteRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.CallerId != nil {
+ l = m.CallerId.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.Session != nil {
+ l = m.Session.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.Query != nil {
+ l = m.Query.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.TabletType != 0 {
+ n += 1 + sovVtgate(uint64(m.TabletType))
+ }
+ l = len(m.KeyspaceShard)
+ if l > 0 {
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.Options != nil {
+ l = m.Options.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ExecuteResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Error != nil {
+ l = m.Error.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.Session != nil {
+ l = m.Session.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.Result != nil {
+ l = m.Result.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ExecuteBatchRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.CallerId != nil {
+ l = m.CallerId.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.Session != nil {
+ l = m.Session.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if len(m.Queries) > 0 {
+ for _, e := range m.Queries {
+ l = e.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ }
+ if m.TabletType != 0 {
+ n += 1 + sovVtgate(uint64(m.TabletType))
+ }
+ if m.AsTransaction {
+ n += 2
+ }
+ l = len(m.KeyspaceShard)
+ if l > 0 {
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.Options != nil {
+ l = m.Options.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ExecuteBatchResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Error != nil {
+ l = m.Error.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.Session != nil {
+ l = m.Session.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if len(m.Results) > 0 {
+ for _, e := range m.Results {
+ l = e.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StreamExecuteRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.CallerId != nil {
+ l = m.CallerId.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.Query != nil {
+ l = m.Query.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.TabletType != 0 {
+ n += 1 + sovVtgate(uint64(m.TabletType))
+ }
+ l = len(m.KeyspaceShard)
+ if l > 0 {
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.Options != nil {
+ l = m.Options.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.Session != nil {
+ l = m.Session.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *StreamExecuteResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Result != nil {
+ l = m.Result.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ResolveTransactionRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.CallerId != nil {
+ l = m.CallerId.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ l = len(m.Dtid)
+ if l > 0 {
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ResolveTransactionResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *VStreamFlags) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.MinimizeSkew {
+ n += 2
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *VStreamRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.CallerId != nil {
+ l = m.CallerId.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.TabletType != 0 {
+ n += 1 + sovVtgate(uint64(m.TabletType))
+ }
+ if m.Vgtid != nil {
+ l = m.Vgtid.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.Filter != nil {
+ l = m.Filter.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.Flags != nil {
+ l = m.Flags.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *VStreamResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Events) > 0 {
+ for _, e := range m.Events {
+ l = e.Size()
+ n += 1 + l + sovVtgate(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func sovVtgate(x uint64) (n int) {
+ return (math_bits.Len64(x|1) + 6) / 7
+}
+func sozVtgate(x uint64) (n int) {
+ return sovVtgate(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+}
+func (m *Session) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Session: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Session: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field InTransaction", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.InTransaction = bool(v != 0)
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ShardSessions", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ShardSessions = append(m.ShardSessions, &Session_ShardSession{})
+ if err := m.ShardSessions[len(m.ShardSessions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Autocommit", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Autocommit = bool(v != 0)
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TargetString", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.TargetString = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Options == nil {
+ m.Options = &query.ExecuteOptions{}
+ }
+ if err := m.Options.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 7:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TransactionMode", wireType)
+ }
+ m.TransactionMode = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TransactionMode |= TransactionMode(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 8:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Warnings", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Warnings = append(m.Warnings, &query.QueryWarning{})
+ if err := m.Warnings[len(m.Warnings)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 9:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PreSessions", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.PreSessions = append(m.PreSessions, &Session_ShardSession{})
+ if err := m.PreSessions[len(m.PreSessions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 10:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field PostSessions", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.PostSessions = append(m.PostSessions, &Session_ShardSession{})
+ if err := m.PostSessions[len(m.PostSessions)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 11:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LastInsertId", wireType)
+ }
+ m.LastInsertId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.LastInsertId |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 12:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field FoundRows", wireType)
+ }
+ m.FoundRows = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.FoundRows |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 13:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field UserDefinedVariables", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.UserDefinedVariables == nil {
+ m.UserDefinedVariables = make(map[string]*query.BindVariable)
+ }
+ var mapkey string
+ var mapvalue *query.BindVariable
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var mapmsglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ mapmsglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if mapmsglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postmsgIndex := iNdEx + mapmsglen
+ if postmsgIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postmsgIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = &query.BindVariable{}
+ if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
+ return err
+ }
+ iNdEx = postmsgIndex
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipVtgate(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.UserDefinedVariables[mapkey] = mapvalue
+ iNdEx = postIndex
+ case 14:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SystemVariables", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.SystemVariables == nil {
+ m.SystemVariables = make(map[string]string)
+ }
+ var mapkey string
+ var mapvalue string
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipVtgate(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.SystemVariables[mapkey] = mapvalue
+ iNdEx = postIndex
+ case 15:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RowCount", wireType)
+ }
+ m.RowCount = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.RowCount |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 16:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Savepoints", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Savepoints = append(m.Savepoints, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ case 17:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field InReservedConn", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.InReservedConn = bool(v != 0)
+ case 18:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LockSession", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.LockSession == nil {
+ m.LockSession = &Session_ShardSession{}
+ }
+ if err := m.LockSession.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 19:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LastLockHeartbeat", wireType)
+ }
+ m.LastLockHeartbeat = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.LastLockHeartbeat |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 20:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ReadAfterWrite", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.ReadAfterWrite == nil {
+ m.ReadAfterWrite = &ReadAfterWrite{}
+ }
+ if err := m.ReadAfterWrite.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 21:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field DDLStrategy", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.DDLStrategy = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 22:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SessionUUID", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.SessionUUID = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 23:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EnableSystemSettings", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.EnableSystemSettings = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtgate(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Session_ShardSession) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ShardSession: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ShardSession: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Target", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Target == nil {
+ m.Target = &query.Target{}
+ }
+ if err := m.Target.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TransactionId", wireType)
+ }
+ m.TransactionId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TransactionId |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletAlias", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.TabletAlias == nil {
+ m.TabletAlias = &topodata.TabletAlias{}
+ }
+ if err := m.TabletAlias.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ReservedId", wireType)
+ }
+ m.ReservedId = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.ReservedId |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtgate(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ReadAfterWrite) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ReadAfterWrite: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ReadAfterWrite: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ReadAfterWriteGtid", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ReadAfterWriteGtid = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 1 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ReadAfterWriteTimeout", wireType)
+ }
+ var v uint64
+ if (iNdEx + 8) > l {
+ return io.ErrUnexpectedEOF
+ }
+ v = uint64(encoding_binary.LittleEndian.Uint64(dAtA[iNdEx:]))
+ iNdEx += 8
+ m.ReadAfterWriteTimeout = float64(math.Float64frombits(v))
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field SessionTrackGtids", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.SessionTrackGtids = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtgate(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ExecuteRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExecuteRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExecuteRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.CallerId == nil {
+ m.CallerId = &vtrpc.CallerID{}
+ }
+ if err := m.CallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Session", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Session == nil {
+ m.Session = &Session{}
+ }
+ if err := m.Session.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Query", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Query == nil {
+ m.Query = &query.BoundQuery{}
+ }
+ if err := m.Query.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletType", wireType)
+ }
+ m.TabletType = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TabletType |= topodata.TabletType(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field KeyspaceShard", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.KeyspaceShard = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Options == nil {
+ m.Options = &query.ExecuteOptions{}
+ }
+ if err := m.Options.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtgate(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ExecuteResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExecuteResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExecuteResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Error == nil {
+ m.Error = &vtrpc.RPCError{}
+ }
+ if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Session", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Session == nil {
+ m.Session = &Session{}
+ }
+ if err := m.Session.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Result", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Result == nil {
+ m.Result = &query.QueryResult{}
+ }
+ if err := m.Result.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtgate(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ExecuteBatchRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExecuteBatchRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExecuteBatchRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.CallerId == nil {
+ m.CallerId = &vtrpc.CallerID{}
+ }
+ if err := m.CallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Session", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Session == nil {
+ m.Session = &Session{}
+ }
+ if err := m.Session.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Queries", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Queries = append(m.Queries, &query.BoundQuery{})
+ if err := m.Queries[len(m.Queries)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletType", wireType)
+ }
+ m.TabletType = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TabletType |= topodata.TabletType(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 5:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field AsTransaction", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.AsTransaction = bool(v != 0)
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field KeyspaceShard", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.KeyspaceShard = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 7:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Options == nil {
+ m.Options = &query.ExecuteOptions{}
+ }
+ if err := m.Options.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtgate(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ExecuteBatchResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExecuteBatchResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExecuteBatchResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Error == nil {
+ m.Error = &vtrpc.RPCError{}
+ }
+ if err := m.Error.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Session", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Session == nil {
+ m.Session = &Session{}
+ }
+ if err := m.Session.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Results", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Results = append(m.Results, &query.ResultWithError{})
+ if err := m.Results[len(m.Results)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtgate(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StreamExecuteRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StreamExecuteRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StreamExecuteRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.CallerId == nil {
+ m.CallerId = &vtrpc.CallerID{}
+ }
+ if err := m.CallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Query", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Query == nil {
+ m.Query = &query.BoundQuery{}
+ }
+ if err := m.Query.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletType", wireType)
+ }
+ m.TabletType = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TabletType |= topodata.TabletType(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field KeyspaceShard", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.KeyspaceShard = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Options", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Options == nil {
+ m.Options = &query.ExecuteOptions{}
+ }
+ if err := m.Options.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Session", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Session == nil {
+ m.Session = &Session{}
+ }
+ if err := m.Session.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtgate(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *StreamExecuteResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: StreamExecuteResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: StreamExecuteResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Result", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Result == nil {
+ m.Result = &query.QueryResult{}
+ }
+ if err := m.Result.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtgate(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ResolveTransactionRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ResolveTransactionRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ResolveTransactionRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.CallerId == nil {
+ m.CallerId = &vtrpc.CallerID{}
+ }
+ if err := m.CallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Dtid", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Dtid = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtgate(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ResolveTransactionResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ResolveTransactionResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ResolveTransactionResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtgate(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *VStreamFlags) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: VStreamFlags: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: VStreamFlags: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field MinimizeSkew", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.MinimizeSkew = bool(v != 0)
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtgate(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *VStreamRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: VStreamRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: VStreamRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CallerId", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.CallerId == nil {
+ m.CallerId = &vtrpc.CallerID{}
+ }
+ if err := m.CallerId.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field TabletType", wireType)
+ }
+ m.TabletType = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.TabletType |= topodata.TabletType(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Vgtid", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Vgtid == nil {
+ m.Vgtid = &binlogdata.VGtid{}
+ }
+ if err := m.Vgtid.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Filter", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Filter == nil {
+ m.Filter = &binlogdata.Filter{}
+ }
+ if err := m.Filter.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Flags", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Flags == nil {
+ m.Flags = &VStreamFlags{}
+ }
+ if err := m.Flags.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtgate(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *VStreamResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: VStreamResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: VStreamResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Events", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Events = append(m.Events, &binlogdata.VEvent{})
+ if err := m.Events[len(m.Events)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtgate(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtgate
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func skipVtgate(dAtA []byte) (n int, err error) {
+ l := len(dAtA)
+ iNdEx := 0
+ depth := 0
+ for iNdEx < l {
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ wireType := int(wire & 0x7)
+ switch wireType {
+ case 0:
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ iNdEx++
+ if dAtA[iNdEx-1] < 0x80 {
+ break
+ }
+ }
+ case 1:
+ iNdEx += 8
+ case 2:
+ var length int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowVtgate
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ length |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if length < 0 {
+ return 0, ErrInvalidLengthVtgate
+ }
+ iNdEx += length
+ case 3:
+ depth++
+ case 4:
+ if depth == 0 {
+ return 0, ErrUnexpectedEndOfGroupVtgate
+ }
+ depth--
+ case 5:
+ iNdEx += 4
+ default:
+ return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
+ }
+ if iNdEx < 0 {
+ return 0, ErrInvalidLengthVtgate
+ }
+ if depth == 0 {
+ return iNdEx, nil
+ }
+ }
+ return 0, io.ErrUnexpectedEOF
+}
+
+var (
+ ErrInvalidLengthVtgate = fmt.Errorf("proto: negative length found during unmarshaling")
+ ErrIntOverflowVtgate = fmt.Errorf("proto: integer overflow")
+ ErrUnexpectedEndOfGroupVtgate = fmt.Errorf("proto: unexpected end of group")
+)
diff --git a/go/vt/proto/vtgateservice/vtgateservice.pb.go b/go/vt/proto/vtgateservice/vtgateservice.pb.go
index 023adc5d727..dc6d4d6d2ee 100644
--- a/go/vt/proto/vtgateservice/vtgateservice.pb.go
+++ b/go/vt/proto/vtgateservice/vtgateservice.pb.go
@@ -1,4 +1,4 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: vtgateservice.proto
package vtgateservice
@@ -12,7 +12,6 @@ import (
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
-
vtgate "vitess.io/vitess/go/vt/proto/vtgate"
)
@@ -30,23 +29,24 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
func init() { proto.RegisterFile("vtgateservice.proto", fileDescriptor_601ae27c95081e0f) }
var fileDescriptor_601ae27c95081e0f = []byte{
- // 247 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x91, 0x3f, 0x4b, 0x03, 0x41,
- 0x10, 0xc5, 0x15, 0x21, 0x81, 0x25, 0x69, 0x46, 0x51, 0x88, 0x5a, 0x98, 0xd2, 0xe2, 0x56, 0xb4,
- 0x15, 0x8b, 0x03, 0x2b, 0x1b, 0x89, 0x92, 0x42, 0xb0, 0x58, 0x97, 0xe1, 0x5c, 0xd0, 0x9b, 0x73,
- 0x67, 0xb2, 0xf8, 0x01, 0xfc, 0xe0, 0xc2, 0xed, 0x9f, 0x70, 0x9e, 0xda, 0xdd, 0xfd, 0xde, 0x9b,
- 0xb7, 0xc3, 0x3c, 0xb5, 0x1f, 0xa4, 0x31, 0x82, 0x8c, 0x3e, 0x38, 0x8b, 0x55, 0xe7, 0x49, 0x08,
- 0xe6, 0x03, 0xb8, 0x98, 0xc5, 0xdf, 0x28, 0x5e, 0x7e, 0xed, 0xa9, 0xc9, 0xda, 0x09, 0x32, 0xc3,
- 0xb5, 0x9a, 0xde, 0x7e, 0xa2, 0xdd, 0x08, 0xc2, 0x61, 0x95, 0x4c, 0x09, 0xac, 0xf0, 0x63, 0x83,
- 0x2c, 0x8b, 0xa3, 0x11, 0xe7, 0x8e, 0x5a, 0xc6, 0xe5, 0x0e, 0xdc, 0xa9, 0x59, 0x82, 0xb5, 0x11,
- 0xfb, 0x0a, 0xc7, 0x3f, 0xac, 0x3d, 0xcd, 0x39, 0x27, 0xbf, 0x8b, 0x25, 0xec, 0x5e, 0xcd, 0x1f,
- 0xc4, 0xa3, 0x79, 0xcf, 0x0b, 0x95, 0x81, 0x01, 0xce, 0x71, 0xa7, 0x7f, 0xa8, 0x39, 0xef, 0x62,
- 0x17, 0x9e, 0x15, 0xac, 0x90, 0xe9, 0x2d, 0xe0, 0xa3, 0x37, 0x2d, 0x1b, 0x2b, 0x8e, 0x5a, 0x38,
- 0xcb, 0x83, 0x63, 0x2d, 0x67, 0x2f, 0xff, 0xb3, 0x94, 0x85, 0x6f, 0xd4, 0x74, 0x1d, 0x1f, 0xdf,
- 0xde, 0x2e, 0x81, 0xd1, 0xed, 0x0a, 0xdf, 0xae, 0x57, 0xd7, 0xea, 0xc0, 0x51, 0x15, 0xfa, 0x22,
- 0x62, 0x33, 0x55, 0xe3, 0x3b, 0xfb, 0x74, 0x9e, 0x90, 0x23, 0x1d, 0xbf, 0x74, 0x43, 0x3a, 0x88,
- 0xee, 0x2d, 0x7a, 0x50, 0xec, 0xcb, 0xa4, 0x87, 0x57, 0xdf, 0x01, 0x00, 0x00, 0xff, 0xff, 0xd5,
- 0x14, 0x87, 0x30, 0x05, 0x02, 0x00, 0x00,
+ // 265 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x2e, 0x2b, 0x49, 0x4f,
+ 0x2c, 0x49, 0x2d, 0x4e, 0x2d, 0x2a, 0xcb, 0x4c, 0x4e, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17,
+ 0xe2, 0x45, 0x11, 0x94, 0xe2, 0x81, 0x70, 0x21, 0x92, 0x46, 0x2d, 0xcc, 0x5c, 0x6c, 0x61, 0x99,
+ 0x25, 0xa9, 0xc5, 0xc5, 0x42, 0x36, 0x5c, 0xec, 0xae, 0x15, 0xa9, 0xc9, 0xa5, 0x25, 0xa9, 0x42,
+ 0x62, 0x7a, 0x50, 0x45, 0x50, 0x81, 0xa0, 0xd4, 0xc2, 0xd2, 0xd4, 0xe2, 0x12, 0x29, 0x71, 0x0c,
+ 0xf1, 0xe2, 0x82, 0xfc, 0xbc, 0xe2, 0x54, 0x25, 0x06, 0x21, 0x6f, 0x2e, 0x1e, 0xa8, 0xa0, 0x53,
+ 0x62, 0x49, 0x72, 0x86, 0x90, 0x34, 0x9a, 0x52, 0xb0, 0x28, 0xcc, 0x1c, 0x19, 0xec, 0x92, 0x70,
+ 0xc3, 0x02, 0xb8, 0x78, 0x83, 0x4b, 0x8a, 0x52, 0x13, 0x73, 0x61, 0x0e, 0x82, 0x6b, 0x40, 0x11,
+ 0x86, 0x19, 0x27, 0x8b, 0x43, 0x16, 0x66, 0x9e, 0x01, 0xa3, 0x50, 0x2c, 0x97, 0x50, 0x50, 0x6a,
+ 0x71, 0x7e, 0x4e, 0x59, 0x6a, 0x48, 0x51, 0x62, 0x5e, 0x71, 0x62, 0x72, 0x49, 0x66, 0x7e, 0x9e,
+ 0x90, 0x22, 0x4c, 0x23, 0xa6, 0x1c, 0xcc, 0x6c, 0x25, 0x7c, 0x4a, 0xe0, 0x0e, 0xb6, 0xe3, 0x62,
+ 0x0f, 0x83, 0x58, 0x8e, 0x08, 0x3b, 0xa8, 0x00, 0x46, 0xd8, 0xc1, 0xc5, 0x11, 0xce, 0x73, 0x0a,
+ 0x3a, 0xf1, 0x48, 0x8e, 0xf1, 0xc2, 0x23, 0x39, 0xc6, 0x07, 0x8f, 0xe4, 0x18, 0x67, 0x3c, 0x96,
+ 0x63, 0xe0, 0x12, 0xc9, 0xcc, 0xd7, 0x2b, 0x03, 0x47, 0x0c, 0x24, 0xa6, 0xf4, 0xd2, 0x8b, 0x0a,
+ 0x92, 0xa3, 0xb4, 0xa0, 0x42, 0x99, 0xf9, 0xfa, 0x10, 0x96, 0x7e, 0x7a, 0xbe, 0x7e, 0x59, 0x89,
+ 0x3e, 0x58, 0x89, 0x3e, 0x4a, 0x44, 0x27, 0xb1, 0x81, 0x05, 0x8d, 0x01, 0x01, 0x00, 0x00, 0xff,
+ 0xff, 0xb1, 0x89, 0xe2, 0xfd, 0x15, 0x02, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
diff --git a/go/vt/proto/vtrpc/vtrpc.pb.go b/go/vt/proto/vtrpc/vtrpc.pb.go
index 8a673537d9a..7ebd72e0933 100644
--- a/go/vt/proto/vtrpc/vtrpc.pb.go
+++ b/go/vt/proto/vtrpc/vtrpc.pb.go
@@ -1,11 +1,13 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: vtrpc.proto
package vtrpc
import (
fmt "fmt"
+ io "io"
math "math"
+ math_bits "math/bits"
proto "github.com/golang/protobuf/proto"
)
@@ -320,18 +322,26 @@ func (*CallerID) ProtoMessage() {}
func (*CallerID) Descriptor() ([]byte, []int) {
return fileDescriptor_750b4cf641561858, []int{0}
}
-
func (m *CallerID) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_CallerID.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *CallerID) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_CallerID.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_CallerID.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *CallerID) XXX_Merge(src proto.Message) {
xxx_messageInfo_CallerID.Merge(m, src)
}
func (m *CallerID) XXX_Size() int {
- return xxx_messageInfo_CallerID.Size(m)
+ return m.Size()
}
func (m *CallerID) XXX_DiscardUnknown() {
xxx_messageInfo_CallerID.DiscardUnknown(m)
@@ -379,18 +389,26 @@ func (*RPCError) ProtoMessage() {}
func (*RPCError) Descriptor() ([]byte, []int) {
return fileDescriptor_750b4cf641561858, []int{1}
}
-
func (m *RPCError) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_RPCError.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *RPCError) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_RPCError.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_RPCError.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *RPCError) XXX_Merge(src proto.Message) {
xxx_messageInfo_RPCError.Merge(m, src)
}
func (m *RPCError) XXX_Size() int {
- return xxx_messageInfo_RPCError.Size(m)
+ return m.Size()
}
func (m *RPCError) XXX_DiscardUnknown() {
xxx_messageInfo_RPCError.DiscardUnknown(m)
@@ -429,43 +447,559 @@ func init() {
func init() { proto.RegisterFile("vtrpc.proto", fileDescriptor_750b4cf641561858) }
var fileDescriptor_750b4cf641561858 = []byte{
- // 605 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x93, 0x4d, 0x4f, 0x1b, 0x3b,
- 0x14, 0x86, 0xc9, 0x07, 0xf9, 0x38, 0x13, 0x88, 0x31, 0x5f, 0xe1, 0x5e, 0xae, 0xee, 0x55, 0x56,
- 0x57, 0x2c, 0x88, 0xd4, 0xaa, 0xea, 0xda, 0x19, 0x1f, 0x82, 0xc5, 0xe0, 0x49, 0x3d, 0x36, 0x25,
- 0xdd, 0x58, 0x21, 0x8c, 0x50, 0xaa, 0xc0, 0x44, 0x93, 0x14, 0xa9, 0x9b, 0xfe, 0xac, 0xfe, 0xa6,
- 0xfe, 0x8c, 0xca, 0x4e, 0xa6, 0x28, 0xb0, 0x9b, 0xf3, 0x3e, 0xc7, 0xc7, 0xef, 0x79, 0x9d, 0x40,
- 0xf0, 0xbc, 0xcc, 0xe7, 0x93, 0xf3, 0x79, 0x9e, 0x2d, 0x33, 0xba, 0xed, 0x8b, 0xee, 0x57, 0x68,
- 0x84, 0xe3, 0xd9, 0x2c, 0xcd, 0x05, 0xa7, 0xa7, 0xd0, 0x9c, 0xe7, 0xd3, 0xa7, 0xc9, 0x74, 0x3e,
- 0x9e, 0x75, 0x4a, 0xff, 0x95, 0xfe, 0x6f, 0xaa, 0x17, 0xc1, 0xd1, 0x49, 0xf6, 0x38, 0xcf, 0x9e,
- 0xd2, 0xa7, 0x65, 0xa7, 0xbc, 0xa2, 0x7f, 0x04, 0xda, 0x85, 0xd6, 0xe2, 0xdb, 0xdd, 0x4b, 0x43,
- 0xc5, 0x37, 0x6c, 0x68, 0xdd, 0x1f, 0xd0, 0x50, 0xc3, 0x10, 0xf3, 0x3c, 0xcb, 0xe9, 0x47, 0x08,
- 0x66, 0xe9, 0xc3, 0x78, 0xf2, 0xdd, 0x4e, 0xb2, 0xfb, 0xd4, 0xdf, 0xb6, 0xfb, 0xee, 0xe8, 0x7c,
- 0xe5, 0x30, 0xf2, 0xc4, 0x37, 0x86, 0xd9, 0x7d, 0xaa, 0x60, 0xd5, 0xea, 0xbe, 0x69, 0x07, 0xea,
- 0x8f, 0xe9, 0x62, 0x31, 0x7e, 0x48, 0xd7, 0x26, 0x8a, 0x92, 0xfe, 0x0b, 0x55, 0x3f, 0xab, 0xe2,
- 0x67, 0x05, 0xeb, 0x59, 0x7e, 0x80, 0x07, 0x67, 0x3f, 0xcb, 0x50, 0xf5, 0x33, 0x6a, 0x50, 0x8e,
- 0xaf, 0xc8, 0x16, 0x6d, 0x41, 0x23, 0x64, 0x32, 0xc4, 0x08, 0x39, 0x29, 0xd1, 0x00, 0xea, 0x46,
- 0x5e, 0xc9, 0xf8, 0xb3, 0x24, 0x65, 0x7a, 0x00, 0x44, 0xc8, 0x1b, 0x16, 0x09, 0x6e, 0x99, 0x1a,
- 0x98, 0x6b, 0x94, 0x9a, 0x54, 0xe8, 0x21, 0xec, 0x71, 0x64, 0x3c, 0x12, 0x12, 0x2d, 0xde, 0x86,
- 0x88, 0x1c, 0x39, 0xa9, 0xd2, 0x1d, 0x68, 0xca, 0x58, 0xdb, 0x8b, 0xd8, 0x48, 0x4e, 0xb6, 0x29,
- 0x85, 0x5d, 0x16, 0x29, 0x64, 0x7c, 0x64, 0xf1, 0x56, 0x24, 0x3a, 0x21, 0x35, 0x77, 0x72, 0x88,
- 0xea, 0x5a, 0x24, 0x89, 0x88, 0xa5, 0xe5, 0x28, 0x05, 0x72, 0x52, 0xa7, 0xfb, 0xd0, 0x36, 0x92,
- 0x19, 0x7d, 0x89, 0x52, 0x8b, 0x90, 0x69, 0xe4, 0x84, 0xd0, 0x23, 0xa0, 0x0a, 0x93, 0xd8, 0xa8,
- 0xd0, 0xdd, 0x72, 0xc9, 0x4c, 0xe2, 0xf4, 0x06, 0x3d, 0x86, 0xfd, 0x0b, 0x26, 0x22, 0xe4, 0x76,
- 0xa8, 0x30, 0x8c, 0x25, 0x17, 0x5a, 0xc4, 0x92, 0x34, 0x9d, 0x73, 0xd6, 0x8f, 0x95, 0xeb, 0x02,
- 0x4a, 0xa0, 0x15, 0x1b, 0x6d, 0xe3, 0x0b, 0xab, 0x98, 0x1c, 0x20, 0x09, 0xe8, 0x1e, 0xec, 0x18,
- 0x29, 0xae, 0x87, 0x11, 0xba, 0x35, 0x90, 0x93, 0x96, 0xdb, 0x5c, 0x48, 0x8d, 0x4a, 0xb2, 0x88,
- 0xec, 0xd0, 0x36, 0x04, 0x46, 0xb2, 0x1b, 0x26, 0x22, 0xd6, 0x8f, 0x90, 0xec, 0xba, 0x85, 0x38,
- 0xd3, 0xcc, 0x46, 0x71, 0x92, 0x90, 0xf6, 0xd9, 0xaf, 0x32, 0xb4, 0x5f, 0xbd, 0x89, 0x5b, 0x32,
- 0x31, 0x61, 0x88, 0x49, 0x62, 0x23, 0x1c, 0xb0, 0x70, 0x44, 0xb6, 0x5c, 0x68, 0xab, 0x3c, 0x9d,
- 0xc7, 0xb5, 0x5a, 0xa2, 0x1d, 0x38, 0x58, 0xe7, 0x6a, 0x51, 0xa9, 0x58, 0x15, 0xc4, 0x87, 0xdc,
- 0x67, 0xdc, 0x0a, 0x39, 0x34, 0xba, 0x50, 0x2b, 0xf4, 0x14, 0x3a, 0x6f, 0x42, 0x2e, 0x68, 0x95,
- 0xfe, 0x05, 0x47, 0xce, 0xf9, 0x40, 0x09, 0x3d, 0xda, 0x9c, 0xb7, 0xed, 0x4e, 0xbe, 0x09, 0xb9,
- 0xa0, 0x35, 0xfa, 0x0f, 0x9c, 0xbc, 0x8d, 0xb5, 0xc0, 0x75, 0xfa, 0x37, 0x1c, 0x7f, 0x32, 0xa8,
- 0x46, 0xd6, 0x3d, 0x65, 0x82, 0xea, 0xe6, 0x05, 0x36, 0x9c, 0x53, 0x27, 0x0b, 0x69, 0xf5, 0x6d,
- 0xa1, 0x36, 0xe9, 0x09, 0x1c, 0x16, 0x29, 0x6e, 0x5a, 0x01, 0x67, 0x53, 0x2b, 0x26, 0x13, 0x81,
- 0x52, 0x6f, 0xb2, 0xc0, 0xb1, 0x57, 0x8f, 0x5e, 0xb0, 0x56, 0xff, 0x03, 0xb4, 0xa7, 0xd9, 0xf9,
- 0xf3, 0x74, 0x99, 0x2e, 0x16, 0xab, 0x7f, 0xea, 0x97, 0xee, 0xba, 0x9a, 0x66, 0xbd, 0xd5, 0x57,
- 0xef, 0x21, 0xeb, 0x3d, 0x2f, 0x7b, 0x9e, 0xf6, 0xfc, 0xaf, 0xfc, 0xae, 0xe6, 0x8b, 0xf7, 0xbf,
- 0x03, 0x00, 0x00, 0xff, 0xff, 0x27, 0xae, 0x20, 0x34, 0xe3, 0x03, 0x00, 0x00,
+ // 628 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x93, 0xcb, 0x4e, 0x1b, 0x3f,
+ 0x14, 0xc6, 0xc9, 0x85, 0x5c, 0x4e, 0x02, 0x31, 0xe6, 0x16, 0xfe, 0x7f, 0x9a, 0x56, 0x59, 0x55,
+ 0x2c, 0x88, 0xd4, 0x2e, 0xba, 0x76, 0xc6, 0x87, 0x60, 0x31, 0x78, 0x52, 0x8f, 0x87, 0x92, 0x6e,
+ 0xac, 0x10, 0x46, 0x28, 0x55, 0x60, 0xa2, 0x49, 0x8a, 0xd4, 0x4d, 0x9f, 0xa3, 0x4f, 0xd2, 0x67,
+ 0xe8, 0xb2, 0x8f, 0x50, 0xd1, 0x4d, 0x1f, 0xa3, 0xb2, 0x93, 0x29, 0x0a, 0xec, 0xe6, 0x7c, 0xbf,
+ 0xe3, 0xe3, 0xef, 0x7c, 0x4e, 0xa0, 0x76, 0x3f, 0x4f, 0xa7, 0xa3, 0xe3, 0x69, 0x9a, 0xcc, 0x13,
+ 0xba, 0xee, 0x8a, 0xf6, 0x27, 0xa8, 0x78, 0xc3, 0xc9, 0x24, 0x4e, 0x05, 0xa7, 0x87, 0x50, 0x9d,
+ 0xa6, 0xe3, 0xbb, 0xd1, 0x78, 0x3a, 0x9c, 0x34, 0x73, 0xaf, 0x72, 0xaf, 0xab, 0xea, 0x51, 0xb0,
+ 0x74, 0x94, 0xdc, 0x4e, 0x93, 0xbb, 0xf8, 0x6e, 0xde, 0xcc, 0x2f, 0xe8, 0x3f, 0x81, 0xb6, 0xa1,
+ 0x3e, 0xfb, 0x7c, 0xf5, 0xd8, 0x50, 0x70, 0x0d, 0x2b, 0x5a, 0xfb, 0x2b, 0x54, 0x54, 0xdf, 0xc3,
+ 0x34, 0x4d, 0x52, 0xfa, 0x0e, 0x6a, 0x93, 0xf8, 0x66, 0x38, 0xfa, 0x62, 0x46, 0xc9, 0x75, 0xec,
+ 0x6e, 0xdb, 0x7c, 0xb3, 0x77, 0xbc, 0x70, 0xe8, 0x3b, 0xe2, 0x1a, 0xbd, 0xe4, 0x3a, 0x56, 0xb0,
+ 0x68, 0xb5, 0xdf, 0xb4, 0x09, 0xe5, 0xdb, 0x78, 0x36, 0x1b, 0xde, 0xc4, 0x4b, 0x13, 0x59, 0x49,
+ 0x5f, 0x42, 0xd1, 0xcd, 0x2a, 0xb8, 0x59, 0xb5, 0xe5, 0x2c, 0x37, 0xc0, 0x81, 0xa3, 0xef, 0x79,
+ 0x28, 0xba, 0x19, 0x25, 0xc8, 0x07, 0x67, 0x64, 0x8d, 0xd6, 0xa1, 0xe2, 0x31, 0xe9, 0xa1, 0x8f,
+ 0x9c, 0xe4, 0x68, 0x0d, 0xca, 0x91, 0x3c, 0x93, 0xc1, 0x07, 0x49, 0xf2, 0x74, 0x07, 0x88, 0x90,
+ 0x17, 0xcc, 0x17, 0xdc, 0x30, 0xd5, 0x8b, 0xce, 0x51, 0x6a, 0x52, 0xa0, 0xbb, 0xb0, 0xc5, 0x91,
+ 0x71, 0x5f, 0x48, 0x34, 0x78, 0xe9, 0x21, 0x72, 0xe4, 0xa4, 0x48, 0x37, 0xa0, 0x2a, 0x03, 0x6d,
+ 0x4e, 0x82, 0x48, 0x72, 0xb2, 0x4e, 0x29, 0x6c, 0x32, 0x5f, 0x21, 0xe3, 0x03, 0x83, 0x97, 0x22,
+ 0xd4, 0x21, 0x29, 0xd9, 0x93, 0x7d, 0x54, 0xe7, 0x22, 0x0c, 0x45, 0x20, 0x0d, 0x47, 0x29, 0x90,
+ 0x93, 0x32, 0xdd, 0x86, 0x46, 0x24, 0x59, 0xa4, 0x4f, 0x51, 0x6a, 0xe1, 0x31, 0x8d, 0x9c, 0x10,
+ 0xba, 0x07, 0x54, 0x61, 0x18, 0x44, 0xca, 0xb3, 0xb7, 0x9c, 0xb2, 0x28, 0xb4, 0x7a, 0x85, 0xee,
+ 0xc3, 0xf6, 0x09, 0x13, 0x3e, 0x72, 0xd3, 0x57, 0xe8, 0x05, 0x92, 0x0b, 0x2d, 0x02, 0x49, 0xaa,
+ 0xd6, 0x39, 0xeb, 0x06, 0xca, 0x76, 0x01, 0x25, 0x50, 0x0f, 0x22, 0x6d, 0x82, 0x13, 0xa3, 0x98,
+ 0xec, 0x21, 0xa9, 0xd1, 0x2d, 0xd8, 0x88, 0xa4, 0x38, 0xef, 0xfb, 0x68, 0xd7, 0x40, 0x4e, 0xea,
+ 0x76, 0x73, 0x21, 0x35, 0x2a, 0xc9, 0x7c, 0xb2, 0x41, 0x1b, 0x50, 0x8b, 0x24, 0xbb, 0x60, 0xc2,
+ 0x67, 0x5d, 0x1f, 0xc9, 0xa6, 0x5d, 0x88, 0x33, 0xcd, 0x8c, 0x1f, 0x84, 0x21, 0x69, 0x1c, 0xfd,
+ 0xc9, 0x43, 0xe3, 0xc9, 0x9b, 0xd8, 0x25, 0xc3, 0xc8, 0xf3, 0x30, 0x0c, 0x8d, 0x8f, 0x3d, 0xe6,
+ 0x0d, 0xc8, 0x9a, 0x0d, 0x6d, 0x91, 0xa7, 0xf5, 0xb8, 0x54, 0x73, 0xb4, 0x09, 0x3b, 0xcb, 0x5c,
+ 0x0d, 0x2a, 0x15, 0xa8, 0x8c, 0xb8, 0x90, 0xbb, 0x8c, 0x1b, 0x21, 0xfb, 0x91, 0xce, 0xd4, 0x02,
+ 0x3d, 0x84, 0xe6, 0xb3, 0x90, 0x33, 0x5a, 0xa4, 0xff, 0xc1, 0x9e, 0x75, 0xde, 0x53, 0x42, 0x0f,
+ 0x56, 0xe7, 0xad, 0xdb, 0x93, 0xcf, 0x42, 0xce, 0x68, 0x89, 0xbe, 0x80, 0x83, 0xe7, 0xb1, 0x66,
+ 0xb8, 0x4c, 0xff, 0x87, 0xfd, 0xf7, 0x11, 0xaa, 0x81, 0xb1, 0x4f, 0x19, 0xa2, 0xba, 0x78, 0x84,
+ 0x15, 0xeb, 0xd4, 0xca, 0x42, 0x1a, 0x7d, 0x99, 0xa9, 0x55, 0x7a, 0x00, 0xbb, 0x59, 0x8a, 0xab,
+ 0x56, 0xc0, 0xda, 0xd4, 0x8a, 0xc9, 0x50, 0xa0, 0xd4, 0xab, 0xac, 0x66, 0xd9, 0x93, 0x47, 0xcf,
+ 0x58, 0xbd, 0x8b, 0x3f, 0x1e, 0x5a, 0xb9, 0x9f, 0x0f, 0xad, 0xdc, 0xaf, 0x87, 0x56, 0xee, 0xdb,
+ 0xef, 0xd6, 0x1a, 0x34, 0xc6, 0xc9, 0xf1, 0xfd, 0x78, 0x1e, 0xcf, 0x66, 0x8b, 0x7f, 0xee, 0xc7,
+ 0xf6, 0xb2, 0x1a, 0x27, 0x9d, 0xc5, 0x57, 0xe7, 0x26, 0xe9, 0xdc, 0xcf, 0x3b, 0x8e, 0x76, 0xdc,
+ 0xaf, 0xfe, 0xaa, 0xe4, 0x8a, 0xb7, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0xcb, 0x67, 0xe4, 0x15,
+ 0xf3, 0x03, 0x00, 0x00,
+}
+
+func (m *CallerID) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *CallerID) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *CallerID) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Subcomponent) > 0 {
+ i -= len(m.Subcomponent)
+ copy(dAtA[i:], m.Subcomponent)
+ i = encodeVarintVtrpc(dAtA, i, uint64(len(m.Subcomponent)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Component) > 0 {
+ i -= len(m.Component)
+ copy(dAtA[i:], m.Component)
+ i = encodeVarintVtrpc(dAtA, i, uint64(len(m.Component)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Principal) > 0 {
+ i -= len(m.Principal)
+ copy(dAtA[i:], m.Principal)
+ i = encodeVarintVtrpc(dAtA, i, uint64(len(m.Principal)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *RPCError) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *RPCError) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *RPCError) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Code != 0 {
+ i = encodeVarintVtrpc(dAtA, i, uint64(m.Code))
+ i--
+ dAtA[i] = 0x18
+ }
+ if len(m.Message) > 0 {
+ i -= len(m.Message)
+ copy(dAtA[i:], m.Message)
+ i = encodeVarintVtrpc(dAtA, i, uint64(len(m.Message)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if m.LegacyCode != 0 {
+ i = encodeVarintVtrpc(dAtA, i, uint64(m.LegacyCode))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func encodeVarintVtrpc(dAtA []byte, offset int, v uint64) int {
+ offset -= sovVtrpc(v)
+ base := offset
+ for v >= 1<<7 {
+ dAtA[offset] = uint8(v&0x7f | 0x80)
+ v >>= 7
+ offset++
+ }
+ dAtA[offset] = uint8(v)
+ return base
}
+func (m *CallerID) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Principal)
+ if l > 0 {
+ n += 1 + l + sovVtrpc(uint64(l))
+ }
+ l = len(m.Component)
+ if l > 0 {
+ n += 1 + l + sovVtrpc(uint64(l))
+ }
+ l = len(m.Subcomponent)
+ if l > 0 {
+ n += 1 + l + sovVtrpc(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *RPCError) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.LegacyCode != 0 {
+ n += 1 + sovVtrpc(uint64(m.LegacyCode))
+ }
+ l = len(m.Message)
+ if l > 0 {
+ n += 1 + l + sovVtrpc(uint64(l))
+ }
+ if m.Code != 0 {
+ n += 1 + sovVtrpc(uint64(m.Code))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func sovVtrpc(x uint64) (n int) {
+ return (math_bits.Len64(x|1) + 6) / 7
+}
+func sozVtrpc(x uint64) (n int) {
+ return sovVtrpc(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+}
+func (m *CallerID) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtrpc
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: CallerID: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: CallerID: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Principal", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtrpc
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtrpc
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtrpc
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Principal = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Component", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtrpc
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtrpc
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtrpc
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Component = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Subcomponent", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtrpc
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtrpc
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtrpc
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Subcomponent = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtrpc(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtrpc
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtrpc
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *RPCError) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtrpc
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: RPCError: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: RPCError: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field LegacyCode", wireType)
+ }
+ m.LegacyCode = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtrpc
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.LegacyCode |= LegacyErrorCode(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Message", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtrpc
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtrpc
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtrpc
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Message = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Code", wireType)
+ }
+ m.Code = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtrpc
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Code |= Code(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtrpc(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtrpc
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtrpc
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func skipVtrpc(dAtA []byte) (n int, err error) {
+ l := len(dAtA)
+ iNdEx := 0
+ depth := 0
+ for iNdEx < l {
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowVtrpc
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ wireType := int(wire & 0x7)
+ switch wireType {
+ case 0:
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowVtrpc
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ iNdEx++
+ if dAtA[iNdEx-1] < 0x80 {
+ break
+ }
+ }
+ case 1:
+ iNdEx += 8
+ case 2:
+ var length int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowVtrpc
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ length |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if length < 0 {
+ return 0, ErrInvalidLengthVtrpc
+ }
+ iNdEx += length
+ case 3:
+ depth++
+ case 4:
+ if depth == 0 {
+ return 0, ErrUnexpectedEndOfGroupVtrpc
+ }
+ depth--
+ case 5:
+ iNdEx += 4
+ default:
+ return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
+ }
+ if iNdEx < 0 {
+ return 0, ErrInvalidLengthVtrpc
+ }
+ if depth == 0 {
+ return iNdEx, nil
+ }
+ }
+ return 0, io.ErrUnexpectedEOF
+}
+
+var (
+ ErrInvalidLengthVtrpc = fmt.Errorf("proto: negative length found during unmarshaling")
+ ErrIntOverflowVtrpc = fmt.Errorf("proto: integer overflow")
+ ErrUnexpectedEndOfGroupVtrpc = fmt.Errorf("proto: unexpected end of group")
+)
diff --git a/go/vt/proto/vttest/vttest.pb.go b/go/vt/proto/vttest/vttest.pb.go
index 7dad543bdfc..c689c083fc2 100644
--- a/go/vt/proto/vttest/vttest.pb.go
+++ b/go/vt/proto/vttest/vttest.pb.go
@@ -1,11 +1,13 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: vttest.proto
package vttest
import (
fmt "fmt"
+ io "io"
math "math"
+ math_bits "math/bits"
proto "github.com/golang/protobuf/proto"
)
@@ -42,18 +44,26 @@ func (*Shard) ProtoMessage() {}
func (*Shard) Descriptor() ([]byte, []int) {
return fileDescriptor_b9b3dc07179a1ec9, []int{0}
}
-
func (m *Shard) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Shard.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Shard) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Shard.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Shard.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Shard) XXX_Merge(src proto.Message) {
xxx_messageInfo_Shard.Merge(m, src)
}
func (m *Shard) XXX_Size() int {
- return xxx_messageInfo_Shard.Size(m)
+ return m.Size()
}
func (m *Shard) XXX_DiscardUnknown() {
xxx_messageInfo_Shard.DiscardUnknown(m)
@@ -102,18 +112,26 @@ func (*Keyspace) ProtoMessage() {}
func (*Keyspace) Descriptor() ([]byte, []int) {
return fileDescriptor_b9b3dc07179a1ec9, []int{1}
}
-
func (m *Keyspace) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Keyspace.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Keyspace) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Keyspace.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Keyspace.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Keyspace) XXX_Merge(src proto.Message) {
xxx_messageInfo_Keyspace.Merge(m, src)
}
func (m *Keyspace) XXX_Size() int {
- return xxx_messageInfo_Keyspace.Size(m)
+ return m.Size()
}
func (m *Keyspace) XXX_DiscardUnknown() {
xxx_messageInfo_Keyspace.DiscardUnknown(m)
@@ -187,18 +205,26 @@ func (*VTTestTopology) ProtoMessage() {}
func (*VTTestTopology) Descriptor() ([]byte, []int) {
return fileDescriptor_b9b3dc07179a1ec9, []int{2}
}
-
func (m *VTTestTopology) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_VTTestTopology.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *VTTestTopology) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_VTTestTopology.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_VTTestTopology.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *VTTestTopology) XXX_Merge(src proto.Message) {
xxx_messageInfo_VTTestTopology.Merge(m, src)
}
func (m *VTTestTopology) XXX_Size() int {
- return xxx_messageInfo_VTTestTopology.Size(m)
+ return m.Size()
}
func (m *VTTestTopology) XXX_DiscardUnknown() {
xxx_messageInfo_VTTestTopology.DiscardUnknown(m)
@@ -229,26 +255,875 @@ func init() {
func init() { proto.RegisterFile("vttest.proto", fileDescriptor_b9b3dc07179a1ec9) }
var fileDescriptor_b9b3dc07179a1ec9 = []byte{
- // 322 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x51, 0xcb, 0x6a, 0xe3, 0x40,
- 0x10, 0x44, 0xb6, 0xa5, 0x5d, 0xb7, 0x1f, 0x98, 0xc1, 0x87, 0xb9, 0xad, 0xd7, 0xc6, 0xa0, 0x93,
- 0xb4, 0x6c, 0xfe, 0x20, 0x26, 0xb9, 0x04, 0x12, 0x50, 0x84, 0x0f, 0xb9, 0x08, 0x59, 0xea, 0x38,
- 0x22, 0x92, 0x5a, 0xcc, 0x8c, 0x05, 0xfa, 0x8d, 0x7c, 0x71, 0x50, 0x8f, 0x4c, 0x2e, 0xbe, 0x55,
- 0x57, 0xd5, 0x74, 0x35, 0x35, 0x30, 0x6f, 0x8d, 0x41, 0x6d, 0x82, 0x46, 0x91, 0x21, 0xe1, 0xd9,
- 0x69, 0xfb, 0x00, 0xee, 0xeb, 0x47, 0xaa, 0x72, 0x21, 0x60, 0x52, 0xa7, 0x15, 0x4a, 0x67, 0xe3,
- 0xf8, 0xd3, 0x88, 0xb1, 0xf0, 0x61, 0x95, 0x9f, 0x92, 0x1e, 0x26, 0xd4, 0xa2, 0x52, 0x45, 0x8e,
- 0x72, 0xc4, 0xfa, 0x32, 0x3f, 0x3d, 0xa7, 0x15, 0xbe, 0x0c, 0xec, 0xf6, 0x6b, 0x04, 0xbf, 0x9f,
- 0xb0, 0xd3, 0x4d, 0x9a, 0xe1, 0xcd, 0x55, 0x7b, 0xf0, 0x74, 0x9f, 0xa3, 0xe5, 0x68, 0x33, 0xf6,
- 0x67, 0xff, 0x17, 0xc1, 0x70, 0x0e, 0xa7, 0x47, 0x83, 0x28, 0xfe, 0xc1, 0x9a, 0x51, 0x51, 0x9f,
- 0x93, 0x8c, 0xca, 0x4b, 0x55, 0x73, 0xbc, 0x1c, 0xf3, 0x2a, 0x71, 0xd5, 0x0e, 0x2c, 0xf5, 0x17,
- 0xdc, 0x7a, 0x61, 0xba, 0x06, 0xe5, 0xe4, 0xd6, 0x8b, 0xb8, 0x6b, 0x50, 0xfc, 0x81, 0x99, 0x46,
- 0xd5, 0x62, 0x9e, 0xbc, 0x2b, 0xaa, 0xa4, 0xcb, 0x46, 0xb0, 0xd4, 0xa3, 0xa2, 0x4a, 0xec, 0x60,
- 0xa1, 0xb0, 0x29, 0x8b, 0x2c, 0x4d, 0x32, 0xba, 0xd4, 0x46, 0x7a, 0x1b, 0xc7, 0x77, 0xa3, 0xf9,
- 0x40, 0x1e, 0x7a, 0x4e, 0xfc, 0x85, 0xb9, 0xca, 0xa9, 0x2e, 0xbb, 0xc1, 0xf3, 0x8b, 0x3d, 0x33,
- 0xcb, 0xb1, 0x65, 0x7b, 0x84, 0xe5, 0x31, 0x8e, 0x51, 0x9b, 0x98, 0x1a, 0x2a, 0xe9, 0xdc, 0x89,
- 0x00, 0xa6, 0x9f, 0x43, 0x4b, 0x5a, 0x3a, 0x5c, 0xc4, 0xea, 0x5a, 0xc4, 0xb5, 0xbe, 0xe8, 0xc7,
- 0x22, 0xd6, 0xe0, 0x66, 0x58, 0x96, 0xb6, 0xb4, 0x69, 0x64, 0x87, 0xfb, 0xfd, 0xdb, 0xae, 0x2d,
- 0x0c, 0x6a, 0x1d, 0x14, 0x14, 0x5a, 0x14, 0x9e, 0x29, 0x6c, 0x4d, 0xc8, 0x7f, 0x1b, 0xda, 0x85,
- 0x27, 0x8f, 0xa7, 0xbb, 0xef, 0x00, 0x00, 0x00, 0xff, 0xff, 0x57, 0x0f, 0xe6, 0xb4, 0xf9, 0x01,
- 0x00, 0x00,
+ // 347 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x51, 0xcd, 0x4a, 0xeb, 0x40,
+ 0x18, 0xbd, 0xd3, 0x36, 0xb9, 0xb7, 0x5f, 0x7f, 0x28, 0x43, 0x17, 0xb3, 0xca, 0xed, 0x6d, 0xb9,
+ 0x90, 0x55, 0x22, 0x8a, 0x2f, 0x60, 0xd1, 0x8d, 0xa0, 0x10, 0x43, 0x17, 0x6e, 0x42, 0x9a, 0x7c,
+ 0xd6, 0x60, 0x92, 0x09, 0x33, 0xd3, 0x40, 0x5e, 0xc3, 0x95, 0x8f, 0xe4, 0xd2, 0x47, 0x90, 0xfa,
+ 0x22, 0x92, 0x99, 0x14, 0x37, 0xdd, 0x9d, 0xef, 0x9c, 0x33, 0xdf, 0xf9, 0x38, 0x03, 0xe3, 0x5a,
+ 0x29, 0x94, 0xca, 0xab, 0x04, 0x57, 0x9c, 0xda, 0x66, 0x5a, 0x5e, 0x83, 0xf5, 0xf0, 0x1c, 0x8b,
+ 0x94, 0x52, 0x18, 0x94, 0x71, 0x81, 0x8c, 0x2c, 0x88, 0x3b, 0x0c, 0x34, 0xa6, 0x2e, 0xcc, 0xd2,
+ 0x6d, 0xd4, 0xc2, 0x88, 0xd7, 0x28, 0x44, 0x96, 0x22, 0xeb, 0x69, 0x7d, 0x9a, 0x6e, 0xef, 0xe2,
+ 0x02, 0xef, 0x3b, 0x76, 0xf9, 0xda, 0x83, 0x3f, 0xb7, 0xd8, 0xc8, 0x2a, 0x4e, 0xf0, 0xe4, 0xaa,
+ 0xff, 0x60, 0xcb, 0x36, 0x47, 0xb2, 0xde, 0xa2, 0xef, 0x8e, 0xce, 0x27, 0x5e, 0x77, 0x8e, 0x4e,
+ 0x0f, 0x3a, 0x91, 0x9e, 0xc1, 0x5c, 0xa3, 0xac, 0xdc, 0x45, 0x09, 0xcf, 0xf7, 0x45, 0xa9, 0xe3,
+ 0x59, 0x5f, 0xaf, 0xa2, 0x47, 0x6d, 0xad, 0xa5, 0xf6, 0x82, 0x53, 0x2f, 0x54, 0x53, 0x21, 0x1b,
+ 0x9c, 0x7a, 0x11, 0x36, 0x15, 0xd2, 0xbf, 0x30, 0x92, 0x28, 0x6a, 0x4c, 0xa3, 0x27, 0xc1, 0x0b,
+ 0x66, 0x69, 0x23, 0x18, 0xea, 0x46, 0xf0, 0x82, 0xae, 0x60, 0x22, 0xb0, 0xca, 0xb3, 0x24, 0x8e,
+ 0x12, 0xbe, 0x2f, 0x15, 0xb3, 0x17, 0xc4, 0xb5, 0x82, 0x71, 0x47, 0xae, 0x5b, 0x8e, 0xfe, 0x83,
+ 0xb1, 0x48, 0x79, 0x99, 0x37, 0x9d, 0xe7, 0xb7, 0xf6, 0x8c, 0x0c, 0xa7, 0x2d, 0xcb, 0x0d, 0x4c,
+ 0x37, 0x61, 0x88, 0x52, 0x85, 0xbc, 0xe2, 0x39, 0xdf, 0x35, 0xd4, 0x83, 0xe1, 0x4b, 0xd7, 0x92,
+ 0x64, 0x44, 0x17, 0x31, 0x3b, 0x16, 0x71, 0xac, 0x2f, 0xf8, 0xb1, 0xd0, 0x39, 0x58, 0x09, 0xe6,
+ 0xb9, 0x29, 0x6d, 0x18, 0x98, 0xe1, 0xea, 0xf2, 0xfd, 0xe0, 0x90, 0x8f, 0x83, 0x43, 0x3e, 0x0f,
+ 0x0e, 0x79, 0xfb, 0x72, 0x7e, 0x3d, 0xae, 0xea, 0x4c, 0xa1, 0x94, 0x5e, 0xc6, 0x7d, 0x83, 0xfc,
+ 0x1d, 0xf7, 0x6b, 0xe5, 0xeb, 0xbf, 0xf6, 0x4d, 0xc0, 0xd6, 0xd6, 0xd3, 0xc5, 0x77, 0x00, 0x00,
+ 0x00, 0xff, 0xff, 0xd7, 0x26, 0x4d, 0xc0, 0x09, 0x02, 0x00, 0x00,
+}
+
+func (m *Shard) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Shard) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Shard) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.DbNameOverride) > 0 {
+ i -= len(m.DbNameOverride)
+ copy(dAtA[i:], m.DbNameOverride)
+ i = encodeVarintVttest(dAtA, i, uint64(len(m.DbNameOverride)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = encodeVarintVttest(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Keyspace) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Keyspace) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Keyspace) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.RdonlyCount != 0 {
+ i = encodeVarintVttest(dAtA, i, uint64(m.RdonlyCount))
+ i--
+ dAtA[i] = 0x38
+ }
+ if m.ReplicaCount != 0 {
+ i = encodeVarintVttest(dAtA, i, uint64(m.ReplicaCount))
+ i--
+ dAtA[i] = 0x30
+ }
+ if len(m.ServedFrom) > 0 {
+ i -= len(m.ServedFrom)
+ copy(dAtA[i:], m.ServedFrom)
+ i = encodeVarintVttest(dAtA, i, uint64(len(m.ServedFrom)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if len(m.ShardingColumnType) > 0 {
+ i -= len(m.ShardingColumnType)
+ copy(dAtA[i:], m.ShardingColumnType)
+ i = encodeVarintVttest(dAtA, i, uint64(len(m.ShardingColumnType)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if len(m.ShardingColumnName) > 0 {
+ i -= len(m.ShardingColumnName)
+ copy(dAtA[i:], m.ShardingColumnName)
+ i = encodeVarintVttest(dAtA, i, uint64(len(m.ShardingColumnName)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.Shards) > 0 {
+ for iNdEx := len(m.Shards) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Shards[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVttest(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = encodeVarintVttest(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *VTTestTopology) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *VTTestTopology) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *VTTestTopology) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Cells) > 0 {
+ for iNdEx := len(m.Cells) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Cells[iNdEx])
+ copy(dAtA[i:], m.Cells[iNdEx])
+ i = encodeVarintVttest(dAtA, i, uint64(len(m.Cells[iNdEx])))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if len(m.Keyspaces) > 0 {
+ for iNdEx := len(m.Keyspaces) - 1; iNdEx >= 0; iNdEx-- {
+ {
+ size, err := m.Keyspaces[iNdEx].MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVttest(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func encodeVarintVttest(dAtA []byte, offset int, v uint64) int {
+ offset -= sovVttest(v)
+ base := offset
+ for v >= 1<<7 {
+ dAtA[offset] = uint8(v&0x7f | 0x80)
+ v >>= 7
+ offset++
+ }
+ dAtA[offset] = uint8(v)
+ return base
}
+func (m *Shard) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovVttest(uint64(l))
+ }
+ l = len(m.DbNameOverride)
+ if l > 0 {
+ n += 1 + l + sovVttest(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Keyspace) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovVttest(uint64(l))
+ }
+ if len(m.Shards) > 0 {
+ for _, e := range m.Shards {
+ l = e.Size()
+ n += 1 + l + sovVttest(uint64(l))
+ }
+ }
+ l = len(m.ShardingColumnName)
+ if l > 0 {
+ n += 1 + l + sovVttest(uint64(l))
+ }
+ l = len(m.ShardingColumnType)
+ if l > 0 {
+ n += 1 + l + sovVttest(uint64(l))
+ }
+ l = len(m.ServedFrom)
+ if l > 0 {
+ n += 1 + l + sovVttest(uint64(l))
+ }
+ if m.ReplicaCount != 0 {
+ n += 1 + sovVttest(uint64(m.ReplicaCount))
+ }
+ if m.RdonlyCount != 0 {
+ n += 1 + sovVttest(uint64(m.RdonlyCount))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *VTTestTopology) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Keyspaces) > 0 {
+ for _, e := range m.Keyspaces {
+ l = e.Size()
+ n += 1 + l + sovVttest(uint64(l))
+ }
+ }
+ if len(m.Cells) > 0 {
+ for _, s := range m.Cells {
+ l = len(s)
+ n += 1 + l + sovVttest(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func sovVttest(x uint64) (n int) {
+ return (math_bits.Len64(x|1) + 6) / 7
+}
+func sozVttest(x uint64) (n int) {
+ return sovVttest(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+}
+func (m *Shard) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVttest
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Shard: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Shard: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVttest
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVttest
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVttest
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field DbNameOverride", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVttest
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVttest
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVttest
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.DbNameOverride = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVttest(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVttest
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVttest
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Keyspace) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVttest
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Keyspace: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Keyspace: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVttest
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVttest
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVttest
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Shards", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVttest
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVttest
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVttest
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Shards = append(m.Shards, &Shard{})
+ if err := m.Shards[len(m.Shards)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ShardingColumnName", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVttest
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVttest
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVttest
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ShardingColumnName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ShardingColumnType", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVttest
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVttest
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVttest
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ShardingColumnType = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ServedFrom", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVttest
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVttest
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVttest
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.ServedFrom = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 6:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field ReplicaCount", wireType)
+ }
+ m.ReplicaCount = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVttest
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.ReplicaCount |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 7:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field RdonlyCount", wireType)
+ }
+ m.RdonlyCount = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVttest
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.RdonlyCount |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVttest(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVttest
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVttest
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *VTTestTopology) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVttest
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: VTTestTopology: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: VTTestTopology: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Keyspaces", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVttest
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVttest
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVttest
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Keyspaces = append(m.Keyspaces, &Keyspace{})
+ if err := m.Keyspaces[len(m.Keyspaces)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Cells", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVttest
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVttest
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVttest
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Cells = append(m.Cells, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVttest(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVttest
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVttest
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func skipVttest(dAtA []byte) (n int, err error) {
+ l := len(dAtA)
+ iNdEx := 0
+ depth := 0
+ for iNdEx < l {
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowVttest
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ wireType := int(wire & 0x7)
+ switch wireType {
+ case 0:
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowVttest
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ iNdEx++
+ if dAtA[iNdEx-1] < 0x80 {
+ break
+ }
+ }
+ case 1:
+ iNdEx += 8
+ case 2:
+ var length int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowVttest
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ length |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if length < 0 {
+ return 0, ErrInvalidLengthVttest
+ }
+ iNdEx += length
+ case 3:
+ depth++
+ case 4:
+ if depth == 0 {
+ return 0, ErrUnexpectedEndOfGroupVttest
+ }
+ depth--
+ case 5:
+ iNdEx += 4
+ default:
+ return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
+ }
+ if iNdEx < 0 {
+ return 0, ErrInvalidLengthVttest
+ }
+ if depth == 0 {
+ return iNdEx, nil
+ }
+ }
+ return 0, io.ErrUnexpectedEOF
+}
+
+var (
+ ErrInvalidLengthVttest = fmt.Errorf("proto: negative length found during unmarshaling")
+ ErrIntOverflowVttest = fmt.Errorf("proto: integer overflow")
+ ErrUnexpectedEndOfGroupVttest = fmt.Errorf("proto: unexpected end of group")
+)
diff --git a/go/vt/proto/vttime/vttime.pb.go b/go/vt/proto/vttime/vttime.pb.go
index 95c6f63de33..8dd642134bb 100644
--- a/go/vt/proto/vttime/vttime.pb.go
+++ b/go/vt/proto/vttime/vttime.pb.go
@@ -1,11 +1,13 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: vttime.proto
package vttime
import (
fmt "fmt"
+ io "io"
math "math"
+ math_bits "math/bits"
proto "github.com/golang/protobuf/proto"
)
@@ -37,18 +39,26 @@ func (*Time) ProtoMessage() {}
func (*Time) Descriptor() ([]byte, []int) {
return fileDescriptor_bbeb0d3434911dee, []int{0}
}
-
func (m *Time) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Time.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Time) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Time.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Time.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Time) XXX_Merge(src proto.Message) {
xxx_messageInfo_Time.Merge(m, src)
}
func (m *Time) XXX_Size() int {
- return xxx_messageInfo_Time.Size(m)
+ return m.Size()
}
func (m *Time) XXX_DiscardUnknown() {
xxx_messageInfo_Time.DiscardUnknown(m)
@@ -70,20 +80,475 @@ func (m *Time) GetNanoseconds() int32 {
return 0
}
+type Duration struct {
+ Seconds int64 `protobuf:"varint,1,opt,name=seconds,proto3" json:"seconds,omitempty"`
+ Nanos int32 `protobuf:"varint,2,opt,name=nanos,proto3" json:"nanos,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
+}
+
+func (m *Duration) Reset() { *m = Duration{} }
+func (m *Duration) String() string { return proto.CompactTextString(m) }
+func (*Duration) ProtoMessage() {}
+func (*Duration) Descriptor() ([]byte, []int) {
+ return fileDescriptor_bbeb0d3434911dee, []int{1}
+}
+func (m *Duration) XXX_Unmarshal(b []byte) error {
+ return m.Unmarshal(b)
+}
+func (m *Duration) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+ if deterministic {
+ return xxx_messageInfo_Duration.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
+}
+func (m *Duration) XXX_Merge(src proto.Message) {
+ xxx_messageInfo_Duration.Merge(m, src)
+}
+func (m *Duration) XXX_Size() int {
+ return m.Size()
+}
+func (m *Duration) XXX_DiscardUnknown() {
+ xxx_messageInfo_Duration.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Duration proto.InternalMessageInfo
+
+func (m *Duration) GetSeconds() int64 {
+ if m != nil {
+ return m.Seconds
+ }
+ return 0
+}
+
+func (m *Duration) GetNanos() int32 {
+ if m != nil {
+ return m.Nanos
+ }
+ return 0
+}
+
func init() {
proto.RegisterType((*Time)(nil), "vttime.Time")
+ proto.RegisterType((*Duration)(nil), "vttime.Duration")
}
func init() { proto.RegisterFile("vttime.proto", fileDescriptor_bbeb0d3434911dee) }
var fileDescriptor_bbeb0d3434911dee = []byte{
- // 120 bytes of a gzipped FileDescriptorProto
+ // 161 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x29, 0x2b, 0x29, 0xc9,
0xcc, 0x4d, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x83, 0xf0, 0x94, 0x9c, 0xb8, 0x58,
0x42, 0x32, 0x73, 0x53, 0x85, 0x24, 0xb8, 0xd8, 0x8b, 0x53, 0x93, 0xf3, 0xf3, 0x52, 0x8a, 0x25,
0x18, 0x15, 0x18, 0x35, 0x98, 0x83, 0x60, 0x5c, 0x21, 0x05, 0x2e, 0xee, 0xbc, 0xc4, 0xbc, 0x7c,
- 0x98, 0x2c, 0x93, 0x02, 0xa3, 0x06, 0x6b, 0x10, 0xb2, 0x90, 0x93, 0x6a, 0x94, 0x72, 0x59, 0x66,
- 0x49, 0x6a, 0x71, 0xb1, 0x5e, 0x66, 0xbe, 0x3e, 0x84, 0xa5, 0x9f, 0x9e, 0xaf, 0x5f, 0x56, 0xa2,
- 0x0f, 0xb6, 0x4b, 0x1f, 0x62, 0x55, 0x12, 0x1b, 0x98, 0x67, 0x0c, 0x08, 0x00, 0x00, 0xff, 0xff,
- 0x35, 0x46, 0xf4, 0x16, 0x89, 0x00, 0x00, 0x00,
+ 0x98, 0x2c, 0x93, 0x02, 0xa3, 0x06, 0x6b, 0x10, 0xb2, 0x90, 0x92, 0x15, 0x17, 0x87, 0x4b, 0x69,
+ 0x51, 0x62, 0x49, 0x66, 0x7e, 0x1e, 0x1e, 0x73, 0x44, 0xb8, 0x58, 0xc1, 0x9a, 0xa0, 0x26, 0x40,
+ 0x38, 0x4e, 0xa6, 0x27, 0x1e, 0xc9, 0x31, 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3,
+ 0x8c, 0xc7, 0x72, 0x0c, 0x51, 0xca, 0x65, 0x99, 0x25, 0xa9, 0xc5, 0xc5, 0x7a, 0x99, 0xf9, 0xfa,
+ 0x10, 0x96, 0x7e, 0x7a, 0xbe, 0x7e, 0x59, 0x89, 0x3e, 0xd8, 0xdd, 0xfa, 0x10, 0x67, 0x27, 0xb1,
+ 0x81, 0x79, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x31, 0xe1, 0xff, 0xf9, 0xd5, 0x00, 0x00,
+ 0x00,
}
+
+func (m *Time) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Time) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Time) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Nanoseconds != 0 {
+ i = encodeVarintVttime(dAtA, i, uint64(m.Nanoseconds))
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.Seconds != 0 {
+ i = encodeVarintVttime(dAtA, i, uint64(m.Seconds))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Duration) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Duration) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Duration) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Nanos != 0 {
+ i = encodeVarintVttime(dAtA, i, uint64(m.Nanos))
+ i--
+ dAtA[i] = 0x10
+ }
+ if m.Seconds != 0 {
+ i = encodeVarintVttime(dAtA, i, uint64(m.Seconds))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func encodeVarintVttime(dAtA []byte, offset int, v uint64) int {
+ offset -= sovVttime(v)
+ base := offset
+ for v >= 1<<7 {
+ dAtA[offset] = uint8(v&0x7f | 0x80)
+ v >>= 7
+ offset++
+ }
+ dAtA[offset] = uint8(v)
+ return base
+}
+func (m *Time) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Seconds != 0 {
+ n += 1 + sovVttime(uint64(m.Seconds))
+ }
+ if m.Nanoseconds != 0 {
+ n += 1 + sovVttime(uint64(m.Nanoseconds))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Duration) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Seconds != 0 {
+ n += 1 + sovVttime(uint64(m.Seconds))
+ }
+ if m.Nanos != 0 {
+ n += 1 + sovVttime(uint64(m.Nanos))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func sovVttime(x uint64) (n int) {
+ return (math_bits.Len64(x|1) + 6) / 7
+}
+func sozVttime(x uint64) (n int) {
+ return sovVttime(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+}
+func (m *Time) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVttime
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Time: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Time: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Seconds", wireType)
+ }
+ m.Seconds = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVttime
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Seconds |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Nanoseconds", wireType)
+ }
+ m.Nanoseconds = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVttime
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Nanoseconds |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVttime(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVttime
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVttime
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Duration) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVttime
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Duration: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Duration: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Seconds", wireType)
+ }
+ m.Seconds = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVttime
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Seconds |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Nanos", wireType)
+ }
+ m.Nanos = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVttime
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Nanos |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVttime(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVttime
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVttime
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func skipVttime(dAtA []byte) (n int, err error) {
+ l := len(dAtA)
+ iNdEx := 0
+ depth := 0
+ for iNdEx < l {
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowVttime
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ wireType := int(wire & 0x7)
+ switch wireType {
+ case 0:
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowVttime
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ iNdEx++
+ if dAtA[iNdEx-1] < 0x80 {
+ break
+ }
+ }
+ case 1:
+ iNdEx += 8
+ case 2:
+ var length int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowVttime
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ length |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if length < 0 {
+ return 0, ErrInvalidLengthVttime
+ }
+ iNdEx += length
+ case 3:
+ depth++
+ case 4:
+ if depth == 0 {
+ return 0, ErrUnexpectedEndOfGroupVttime
+ }
+ depth--
+ case 5:
+ iNdEx += 4
+ default:
+ return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
+ }
+ if iNdEx < 0 {
+ return 0, ErrInvalidLengthVttime
+ }
+ if depth == 0 {
+ return iNdEx, nil
+ }
+ }
+ return 0, io.ErrUnexpectedEOF
+}
+
+var (
+ ErrInvalidLengthVttime = fmt.Errorf("proto: negative length found during unmarshaling")
+ ErrIntOverflowVttime = fmt.Errorf("proto: integer overflow")
+ ErrUnexpectedEndOfGroupVttime = fmt.Errorf("proto: unexpected end of group")
+)
diff --git a/go/vt/proto/vtworkerdata/vtworkerdata.pb.go b/go/vt/proto/vtworkerdata/vtworkerdata.pb.go
index ac3389283aa..769d38eea74 100644
--- a/go/vt/proto/vtworkerdata/vtworkerdata.pb.go
+++ b/go/vt/proto/vtworkerdata/vtworkerdata.pb.go
@@ -1,14 +1,15 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: vtworkerdata.proto
package vtworkerdata
import (
fmt "fmt"
+ io "io"
math "math"
+ math_bits "math/bits"
proto "github.com/golang/protobuf/proto"
-
logutil "vitess.io/vitess/go/vt/proto/logutil"
)
@@ -37,18 +38,26 @@ func (*ExecuteVtworkerCommandRequest) ProtoMessage() {}
func (*ExecuteVtworkerCommandRequest) Descriptor() ([]byte, []int) {
return fileDescriptor_32a791ab99179e8e, []int{0}
}
-
func (m *ExecuteVtworkerCommandRequest) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ExecuteVtworkerCommandRequest.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ExecuteVtworkerCommandRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ExecuteVtworkerCommandRequest.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ExecuteVtworkerCommandRequest.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ExecuteVtworkerCommandRequest) XXX_Merge(src proto.Message) {
xxx_messageInfo_ExecuteVtworkerCommandRequest.Merge(m, src)
}
func (m *ExecuteVtworkerCommandRequest) XXX_Size() int {
- return xxx_messageInfo_ExecuteVtworkerCommandRequest.Size(m)
+ return m.Size()
}
func (m *ExecuteVtworkerCommandRequest) XXX_DiscardUnknown() {
xxx_messageInfo_ExecuteVtworkerCommandRequest.DiscardUnknown(m)
@@ -77,18 +86,26 @@ func (*ExecuteVtworkerCommandResponse) ProtoMessage() {}
func (*ExecuteVtworkerCommandResponse) Descriptor() ([]byte, []int) {
return fileDescriptor_32a791ab99179e8e, []int{1}
}
-
func (m *ExecuteVtworkerCommandResponse) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_ExecuteVtworkerCommandResponse.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *ExecuteVtworkerCommandResponse) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_ExecuteVtworkerCommandResponse.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_ExecuteVtworkerCommandResponse.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *ExecuteVtworkerCommandResponse) XXX_Merge(src proto.Message) {
xxx_messageInfo_ExecuteVtworkerCommandResponse.Merge(m, src)
}
func (m *ExecuteVtworkerCommandResponse) XXX_Size() int {
- return xxx_messageInfo_ExecuteVtworkerCommandResponse.Size(m)
+ return m.Size()
}
func (m *ExecuteVtworkerCommandResponse) XXX_DiscardUnknown() {
xxx_messageInfo_ExecuteVtworkerCommandResponse.DiscardUnknown(m)
@@ -111,7 +128,7 @@ func init() {
func init() { proto.RegisterFile("vtworkerdata.proto", fileDescriptor_32a791ab99179e8e) }
var fileDescriptor_32a791ab99179e8e = []byte{
- // 175 bytes of a gzipped FileDescriptorProto
+ // 192 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x2a, 0x2b, 0x29, 0xcf,
0x2f, 0xca, 0x4e, 0x2d, 0x4a, 0x49, 0x2c, 0x49, 0xd4, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2,
0x41, 0x16, 0x93, 0xe2, 0xcd, 0xc9, 0x4f, 0x2f, 0x2d, 0xc9, 0xcc, 0x81, 0x48, 0x2a, 0x19, 0x73,
@@ -120,7 +137,395 @@ var fileDescriptor_32a791ab99179e8e = []byte{
0x17, 0x4b, 0x30, 0x2a, 0x30, 0x6b, 0x70, 0x06, 0x81, 0xd9, 0x4a, 0x6e, 0x5c, 0x72, 0xb8, 0x34,
0x15, 0x17, 0xe4, 0xe7, 0x15, 0xa7, 0x0a, 0xa9, 0x70, 0xb1, 0xa6, 0x96, 0xa5, 0xe6, 0x95, 0x48,
0x30, 0x2a, 0x30, 0x6a, 0x70, 0x1b, 0xf1, 0xe9, 0xc1, 0x6c, 0x75, 0x05, 0x89, 0x06, 0x41, 0x24,
- 0x9d, 0xb4, 0xa3, 0x34, 0xcb, 0x32, 0x4b, 0x52, 0x8b, 0x8b, 0xf5, 0x32, 0xf3, 0xf5, 0x21, 0x2c,
- 0xfd, 0xf4, 0x7c, 0xfd, 0xb2, 0x12, 0x7d, 0xb0, 0xe3, 0xf4, 0x91, 0x1d, 0x9e, 0xc4, 0x06, 0x16,
- 0x33, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0xcf, 0x82, 0xc8, 0x11, 0xe3, 0x00, 0x00, 0x00,
+ 0x9d, 0xac, 0x4f, 0x3c, 0x92, 0x63, 0xbc, 0xf0, 0x48, 0x8e, 0xf1, 0xc1, 0x23, 0x39, 0xc6, 0x19,
+ 0x8f, 0xe5, 0x18, 0xa2, 0x34, 0xcb, 0x32, 0x4b, 0x52, 0x8b, 0x8b, 0xf5, 0x32, 0xf3, 0xf5, 0x21,
+ 0x2c, 0xfd, 0xf4, 0x7c, 0xfd, 0xb2, 0x12, 0x7d, 0xb0, 0x63, 0xf5, 0x91, 0x3d, 0x92, 0xc4, 0x06,
+ 0x16, 0x33, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0x38, 0xbf, 0x62, 0x49, 0xf3, 0x00, 0x00, 0x00,
+}
+
+func (m *ExecuteVtworkerCommandRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExecuteVtworkerCommandRequest) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ExecuteVtworkerCommandRequest) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Args) > 0 {
+ for iNdEx := len(m.Args) - 1; iNdEx >= 0; iNdEx-- {
+ i -= len(m.Args[iNdEx])
+ copy(dAtA[i:], m.Args[iNdEx])
+ i = encodeVarintVtworkerdata(dAtA, i, uint64(len(m.Args[iNdEx])))
+ i--
+ dAtA[i] = 0xa
+ }
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *ExecuteVtworkerCommandResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ExecuteVtworkerCommandResponse) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *ExecuteVtworkerCommandResponse) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.Event != nil {
+ {
+ size, err := m.Event.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintVtworkerdata(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func encodeVarintVtworkerdata(dAtA []byte, offset int, v uint64) int {
+ offset -= sovVtworkerdata(v)
+ base := offset
+ for v >= 1<<7 {
+ dAtA[offset] = uint8(v&0x7f | 0x80)
+ v >>= 7
+ offset++
+ }
+ dAtA[offset] = uint8(v)
+ return base
}
+func (m *ExecuteVtworkerCommandRequest) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if len(m.Args) > 0 {
+ for _, s := range m.Args {
+ l = len(s)
+ n += 1 + l + sovVtworkerdata(uint64(l))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *ExecuteVtworkerCommandResponse) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.Event != nil {
+ l = m.Event.Size()
+ n += 1 + l + sovVtworkerdata(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func sovVtworkerdata(x uint64) (n int) {
+ return (math_bits.Len64(x|1) + 6) / 7
+}
+func sozVtworkerdata(x uint64) (n int) {
+ return sovVtworkerdata(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+}
+func (m *ExecuteVtworkerCommandRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtworkerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExecuteVtworkerCommandRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExecuteVtworkerCommandRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Args", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtworkerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthVtworkerdata
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtworkerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Args = append(m.Args, string(dAtA[iNdEx:postIndex]))
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtworkerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtworkerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtworkerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ExecuteVtworkerCommandResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtworkerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ExecuteVtworkerCommandResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ExecuteVtworkerCommandResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Event", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowVtworkerdata
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthVtworkerdata
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthVtworkerdata
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Event == nil {
+ m.Event = &logutil.Event{}
+ }
+ if err := m.Event.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipVtworkerdata(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthVtworkerdata
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthVtworkerdata
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func skipVtworkerdata(dAtA []byte) (n int, err error) {
+ l := len(dAtA)
+ iNdEx := 0
+ depth := 0
+ for iNdEx < l {
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowVtworkerdata
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ wireType := int(wire & 0x7)
+ switch wireType {
+ case 0:
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowVtworkerdata
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ iNdEx++
+ if dAtA[iNdEx-1] < 0x80 {
+ break
+ }
+ }
+ case 1:
+ iNdEx += 8
+ case 2:
+ var length int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowVtworkerdata
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ length |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if length < 0 {
+ return 0, ErrInvalidLengthVtworkerdata
+ }
+ iNdEx += length
+ case 3:
+ depth++
+ case 4:
+ if depth == 0 {
+ return 0, ErrUnexpectedEndOfGroupVtworkerdata
+ }
+ depth--
+ case 5:
+ iNdEx += 4
+ default:
+ return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
+ }
+ if iNdEx < 0 {
+ return 0, ErrInvalidLengthVtworkerdata
+ }
+ if depth == 0 {
+ return iNdEx, nil
+ }
+ }
+ return 0, io.ErrUnexpectedEOF
+}
+
+var (
+ ErrInvalidLengthVtworkerdata = fmt.Errorf("proto: negative length found during unmarshaling")
+ ErrIntOverflowVtworkerdata = fmt.Errorf("proto: integer overflow")
+ ErrUnexpectedEndOfGroupVtworkerdata = fmt.Errorf("proto: unexpected end of group")
+)
diff --git a/go/vt/proto/vtworkerservice/vtworkerservice.pb.go b/go/vt/proto/vtworkerservice/vtworkerservice.pb.go
index 66b4c5acb7b..6eea10f8fd0 100644
--- a/go/vt/proto/vtworkerservice/vtworkerservice.pb.go
+++ b/go/vt/proto/vtworkerservice/vtworkerservice.pb.go
@@ -1,4 +1,4 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: vtworkerservice.proto
package vtworkerservice
@@ -12,7 +12,6 @@ import (
grpc "google.golang.org/grpc"
codes "google.golang.org/grpc/codes"
status "google.golang.org/grpc/status"
-
vtworkerdata "vitess.io/vitess/go/vt/proto/vtworkerdata"
)
@@ -30,17 +29,18 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
func init() { proto.RegisterFile("vtworkerservice.proto", fileDescriptor_884fe2c3e67151b3) }
var fileDescriptor_884fe2c3e67151b3 = []byte{
- // 151 bytes of a gzipped FileDescriptorProto
+ // 168 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x12, 0x2d, 0x2b, 0x29, 0xcf,
0x2f, 0xca, 0x4e, 0x2d, 0x2a, 0x4e, 0x2d, 0x2a, 0xcb, 0x4c, 0x4e, 0xd5, 0x2b, 0x28, 0xca, 0x2f,
0xc9, 0x17, 0xe2, 0x47, 0x13, 0x96, 0x12, 0x82, 0x09, 0xa4, 0x24, 0x96, 0x24, 0x42, 0x14, 0x19,
0x35, 0x33, 0x72, 0x71, 0x84, 0x41, 0x85, 0x85, 0xca, 0xb9, 0xc4, 0x5c, 0x2b, 0x52, 0x93, 0x4b,
0x4b, 0x52, 0x61, 0x42, 0xce, 0xf9, 0xb9, 0xb9, 0x89, 0x79, 0x29, 0x42, 0xda, 0x7a, 0x28, 0x7a,
0xb1, 0xab, 0x0a, 0x4a, 0x2d, 0x2c, 0x4d, 0x2d, 0x2e, 0x91, 0xd2, 0x21, 0x4e, 0x71, 0x71, 0x41,
- 0x7e, 0x5e, 0x71, 0xaa, 0x12, 0x83, 0x01, 0xa3, 0x93, 0x5e, 0x94, 0x4e, 0x59, 0x66, 0x49, 0x6a,
- 0x71, 0xb1, 0x5e, 0x66, 0xbe, 0x3e, 0x84, 0xa5, 0x9f, 0x9e, 0xaf, 0x5f, 0x56, 0xa2, 0x0f, 0x76,
- 0xa5, 0x3e, 0x9a, 0x4f, 0x92, 0xd8, 0xc0, 0xc2, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1c,
- 0x01, 0x4d, 0x17, 0xfa, 0x00, 0x00, 0x00,
+ 0x7e, 0x5e, 0x71, 0xaa, 0x12, 0x83, 0x01, 0xa3, 0x93, 0xdd, 0x89, 0x47, 0x72, 0x8c, 0x17, 0x1e,
+ 0xc9, 0x31, 0x3e, 0x78, 0x24, 0xc7, 0x38, 0xe3, 0xb1, 0x1c, 0x43, 0x94, 0x4e, 0x59, 0x66, 0x49,
+ 0x6a, 0x71, 0xb1, 0x5e, 0x66, 0xbe, 0x3e, 0x84, 0xa5, 0x9f, 0x9e, 0xaf, 0x5f, 0x56, 0xa2, 0x0f,
+ 0x76, 0xb5, 0x3e, 0x9a, 0xcf, 0x92, 0xd8, 0xc0, 0xc2, 0xc6, 0x80, 0x00, 0x00, 0x00, 0xff, 0xff,
+ 0x6a, 0x5d, 0x63, 0x01, 0x0a, 0x01, 0x00, 0x00,
}
// Reference imports to suppress errors if they are not otherwise used.
diff --git a/go/vt/proto/workflow/workflow.pb.go b/go/vt/proto/workflow/workflow.pb.go
index 44e4c451786..4d258ec4a67 100644
--- a/go/vt/proto/workflow/workflow.pb.go
+++ b/go/vt/proto/workflow/workflow.pb.go
@@ -1,11 +1,13 @@
-// Code generated by protoc-gen-go. DO NOT EDIT.
+// Code generated by protoc-gen-gogo. DO NOT EDIT.
// source: workflow.proto
package workflow
import (
fmt "fmt"
+ io "io"
math "math"
+ math_bits "math/bits"
proto "github.com/golang/protobuf/proto"
)
@@ -128,18 +130,26 @@ func (*Workflow) ProtoMessage() {}
func (*Workflow) Descriptor() ([]byte, []int) {
return fileDescriptor_892c7f566756b0be, []int{0}
}
-
func (m *Workflow) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Workflow.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Workflow) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Workflow.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Workflow.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Workflow) XXX_Merge(src proto.Message) {
xxx_messageInfo_Workflow.Merge(m, src)
}
func (m *Workflow) XXX_Size() int {
- return xxx_messageInfo_Workflow.Size(m)
+ return m.Size()
}
func (m *Workflow) XXX_DiscardUnknown() {
xxx_messageInfo_Workflow.DiscardUnknown(m)
@@ -233,18 +243,26 @@ func (*WorkflowCheckpoint) ProtoMessage() {}
func (*WorkflowCheckpoint) Descriptor() ([]byte, []int) {
return fileDescriptor_892c7f566756b0be, []int{1}
}
-
func (m *WorkflowCheckpoint) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_WorkflowCheckpoint.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *WorkflowCheckpoint) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_WorkflowCheckpoint.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_WorkflowCheckpoint.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *WorkflowCheckpoint) XXX_Merge(src proto.Message) {
xxx_messageInfo_WorkflowCheckpoint.Merge(m, src)
}
func (m *WorkflowCheckpoint) XXX_Size() int {
- return xxx_messageInfo_WorkflowCheckpoint.Size(m)
+ return m.Size()
}
func (m *WorkflowCheckpoint) XXX_DiscardUnknown() {
xxx_messageInfo_WorkflowCheckpoint.DiscardUnknown(m)
@@ -290,18 +308,26 @@ func (*Task) ProtoMessage() {}
func (*Task) Descriptor() ([]byte, []int) {
return fileDescriptor_892c7f566756b0be, []int{2}
}
-
func (m *Task) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_Task.Unmarshal(m, b)
+ return m.Unmarshal(b)
}
func (m *Task) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_Task.Marshal(b, m, deterministic)
+ if deterministic {
+ return xxx_messageInfo_Task.Marshal(b, m, deterministic)
+ } else {
+ b = b[:cap(b)]
+ n, err := m.MarshalToSizedBuffer(b)
+ if err != nil {
+ return nil, err
+ }
+ return b[:n], nil
+ }
}
func (m *Task) XXX_Merge(src proto.Message) {
xxx_messageInfo_Task.Merge(m, src)
}
func (m *Task) XXX_Size() int {
- return xxx_messageInfo_Task.Size(m)
+ return m.Size()
}
func (m *Task) XXX_DiscardUnknown() {
xxx_messageInfo_Task.DiscardUnknown(m)
@@ -351,38 +377,1361 @@ func init() {
func init() { proto.RegisterFile("workflow.proto", fileDescriptor_892c7f566756b0be) }
var fileDescriptor_892c7f566756b0be = []byte{
- // 517 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x53, 0x6f, 0x8b, 0xd3, 0x4e,
- 0x10, 0xfe, 0x25, 0x6d, 0xae, 0xe9, 0xa4, 0x97, 0x2b, 0xf3, 0x3b, 0x30, 0x16, 0xd4, 0x5a, 0x94,
- 0xab, 0x05, 0x5b, 0xa8, 0x20, 0xa2, 0xdc, 0x81, 0x7f, 0xf1, 0xd5, 0xbd, 0x48, 0x0f, 0x05, 0xdf,
- 0x94, 0xbd, 0x66, 0xaf, 0x2e, 0xbd, 0xee, 0x1e, 0x9b, 0x69, 0x8f, 0x7e, 0x04, 0x3f, 0x98, 0x5f,
- 0xc1, 0xcf, 0x23, 0xbb, 0xdb, 0xa4, 0x8d, 0x8a, 0xe0, 0xbb, 0x99, 0x79, 0xe6, 0x79, 0x26, 0x3b,
- 0xf3, 0x04, 0xe2, 0x5b, 0xa5, 0x17, 0x57, 0xd7, 0xea, 0x76, 0x78, 0xa3, 0x15, 0x29, 0x0c, 0x8b,
- 0xbc, 0xf7, 0xcd, 0x87, 0xf0, 0xf3, 0x36, 0x41, 0x84, 0xfa, 0x6a, 0x25, 0xb2, 0xc4, 0xeb, 0x7a,
- 0xfd, 0x66, 0x6a, 0x63, 0x7c, 0x08, 0xad, 0x2b, 0x36, 0x23, 0xa5, 0x37, 0x53, 0xc9, 0x96, 0x3c,
- 0xf1, 0x2d, 0x16, 0x6d, 0x6b, 0xe7, 0x6c, 0xc9, 0x0d, 0xcd, 0x42, 0x35, 0x47, 0x33, 0x31, 0x3e,
- 0x85, 0x20, 0x27, 0x46, 0x3c, 0xa9, 0x77, 0xbd, 0x7e, 0x3c, 0xbe, 0x33, 0x2c, 0xbf, 0xa0, 0x98,
- 0x36, 0x31, 0x70, 0xea, 0xba, 0x8c, 0x44, 0xc6, 0x88, 0x25, 0x41, 0xd7, 0xeb, 0xb7, 0x52, 0x1b,
- 0xe3, 0x31, 0x04, 0x5c, 0x6b, 0xa5, 0x93, 0x03, 0xab, 0xeb, 0x12, 0xbc, 0x07, 0x90, 0x13, 0xd3,
- 0x34, 0x25, 0xb1, 0xe4, 0x49, 0xa3, 0xeb, 0xf5, 0x6b, 0x69, 0xd3, 0x56, 0x2e, 0xc4, 0x92, 0xe3,
- 0x5d, 0x08, 0xb9, 0xcc, 0x1c, 0x18, 0x5a, 0xb0, 0xc1, 0x65, 0x66, 0xa1, 0x07, 0x10, 0xcd, 0x34,
- 0x67, 0xc4, 0x1d, 0xda, 0xb4, 0x28, 0xb8, 0x92, 0x69, 0xe8, 0x7d, 0xf7, 0x01, 0x8b, 0xaf, 0x7b,
- 0xfb, 0x95, 0xcf, 0x16, 0x37, 0x4a, 0x48, 0x32, 0x1b, 0x98, 0xa9, 0x8c, 0x4f, 0xd7, 0x5c, 0xe7,
- 0x42, 0x49, 0xbb, 0x9d, 0x20, 0x8d, 0x4c, 0xed, 0x93, 0x2b, 0xe1, 0x29, 0x04, 0xc4, 0xf2, 0x45,
- 0x9e, 0xf8, 0xdd, 0x5a, 0x3f, 0x1a, 0x9f, 0xfc, 0xfe, 0xda, 0x9d, 0xde, 0xf0, 0xc2, 0x74, 0xbe,
- 0x97, 0xa4, 0x37, 0xa9, 0x63, 0xe1, 0x07, 0x08, 0x73, 0x4e, 0x24, 0xe4, 0x3c, 0x4f, 0x6a, 0x56,
- 0x61, 0xf0, 0x57, 0x85, 0xc9, 0xb6, 0xd9, 0x89, 0x94, 0xdc, 0xce, 0x47, 0x80, 0x9d, 0x38, 0xb6,
- 0xa1, 0xb6, 0xe0, 0x9b, 0xed, 0x31, 0x4d, 0x88, 0x8f, 0x20, 0x58, 0xb3, 0xeb, 0x95, 0x3b, 0x62,
- 0x34, 0x8e, 0x77, 0x43, 0x0c, 0x2d, 0x75, 0xe0, 0x4b, 0xff, 0x85, 0xd7, 0x79, 0x05, 0x87, 0x95,
- 0x21, 0x7f, 0x10, 0x3b, 0xde, 0x17, 0x6b, 0xee, 0x91, 0x7b, 0x3f, 0x3c, 0xa8, 0x1b, 0x41, 0x8c,
- 0xc1, 0x2f, 0xdd, 0xe4, 0x8b, 0x0c, 0x9f, 0x14, 0xa6, 0xf0, 0xad, 0x29, 0xfe, 0xaf, 0xce, 0xaf,
- 0x18, 0xe2, 0x0c, 0x80, 0x11, 0x69, 0x71, 0xb9, 0x22, 0x5e, 0x2c, 0xe5, 0x7e, 0xb5, 0x7f, 0xf8,
- 0xba, 0x6c, 0x70, 0x8b, 0xd8, 0x63, 0xec, 0xcc, 0x53, 0xdf, 0x33, 0x4f, 0xe7, 0x14, 0x8e, 0x7e,
- 0x21, 0xfd, 0xcb, 0xc3, 0x06, 0xcf, 0xe1, 0xb0, 0xe2, 0x5e, 0x8c, 0x01, 0xce, 0x15, 0x4d, 0x8c,
- 0xfb, 0x78, 0xd6, 0xfe, 0x0f, 0x23, 0x68, 0xa4, 0x2b, 0x29, 0x85, 0x9c, 0xb7, 0x3d, 0x0c, 0xa1,
- 0xfe, 0x4e, 0x49, 0xde, 0xf6, 0x07, 0x67, 0xd0, 0x2c, 0x1f, 0x88, 0x08, 0xb1, 0x49, 0x2a, 0xbc,
- 0x23, 0x88, 0xec, 0x05, 0x4a, 0x6e, 0x0b, 0x42, 0x53, 0x70, 0xfc, 0x37, 0x27, 0x5f, 0x1e, 0xaf,
- 0x05, 0xf1, 0x3c, 0x1f, 0x0a, 0x35, 0x72, 0xd1, 0x68, 0xae, 0x46, 0x6b, 0x1a, 0xd9, 0xdf, 0x79,
- 0x54, 0xac, 0xe5, 0xf2, 0xc0, 0xe6, 0xcf, 0x7e, 0x06, 0x00, 0x00, 0xff, 0xff, 0x75, 0x1d, 0xcd,
- 0x85, 0xf0, 0x03, 0x00, 0x00,
+ // 538 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x53, 0xdd, 0x8a, 0xd3, 0x40,
+ 0x14, 0xde, 0x49, 0x9b, 0xdd, 0xf4, 0xa4, 0x9b, 0x2d, 0xe3, 0x82, 0xb1, 0x60, 0xad, 0x45, 0xb1,
+ 0x16, 0x4c, 0xa0, 0x82, 0x8a, 0xb2, 0x0b, 0xfe, 0xe2, 0xd5, 0x5e, 0xa4, 0x8b, 0x82, 0x37, 0x65,
+ 0xb6, 0x99, 0xad, 0x43, 0xb7, 0x33, 0xcb, 0x64, 0xd2, 0xa5, 0x8f, 0xe0, 0x1b, 0xf8, 0x42, 0x82,
+ 0x97, 0x5e, 0x79, 0x2d, 0xf5, 0x45, 0x64, 0x66, 0x9a, 0xb4, 0x51, 0x11, 0xbc, 0x3b, 0xe7, 0x7c,
+ 0xe7, 0xfb, 0x4e, 0xe6, 0x9c, 0x2f, 0x10, 0x5c, 0x09, 0x39, 0x3b, 0xbf, 0x10, 0x57, 0xd1, 0xa5,
+ 0x14, 0x4a, 0x60, 0xaf, 0xc8, 0x7b, 0x9f, 0x1c, 0xf0, 0xde, 0xaf, 0x13, 0x8c, 0xa1, 0x9e, 0xe7,
+ 0x2c, 0x0d, 0x51, 0x17, 0xf5, 0x1b, 0x89, 0x89, 0xf1, 0x6d, 0x68, 0x9e, 0x93, 0x89, 0x12, 0x72,
+ 0x39, 0xe6, 0x64, 0x4e, 0x43, 0xc7, 0x60, 0xfe, 0xba, 0x76, 0x42, 0xe6, 0x54, 0xd3, 0x0c, 0x54,
+ 0xb3, 0x34, 0x1d, 0xe3, 0x07, 0xe0, 0x66, 0x8a, 0x28, 0x1a, 0xd6, 0xbb, 0xa8, 0x1f, 0x0c, 0xaf,
+ 0x47, 0xe5, 0x17, 0x14, 0xd3, 0x46, 0x1a, 0x4e, 0x6c, 0x97, 0x96, 0x48, 0x89, 0x22, 0xa1, 0xdb,
+ 0x45, 0xfd, 0x66, 0x62, 0x62, 0x7c, 0x08, 0x2e, 0x95, 0x52, 0xc8, 0x70, 0xd7, 0xe8, 0xda, 0x04,
+ 0xdf, 0x04, 0xc8, 0x14, 0x91, 0x6a, 0xac, 0xd8, 0x9c, 0x86, 0x7b, 0x5d, 0xd4, 0xaf, 0x25, 0x0d,
+ 0x53, 0x39, 0x65, 0x73, 0x8a, 0x6f, 0x80, 0x47, 0x79, 0x6a, 0x41, 0xcf, 0x80, 0x7b, 0x94, 0xa7,
+ 0x06, 0xba, 0x05, 0xfe, 0x44, 0x52, 0xa2, 0xa8, 0x45, 0x1b, 0x06, 0x05, 0x5b, 0xd2, 0x0d, 0xbd,
+ 0x2f, 0x0e, 0xe0, 0xe2, 0xeb, 0x5e, 0x7e, 0xa4, 0x93, 0xd9, 0xa5, 0x60, 0x5c, 0xe9, 0x0d, 0x4c,
+ 0x44, 0x4a, 0xc7, 0x0b, 0x2a, 0x33, 0x26, 0xb8, 0xd9, 0x8e, 0x9b, 0xf8, 0xba, 0xf6, 0xce, 0x96,
+ 0xf0, 0x11, 0xb8, 0x8a, 0x64, 0xb3, 0x2c, 0x74, 0xba, 0xb5, 0xbe, 0x3f, 0xbc, 0xf7, 0xe7, 0x6b,
+ 0x37, 0x7a, 0xd1, 0xa9, 0xee, 0x7c, 0xcd, 0x95, 0x5c, 0x26, 0x96, 0x85, 0xdf, 0x80, 0x97, 0x51,
+ 0xa5, 0x18, 0x9f, 0x66, 0x61, 0xcd, 0x28, 0x0c, 0xfe, 0xa9, 0x30, 0x5a, 0x37, 0x5b, 0x91, 0x92,
+ 0xdb, 0x7e, 0x0b, 0xb0, 0x11, 0xc7, 0x2d, 0xa8, 0xcd, 0xe8, 0x72, 0x7d, 0x4c, 0x1d, 0xe2, 0x3b,
+ 0xe0, 0x2e, 0xc8, 0x45, 0x6e, 0x8f, 0xe8, 0x0f, 0x83, 0xcd, 0x10, 0x4d, 0x4b, 0x2c, 0xf8, 0xd4,
+ 0x79, 0x82, 0xda, 0xcf, 0x60, 0xbf, 0x32, 0xe4, 0x2f, 0x62, 0x87, 0xdb, 0x62, 0x8d, 0x2d, 0x72,
+ 0xef, 0x3b, 0x82, 0xba, 0x16, 0xc4, 0x01, 0x38, 0xa5, 0x9b, 0x1c, 0x96, 0xe2, 0xfb, 0x85, 0x29,
+ 0x1c, 0x63, 0x8a, 0x6b, 0xd5, 0xf9, 0x15, 0x43, 0x1c, 0x03, 0x10, 0xa5, 0x24, 0x3b, 0xcb, 0x15,
+ 0x2d, 0x96, 0xd2, 0xa9, 0xf6, 0x47, 0xcf, 0xcb, 0x06, 0xbb, 0x88, 0x2d, 0xc6, 0xc6, 0x3c, 0xf5,
+ 0x2d, 0xf3, 0xb4, 0x8f, 0xe0, 0xe0, 0x37, 0xd2, 0xff, 0x3c, 0x6c, 0xf0, 0x08, 0xf6, 0x2b, 0xee,
+ 0xc5, 0x01, 0xc0, 0x89, 0x50, 0x23, 0xed, 0x3e, 0x9a, 0xb6, 0x76, 0xb0, 0x0f, 0x7b, 0x49, 0xce,
+ 0x39, 0xe3, 0xd3, 0x16, 0xc2, 0x1e, 0xd4, 0x5f, 0x09, 0x4e, 0x5b, 0xce, 0xe0, 0x18, 0x1a, 0xe5,
+ 0x03, 0x31, 0x86, 0x40, 0x27, 0x15, 0xde, 0x01, 0xf8, 0xe6, 0x02, 0x25, 0xb7, 0x09, 0x9e, 0x2e,
+ 0x58, 0xfe, 0x8b, 0xc7, 0x5f, 0x57, 0x1d, 0xf4, 0x6d, 0xd5, 0x41, 0x3f, 0x56, 0x1d, 0xf4, 0xf9,
+ 0x67, 0x67, 0xe7, 0xc3, 0xdd, 0x05, 0x53, 0x34, 0xcb, 0x22, 0x26, 0x62, 0x1b, 0xc5, 0x53, 0x11,
+ 0x2f, 0x54, 0x6c, 0x7e, 0xef, 0xb8, 0x58, 0xd3, 0xd9, 0xae, 0xc9, 0x1f, 0xfe, 0x0a, 0x00, 0x00,
+ 0xff, 0xff, 0xce, 0x9e, 0x9e, 0xfc, 0x00, 0x04, 0x00, 0x00,
+}
+
+func (m *Workflow) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Workflow) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Workflow) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if m.CreateTime != 0 {
+ i = encodeVarintWorkflow(dAtA, i, uint64(m.CreateTime))
+ i--
+ dAtA[i] = 0x48
+ }
+ if m.EndTime != 0 {
+ i = encodeVarintWorkflow(dAtA, i, uint64(m.EndTime))
+ i--
+ dAtA[i] = 0x40
+ }
+ if m.StartTime != 0 {
+ i = encodeVarintWorkflow(dAtA, i, uint64(m.StartTime))
+ i--
+ dAtA[i] = 0x38
+ }
+ if len(m.Error) > 0 {
+ i -= len(m.Error)
+ copy(dAtA[i:], m.Error)
+ i = encodeVarintWorkflow(dAtA, i, uint64(len(m.Error)))
+ i--
+ dAtA[i] = 0x32
+ }
+ if len(m.Data) > 0 {
+ i -= len(m.Data)
+ copy(dAtA[i:], m.Data)
+ i = encodeVarintWorkflow(dAtA, i, uint64(len(m.Data)))
+ i--
+ dAtA[i] = 0x2a
+ }
+ if m.State != 0 {
+ i = encodeVarintWorkflow(dAtA, i, uint64(m.State))
+ i--
+ dAtA[i] = 0x20
+ }
+ if len(m.Name) > 0 {
+ i -= len(m.Name)
+ copy(dAtA[i:], m.Name)
+ i = encodeVarintWorkflow(dAtA, i, uint64(len(m.Name)))
+ i--
+ dAtA[i] = 0x1a
+ }
+ if len(m.FactoryName) > 0 {
+ i -= len(m.FactoryName)
+ copy(dAtA[i:], m.FactoryName)
+ i = encodeVarintWorkflow(dAtA, i, uint64(len(m.FactoryName)))
+ i--
+ dAtA[i] = 0x12
+ }
+ if len(m.Uuid) > 0 {
+ i -= len(m.Uuid)
+ copy(dAtA[i:], m.Uuid)
+ i = encodeVarintWorkflow(dAtA, i, uint64(len(m.Uuid)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *WorkflowCheckpoint) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *WorkflowCheckpoint) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *WorkflowCheckpoint) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Settings) > 0 {
+ for k := range m.Settings {
+ v := m.Settings[k]
+ baseI := i
+ i -= len(v)
+ copy(dAtA[i:], v)
+ i = encodeVarintWorkflow(dAtA, i, uint64(len(v)))
+ i--
+ dAtA[i] = 0x12
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintWorkflow(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintWorkflow(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if len(m.Tasks) > 0 {
+ for k := range m.Tasks {
+ v := m.Tasks[k]
+ baseI := i
+ if v != nil {
+ {
+ size, err := v.MarshalToSizedBuffer(dAtA[:i])
+ if err != nil {
+ return 0, err
+ }
+ i -= size
+ i = encodeVarintWorkflow(dAtA, i, uint64(size))
+ }
+ i--
+ dAtA[i] = 0x12
+ }
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintWorkflow(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintWorkflow(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x12
+ }
+ }
+ if m.CodeVersion != 0 {
+ i = encodeVarintWorkflow(dAtA, i, uint64(m.CodeVersion))
+ i--
+ dAtA[i] = 0x8
+ }
+ return len(dAtA) - i, nil
+}
+
+func (m *Task) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalToSizedBuffer(dAtA[:size])
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *Task) MarshalTo(dAtA []byte) (int, error) {
+ size := m.Size()
+ return m.MarshalToSizedBuffer(dAtA[:size])
+}
+
+func (m *Task) MarshalToSizedBuffer(dAtA []byte) (int, error) {
+ i := len(dAtA)
+ _ = i
+ var l int
+ _ = l
+ if m.XXX_unrecognized != nil {
+ i -= len(m.XXX_unrecognized)
+ copy(dAtA[i:], m.XXX_unrecognized)
+ }
+ if len(m.Error) > 0 {
+ i -= len(m.Error)
+ copy(dAtA[i:], m.Error)
+ i = encodeVarintWorkflow(dAtA, i, uint64(len(m.Error)))
+ i--
+ dAtA[i] = 0x22
+ }
+ if len(m.Attributes) > 0 {
+ for k := range m.Attributes {
+ v := m.Attributes[k]
+ baseI := i
+ i -= len(v)
+ copy(dAtA[i:], v)
+ i = encodeVarintWorkflow(dAtA, i, uint64(len(v)))
+ i--
+ dAtA[i] = 0x12
+ i -= len(k)
+ copy(dAtA[i:], k)
+ i = encodeVarintWorkflow(dAtA, i, uint64(len(k)))
+ i--
+ dAtA[i] = 0xa
+ i = encodeVarintWorkflow(dAtA, i, uint64(baseI-i))
+ i--
+ dAtA[i] = 0x1a
+ }
+ }
+ if m.State != 0 {
+ i = encodeVarintWorkflow(dAtA, i, uint64(m.State))
+ i--
+ dAtA[i] = 0x10
+ }
+ if len(m.Id) > 0 {
+ i -= len(m.Id)
+ copy(dAtA[i:], m.Id)
+ i = encodeVarintWorkflow(dAtA, i, uint64(len(m.Id)))
+ i--
+ dAtA[i] = 0xa
+ }
+ return len(dAtA) - i, nil
+}
+
+func encodeVarintWorkflow(dAtA []byte, offset int, v uint64) int {
+ offset -= sovWorkflow(v)
+ base := offset
+ for v >= 1<<7 {
+ dAtA[offset] = uint8(v&0x7f | 0x80)
+ v >>= 7
+ offset++
+ }
+ dAtA[offset] = uint8(v)
+ return base
}
+func (m *Workflow) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Uuid)
+ if l > 0 {
+ n += 1 + l + sovWorkflow(uint64(l))
+ }
+ l = len(m.FactoryName)
+ if l > 0 {
+ n += 1 + l + sovWorkflow(uint64(l))
+ }
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovWorkflow(uint64(l))
+ }
+ if m.State != 0 {
+ n += 1 + sovWorkflow(uint64(m.State))
+ }
+ l = len(m.Data)
+ if l > 0 {
+ n += 1 + l + sovWorkflow(uint64(l))
+ }
+ l = len(m.Error)
+ if l > 0 {
+ n += 1 + l + sovWorkflow(uint64(l))
+ }
+ if m.StartTime != 0 {
+ n += 1 + sovWorkflow(uint64(m.StartTime))
+ }
+ if m.EndTime != 0 {
+ n += 1 + sovWorkflow(uint64(m.EndTime))
+ }
+ if m.CreateTime != 0 {
+ n += 1 + sovWorkflow(uint64(m.CreateTime))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *WorkflowCheckpoint) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ if m.CodeVersion != 0 {
+ n += 1 + sovWorkflow(uint64(m.CodeVersion))
+ }
+ if len(m.Tasks) > 0 {
+ for k, v := range m.Tasks {
+ _ = k
+ _ = v
+ l = 0
+ if v != nil {
+ l = v.Size()
+ l += 1 + sovWorkflow(uint64(l))
+ }
+ mapEntrySize := 1 + len(k) + sovWorkflow(uint64(len(k))) + l
+ n += mapEntrySize + 1 + sovWorkflow(uint64(mapEntrySize))
+ }
+ }
+ if len(m.Settings) > 0 {
+ for k, v := range m.Settings {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovWorkflow(uint64(len(k))) + 1 + len(v) + sovWorkflow(uint64(len(v)))
+ n += mapEntrySize + 1 + sovWorkflow(uint64(mapEntrySize))
+ }
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func (m *Task) Size() (n int) {
+ if m == nil {
+ return 0
+ }
+ var l int
+ _ = l
+ l = len(m.Id)
+ if l > 0 {
+ n += 1 + l + sovWorkflow(uint64(l))
+ }
+ if m.State != 0 {
+ n += 1 + sovWorkflow(uint64(m.State))
+ }
+ if len(m.Attributes) > 0 {
+ for k, v := range m.Attributes {
+ _ = k
+ _ = v
+ mapEntrySize := 1 + len(k) + sovWorkflow(uint64(len(k))) + 1 + len(v) + sovWorkflow(uint64(len(v)))
+ n += mapEntrySize + 1 + sovWorkflow(uint64(mapEntrySize))
+ }
+ }
+ l = len(m.Error)
+ if l > 0 {
+ n += 1 + l + sovWorkflow(uint64(l))
+ }
+ if m.XXX_unrecognized != nil {
+ n += len(m.XXX_unrecognized)
+ }
+ return n
+}
+
+func sovWorkflow(x uint64) (n int) {
+ return (math_bits.Len64(x|1) + 6) / 7
+}
+func sozWorkflow(x uint64) (n int) {
+ return sovWorkflow(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+}
+func (m *Workflow) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Workflow: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Workflow: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Uuid", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Uuid = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field FactoryName", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.FactoryName = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field State", wireType)
+ }
+ m.State = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.State |= WorkflowState(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 5:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Data", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Data = append(m.Data[:0], dAtA[iNdEx:postIndex]...)
+ if m.Data == nil {
+ m.Data = []byte{}
+ }
+ iNdEx = postIndex
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Error = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 7:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field StartTime", wireType)
+ }
+ m.StartTime = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.StartTime |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 8:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field EndTime", wireType)
+ }
+ m.EndTime = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.EndTime |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 9:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CreateTime", wireType)
+ }
+ m.CreateTime = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.CreateTime |= int64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipWorkflow(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *WorkflowCheckpoint) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: WorkflowCheckpoint: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: WorkflowCheckpoint: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CodeVersion", wireType)
+ }
+ m.CodeVersion = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.CodeVersion |= int32(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Tasks", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Tasks == nil {
+ m.Tasks = make(map[string]*Task)
+ }
+ var mapkey string
+ var mapvalue *Task
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var mapmsglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ mapmsglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if mapmsglen < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ postmsgIndex := iNdEx + mapmsglen
+ if postmsgIndex < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ if postmsgIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = &Task{}
+ if err := mapvalue.Unmarshal(dAtA[iNdEx:postmsgIndex]); err != nil {
+ return err
+ }
+ iNdEx = postmsgIndex
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipWorkflow(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.Tasks[mapkey] = mapvalue
+ iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Settings", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Settings == nil {
+ m.Settings = make(map[string]string)
+ }
+ var mapkey string
+ var mapvalue string
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipWorkflow(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.Settings[mapkey] = mapvalue
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipWorkflow(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *Task) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: Task: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: Task: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Id = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field State", wireType)
+ }
+ m.State = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.State |= TaskState(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Attributes", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= int(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ postIndex := iNdEx + msglen
+ if postIndex < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Attributes == nil {
+ m.Attributes = make(map[string]string)
+ }
+ var mapkey string
+ var mapvalue string
+ for iNdEx < postIndex {
+ entryPreIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ if fieldNum == 1 {
+ var stringLenmapkey uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapkey |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapkey := int(stringLenmapkey)
+ if intStringLenmapkey < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ postStringIndexmapkey := iNdEx + intStringLenmapkey
+ if postStringIndexmapkey < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ if postStringIndexmapkey > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapkey = string(dAtA[iNdEx:postStringIndexmapkey])
+ iNdEx = postStringIndexmapkey
+ } else if fieldNum == 2 {
+ var stringLenmapvalue uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLenmapvalue |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLenmapvalue := int(stringLenmapvalue)
+ if intStringLenmapvalue < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ postStringIndexmapvalue := iNdEx + intStringLenmapvalue
+ if postStringIndexmapvalue < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ if postStringIndexmapvalue > l {
+ return io.ErrUnexpectedEOF
+ }
+ mapvalue = string(dAtA[iNdEx:postStringIndexmapvalue])
+ iNdEx = postStringIndexmapvalue
+ } else {
+ iNdEx = entryPreIndex
+ skippy, err := skipWorkflow(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ if (iNdEx + skippy) > postIndex {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+ m.Attributes[mapkey] = mapvalue
+ iNdEx = postIndex
+ case 4:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= uint64(b&0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Error = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipWorkflow(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ if (iNdEx + skippy) < 0 {
+ return ErrInvalidLengthWorkflow
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.XXX_unrecognized = append(m.XXX_unrecognized, dAtA[iNdEx:iNdEx+skippy]...)
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func skipWorkflow(dAtA []byte) (n int, err error) {
+ l := len(dAtA)
+ iNdEx := 0
+ depth := 0
+ for iNdEx < l {
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ wireType := int(wire & 0x7)
+ switch wireType {
+ case 0:
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ iNdEx++
+ if dAtA[iNdEx-1] < 0x80 {
+ break
+ }
+ }
+ case 1:
+ iNdEx += 8
+ case 2:
+ var length int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowWorkflow
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ length |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if length < 0 {
+ return 0, ErrInvalidLengthWorkflow
+ }
+ iNdEx += length
+ case 3:
+ depth++
+ case 4:
+ if depth == 0 {
+ return 0, ErrUnexpectedEndOfGroupWorkflow
+ }
+ depth--
+ case 5:
+ iNdEx += 4
+ default:
+ return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
+ }
+ if iNdEx < 0 {
+ return 0, ErrInvalidLengthWorkflow
+ }
+ if depth == 0 {
+ return iNdEx, nil
+ }
+ }
+ return 0, io.ErrUnexpectedEOF
+}
+
+var (
+ ErrInvalidLengthWorkflow = fmt.Errorf("proto: negative length found during unmarshaling")
+ ErrIntOverflowWorkflow = fmt.Errorf("proto: integer overflow")
+ ErrUnexpectedEndOfGroupWorkflow = fmt.Errorf("proto: unexpected end of group")
+)
diff --git a/go/vt/schema/online_ddl.go b/go/vt/schema/online_ddl.go
index 39b5bb08134..ea5dc783317 100644
--- a/go/vt/schema/online_ddl.go
+++ b/go/vt/schema/online_ddl.go
@@ -19,11 +19,14 @@ package schema
import (
"context"
"encoding/json"
+ "errors"
"fmt"
"regexp"
"strings"
"time"
+ "github.com/google/shlex"
+
"vitess.io/vitess/go/vt/sqlparser"
"vitess.io/vitess/go/vt/topo"
)
@@ -32,8 +35,19 @@ var (
migrationBasePath = "schema-migration"
onlineDdlUUIDRegexp = regexp.MustCompile(`^[0-f]{8}_[0-f]{4}_[0-f]{4}_[0-f]{4}_[0-f]{12}$`)
strategyParserRegexp = regexp.MustCompile(`^([\S]+)\s+(.*)$`)
- onlineDDLGeneratedTableNameRegexp = regexp.MustCompile(`^_[0-f]{8}_[0-f]{4}_[0-f]{4}_[0-f]{4}_[0-f]{12}_([0-9]{14})_(gho|ghc|del|new)$`)
+ onlineDDLGeneratedTableNameRegexp = regexp.MustCompile(`^_[0-f]{8}_[0-f]{4}_[0-f]{4}_[0-f]{4}_[0-f]{12}_([0-9]{14})_(gho|ghc|del|new|vrepl)$`)
ptOSCGeneratedTableNameRegexp = regexp.MustCompile(`^_.*_old$`)
+ revertStatementRegexp = regexp.MustCompile(`(?i)^revert\s+(.*)$`)
+)
+var (
+ // ErrOnlineDDLDisabled is returned when online DDL is disabled, and a user attempts to run an online DDL operation (submit, review, control)
+ ErrOnlineDDLDisabled = errors.New("online DDL is disabled")
+)
+
+const (
+ SchemaMigrationsTableName = "schema_migrations"
+ RevertActionStr = "revert"
+ declarativeFlag = "declarative"
)
// MigrationBasePath is the root for all schema migration entries
@@ -82,6 +96,8 @@ type DDLStrategy string
const (
// DDLStrategyDirect means not an online-ddl migration. Just a normal MySQL ALTER TABLE
DDLStrategyDirect DDLStrategy = "direct"
+ // DDLStrategyOnline requests vreplication to run the migration
+ DDLStrategyOnline DDLStrategy = "online"
// DDLStrategyGhost requests gh-ost to run the migration
DDLStrategyGhost DDLStrategy = "gh-ost"
// DDLStrategyPTOSC requests pt-online-schema-change to run the migration
@@ -92,7 +108,7 @@ const (
// A strategy is direct if it's not explciitly one of the online DDL strategies
func (s DDLStrategy) IsDirect() bool {
switch s {
- case DDLStrategyGhost, DDLStrategyPTOSC:
+ case DDLStrategyOnline, DDLStrategyGhost, DDLStrategyPTOSC:
return false
}
return true
@@ -125,7 +141,7 @@ func ParseDDLStrategy(strategyVariable string) (strategy DDLStrategy, options st
switch strategy = DDLStrategy(strategyName); strategy {
case "": // backwards compatiblity and to handle unspecified values
return DDLStrategyDirect, options, nil
- case DDLStrategyGhost, DDLStrategyPTOSC, DDLStrategyDirect:
+ case DDLStrategyOnline, DDLStrategyGhost, DDLStrategyPTOSC, DDLStrategyDirect:
return strategy, options, nil
default:
return DDLStrategyDirect, options, fmt.Errorf("Unknown online DDL strategy: '%v'", strategy)
@@ -202,25 +218,82 @@ func (onlineDDL *OnlineDDL) ToJSON() ([]byte, error) {
// GetAction extracts the DDL action type from the online DDL statement
func (onlineDDL *OnlineDDL) GetAction() (action sqlparser.DDLAction, err error) {
+ if revertStatementRegexp.MatchString(onlineDDL.SQL) {
+ return sqlparser.RevertDDLAction, nil
+ }
+
_, action, err = ParseOnlineDDLStatement(onlineDDL.SQL)
return action, err
}
// GetActionStr returns a string representation of the DDL action
-func (onlineDDL *OnlineDDL) GetActionStr() (actionStr string, err error) {
- action, err := onlineDDL.GetAction()
+func (onlineDDL *OnlineDDL) GetActionStr() (action sqlparser.DDLAction, actionStr string, err error) {
+ action, err = onlineDDL.GetAction()
if err != nil {
- return actionStr, err
+ return action, actionStr, err
}
switch action {
+ case sqlparser.RevertDDLAction:
+ return action, RevertActionStr, nil
case sqlparser.CreateDDLAction:
- return sqlparser.CreateStr, nil
+ return action, sqlparser.CreateStr, nil
case sqlparser.AlterDDLAction:
- return sqlparser.AlterStr, nil
+ return action, sqlparser.AlterStr, nil
case sqlparser.DropDDLAction:
- return sqlparser.DropStr, nil
+ return action, sqlparser.DropStr, nil
+ }
+ return action, "", fmt.Errorf("Unsupported online DDL action. SQL=%s", onlineDDL.SQL)
+}
+
+// GetRevertUUID works when this migration is a revert for another migration. It returns the UUID
+// fo the reverted migration.
+// The function returns error when this is not a revert migration.
+func (onlineDDL *OnlineDDL) GetRevertUUID() (uuid string, err error) {
+ if submatch := revertStatementRegexp.FindStringSubmatch(onlineDDL.SQL); len(submatch) > 0 {
+ return submatch[1], nil
+ }
+ return "", fmt.Errorf("Not a Revert DDL: '%s'", onlineDDL.SQL)
+}
+
+// isFlag return true when the given string is a CLI flag of the given name
+func isFlag(s string, name string) bool {
+ if s == fmt.Sprintf("-%s", name) {
+ return true
+ }
+ if s == fmt.Sprintf("--%s", name) {
+ return true
+ }
+ return false
+}
+
+// hasFlag returns true when Options include named flag
+func (onlineDDL *OnlineDDL) hasFlag(name string) bool {
+ opts, _ := shlex.Split(onlineDDL.Options)
+ for _, opt := range opts {
+ if isFlag(opt, name) {
+ return true
+ }
+ }
+ return false
+}
+
+// IsDeclarative checks if strategy options include -declarative
+func (onlineDDL *OnlineDDL) IsDeclarative() bool {
+ return onlineDDL.hasFlag(declarativeFlag)
+}
+
+// RuntimeOptions returns the options used as runtime flags for given strategy, removing any internal hint options
+func (onlineDDL *OnlineDDL) RuntimeOptions() []string {
+ opts, _ := shlex.Split(onlineDDL.Options)
+ validOpts := []string{}
+ for _, opt := range opts {
+ switch {
+ case isFlag(opt, declarativeFlag):
+ default:
+ validOpts = append(validOpts, opt)
+ }
}
- return "", fmt.Errorf("Unsupported online DDL action. SQL=%s", onlineDDL.SQL)
+ return validOpts
}
// ToString returns a simple string representation of this instance
diff --git a/go/vt/schema/online_ddl_test.go b/go/vt/schema/online_ddl_test.go
index 28f28b9e6ad..024bc953b02 100644
--- a/go/vt/schema/online_ddl_test.go
+++ b/go/vt/schema/online_ddl_test.go
@@ -17,6 +17,7 @@ limitations under the License.
package schema
import (
+ "strings"
"testing"
"github.com/stretchr/testify/assert"
@@ -31,6 +32,7 @@ func TestCreateUUID(t *testing.T) {
func TestIsDirect(t *testing.T) {
assert.True(t, DDLStrategyDirect.IsDirect())
+ assert.False(t, DDLStrategyOnline.IsDirect())
assert.False(t, DDLStrategyGhost.IsDirect())
assert.False(t, DDLStrategyPTOSC.IsDirect())
assert.True(t, DDLStrategy("").IsDirect())
@@ -44,12 +46,18 @@ func TestParseDDLStrategy(t *testing.T) {
strategyVariable string
strategy DDLStrategy
options string
+ isDeclarative bool
+ runtimeOptions string
err error
}{
{
strategyVariable: "direct",
strategy: DDLStrategyDirect,
},
+ {
+ strategyVariable: "online",
+ strategy: DDLStrategyOnline,
+ },
{
strategyVariable: "gh-ost",
strategy: DDLStrategyGhost,
@@ -65,6 +73,21 @@ func TestParseDDLStrategy(t *testing.T) {
strategyVariable: "gh-ost --max-load=Threads_running=100 --allow-master",
strategy: DDLStrategyGhost,
options: "--max-load=Threads_running=100 --allow-master",
+ runtimeOptions: "--max-load=Threads_running=100 --allow-master",
+ },
+ {
+ strategyVariable: "gh-ost --max-load=Threads_running=100 -declarative",
+ strategy: DDLStrategyGhost,
+ options: "--max-load=Threads_running=100 -declarative",
+ runtimeOptions: "--max-load=Threads_running=100",
+ isDeclarative: true,
+ },
+ {
+ strategyVariable: "gh-ost --declarative --max-load=Threads_running=100",
+ strategy: DDLStrategyGhost,
+ options: "--declarative --max-load=Threads_running=100",
+ runtimeOptions: "--max-load=Threads_running=100",
+ isDeclarative: true,
},
}
for _, ts := range tt {
@@ -72,6 +95,11 @@ func TestParseDDLStrategy(t *testing.T) {
assert.NoError(t, err)
assert.Equal(t, ts.strategy, strategy)
assert.Equal(t, ts.options, options)
+ onlineDDL := &OnlineDDL{Options: options}
+ assert.Equal(t, ts.isDeclarative, onlineDDL.IsDeclarative())
+
+ runtimeOptions := strings.Join(onlineDDL.RuntimeOptions(), " ")
+ assert.Equal(t, ts.runtimeOptions, runtimeOptions)
}
{
_, _, err := ParseDDLStrategy("other")
@@ -109,7 +137,6 @@ func TestGetGCUUID(t *testing.T) {
}
assert.Equal(t, count, len(uuids))
}
-
func TestGetActionStr(t *testing.T) {
tt := []struct {
statement string
@@ -134,14 +161,16 @@ func TestGetActionStr(t *testing.T) {
},
}
for _, ts := range tt {
- onlineDDL := &OnlineDDL{SQL: ts.statement}
- actionStr, err := onlineDDL.GetActionStr()
- if ts.isError {
- assert.Error(t, err)
- } else {
- assert.NoError(t, err)
- assert.Equal(t, actionStr, ts.actionStr)
- }
+ t.Run(ts.statement, func(t *testing.T) {
+ onlineDDL := &OnlineDDL{SQL: ts.statement}
+ _, actionStr, err := onlineDDL.GetActionStr()
+ if ts.isError {
+ assert.Error(t, err)
+ } else {
+ assert.NoError(t, err)
+ assert.Equal(t, actionStr, ts.actionStr)
+ }
+ })
}
}
@@ -151,6 +180,7 @@ func TestIsOnlineDDLTableName(t *testing.T) {
"_4e5dcf80_354b_11eb_82cd_f875a4d24e90_20201203114014_ghc",
"_4e5dcf80_354b_11eb_82cd_f875a4d24e90_20201203114014_del",
"_4e5dcf80_354b_11eb_82cd_f875a4d24e90_20201203114013_new",
+ "_84371a37_6153_11eb_9917_f875a4d24e90_20210128122816_vrepl",
"_table_old",
"__table_old",
}
@@ -164,9 +194,47 @@ func TestIsOnlineDDLTableName(t *testing.T) {
"_table_gho",
"_table_ghc",
"_table_del",
+ "_table_vrepl",
"table_old",
}
for _, tableName := range irrelevantNames {
assert.False(t, IsOnlineDDLTableName(tableName))
}
}
+
+func TestGetRevertUUID(t *testing.T) {
+ tt := []struct {
+ statement string
+ uuid string
+ isError bool
+ }{
+ {
+ statement: "revert 4e5dcf80_354b_11eb_82cd_f875a4d24e90_20201203114014",
+ uuid: "4e5dcf80_354b_11eb_82cd_f875a4d24e90_20201203114014",
+ },
+ {
+ statement: "REVERT 4e5dcf80_354b_11eb_82cd_f875a4d24e90_20201203114014",
+ uuid: "4e5dcf80_354b_11eb_82cd_f875a4d24e90_20201203114014",
+ },
+ {
+ statement: "REVERT",
+ isError: true,
+ },
+ {
+ statement: "alter table t drop column c",
+ isError: true,
+ },
+ }
+ for _, ts := range tt {
+ t.Run(ts.statement, func(t *testing.T) {
+ onlineDDL := &OnlineDDL{SQL: ts.statement}
+ uuid, err := onlineDDL.GetRevertUUID()
+ if ts.isError {
+ assert.Error(t, err)
+ } else {
+ assert.NoError(t, err)
+ assert.Equal(t, uuid, ts.uuid)
+ }
+ })
+ }
+}
diff --git a/go/vt/schema/parser.go b/go/vt/schema/parser.go
index ccdf2bf0916..2708715da32 100644
--- a/go/vt/schema/parser.go
+++ b/go/vt/schema/parser.go
@@ -17,6 +17,7 @@ limitations under the License.
package schema
import (
+ "fmt"
"regexp"
"strings"
@@ -48,8 +49,22 @@ var (
// ALTER TABLE tbl something
regexp.MustCompile(alterTableBasicPattern + `([\S]+)\s+(.*$)`),
}
+ createTableRegexp = regexp.MustCompile(`(?s)(?i)(CREATE\s+TABLE\s+)` + "`" + `([^` + "`" + `]+)` + "`" + `(\s*[(].*$)`)
)
+// ReplaceTableNameInCreateTableStatement returns a modified CREATE TABLE statement, such that the table name is replaced with given name.
+// This intentionally string-replacement based, and not sqlparser.String() based, because the return statement has to be formatted _precisely_,
+// up to MySQL version nuances, like the original statement. That's in favor of tengo table comparison.
+// We expect a well formatted, no-qualifier statement in the form:
+// CREATE TABLE `some_table` ...
+func ReplaceTableNameInCreateTableStatement(createStatement string, replacementName string) (modifiedStatement string, err error) {
+ submatch := createTableRegexp.FindStringSubmatch(createStatement)
+ if len(submatch) == 0 {
+ return createStatement, fmt.Errorf("could not parse statement: %s", createStatement)
+ }
+ return fmt.Sprintf("%s`%s`%s", submatch[1], replacementName, submatch[3]), nil
+}
+
// ParseAlterTableOptions parses a ALTER ... TABLE... statement into:
// - explicit schema and table, if available
// - alter options (anything that follows ALTER ... TABLE)
diff --git a/go/vt/schema/parser_test.go b/go/vt/schema/parser_test.go
index db153c3a996..237d986bc78 100644
--- a/go/vt/schema/parser_test.go
+++ b/go/vt/schema/parser_test.go
@@ -89,3 +89,48 @@ func TestNormalizeOnlineDDL(t *testing.T) {
})
}
}
+
+func TestReplaceTableNameInCreateTableStatement(t *testing.T) {
+ replacementTableName := `my_table`
+ tt := []struct {
+ stmt string
+ expect string
+ isError bool
+ }{
+ {
+ stmt: "CREATE TABLE tbl (id int)",
+ isError: true,
+ },
+ {
+ stmt: "CREATE TABLE `tbl` (id int)",
+ expect: "CREATE TABLE `my_table` (id int)",
+ },
+ {
+ stmt: "CREATE TABLE `tbl` (id int)",
+ expect: "CREATE TABLE `my_table` (id int)",
+ },
+ {
+ stmt: "create table `tbl` (id int)",
+ expect: "create table `my_table` (id int)",
+ },
+ {
+ stmt: "CREATE TABLE `schema`.`tbl` (id int)",
+ isError: true,
+ },
+ {
+ stmt: "CREATE TABLE IF NOT EXISTS `tbl` (id int)",
+ isError: true,
+ },
+ }
+ for _, ts := range tt {
+ t.Run(ts.stmt, func(*testing.T) {
+ result, err := ReplaceTableNameInCreateTableStatement(ts.stmt, replacementTableName)
+ if ts.isError {
+ assert.Error(t, err)
+ } else {
+ assert.NoError(t, err)
+ assert.Equal(t, ts.expect, result)
+ }
+ })
+ }
+}
diff --git a/go/vt/schema/tablegc.go b/go/vt/schema/tablegc.go
index 61b2e247447..80dbb6b773a 100644
--- a/go/vt/schema/tablegc.go
+++ b/go/vt/schema/tablegc.go
@@ -76,6 +76,11 @@ func generateGCTableName(state TableGCState, uuid string, t time.Time) (tableNam
return fmt.Sprintf("_vt_%s_%s_%s", state, uuid, timestamp), nil
}
+// GenerateGCTableName creates a GC table name, based on desired state and time, and with random UUID
+func GenerateGCTableName(state TableGCState, t time.Time) (tableName string, err error) {
+ return generateGCTableName(state, "", t)
+}
+
// AnalyzeGCTableName analyzes a given table name to see if it's a GC table, and if so, parse out
// its state, uuid, and timestamp
func AnalyzeGCTableName(tableName string) (isGCTable bool, state TableGCState, uuid string, t time.Time, err error) {
diff --git a/go/vt/schemamanager/tablet_executor.go b/go/vt/schemamanager/tablet_executor.go
index 9cb0f76274c..9c43416f2b7 100644
--- a/go/vt/schemamanager/tablet_executor.go
+++ b/go/vt/schemamanager/tablet_executor.go
@@ -42,6 +42,7 @@ type TabletExecutor struct {
keyspace string
waitReplicasTimeout time.Duration
ddlStrategy string
+ skipPreflight bool
}
// NewTabletExecutor creates a new TabletExecutor instance
@@ -76,6 +77,11 @@ func (exec *TabletExecutor) SetDDLStrategy(ddlStrategy string) error {
return nil
}
+// SkipPreflight disables preflight checks
+func (exec *TabletExecutor) SkipPreflight() {
+ exec.skipPreflight = true
+}
+
// Open opens a connection to the master for every shard.
func (exec *TabletExecutor) Open(ctx context.Context, keyspace string) error {
if !exec.isClosed {
@@ -212,6 +218,9 @@ func (exec *TabletExecutor) detectBigSchemaChanges(ctx context.Context, parsedDD
}
func (exec *TabletExecutor) preflightSchemaChanges(ctx context.Context, sqls []string) error {
+ if exec.skipPreflight {
+ return nil
+ }
_, err := exec.wr.TabletManagerClient().PreflightSchema(ctx, exec.tablets[0], sqls)
return err
}
diff --git a/go/vt/schemamanager/tablet_executor_test.go b/go/vt/schemamanager/tablet_executor_test.go
index 954d1247a90..ab6c1f16e83 100644
--- a/go/vt/schemamanager/tablet_executor_test.go
+++ b/go/vt/schemamanager/tablet_executor_test.go
@@ -239,6 +239,12 @@ func TestIsOnlineSchemaDDL(t *testing.T) {
isOnlineDDL: true,
strategy: schema.DDLStrategyGhost,
},
+ {
+ query: "ALTER TABLE t ADD COLUMN i INT",
+ ddlStrategy: "online",
+ isOnlineDDL: true,
+ strategy: schema.DDLStrategyOnline,
+ },
{
query: "ALTER TABLE t ADD COLUMN i INT",
ddlStrategy: "",
@@ -257,6 +263,11 @@ func TestIsOnlineSchemaDDL(t *testing.T) {
strategy: schema.DDLStrategyGhost,
options: "--max-load=Threads_running=100",
},
+ {
+ query: "TRUNCATE TABLE t",
+ ddlStrategy: "online",
+ isOnlineDDL: false,
+ },
{
query: "TRUNCATE TABLE t",
ddlStrategy: "gh-ost",
diff --git a/go/vt/servenv/buildinfo.go b/go/vt/servenv/buildinfo.go
index 4eb9bbf3c8f..449d226ac15 100644
--- a/go/vt/servenv/buildinfo.go
+++ b/go/vt/servenv/buildinfo.go
@@ -23,10 +23,22 @@ import (
"strconv"
"time"
+ "vitess.io/vitess/go/vt/proto/vtrpc"
+ "vitess.io/vitess/go/vt/vterrors"
+
+ "vitess.io/vitess/go/vt/log"
+
+ "vitess.io/vitess/go/vt/sqlparser"
+
"vitess.io/vitess/go/stats"
)
var (
+ // MySQLServerVersion is what Vitess will present as it's version during the connection handshake,
+ // and as the value to the @@version system variable. If nothing is provided, Vitess will report itself as
+ // a specific MySQL version with the vitess version appended to it
+ MySQLServerVersion = flag.String("mysql_server_version", "", "MySQL server version to advertise.")
+
buildHost = ""
buildUser = ""
buildTime = ""
@@ -52,6 +64,7 @@ type versionInfo struct {
goVersion string
goOS string
goArch string
+ version string
}
func (v *versionInfo) Print() {
@@ -59,11 +72,19 @@ func (v *versionInfo) Print() {
}
func (v *versionInfo) String() string {
- version := fmt.Sprintf("Version: %s", v.buildGitRev)
+ jenkins := ""
if v.jenkinsBuildNumber != 0 {
- version = fmt.Sprintf("Version: %s (Jenkins build %d)", v.buildGitRev, v.jenkinsBuildNumber)
+ jenkins = fmt.Sprintf(" (Jenkins build %d)", v.jenkinsBuildNumber)
}
- return fmt.Sprintf("%s (Git branch '%s') built on %s by %s@%s using %s %s/%s\n", version, v.buildGitBranch, v.buildTimePretty, v.buildUser, v.buildHost, v.goVersion, v.goOS, v.goArch)
+ return fmt.Sprintf("Version: %s%s (Git revision %s branch '%s') built on %s by %s@%s using %s %s/%s",
+ v.version, jenkins, v.buildGitRev, v.buildGitBranch, v.buildTimePretty, v.buildUser, v.buildHost, v.goVersion, v.goOS, v.goArch)
+}
+
+func (v *versionInfo) MySQLVersion() string {
+ if *MySQLServerVersion != "" {
+ return *MySQLServerVersion
+ }
+ return "5.7.9-vitess-" + v.version
}
func init() {
@@ -88,8 +109,15 @@ func init() {
goVersion: runtime.Version(),
goOS: runtime.GOOS,
goArch: runtime.GOARCH,
+ version: versionName,
+ }
+ var convVersion string
+ convVersion, err = convertMySQLVersionToCommentVersion(AppVersion.MySQLVersion())
+ if err != nil {
+ log.Error(err)
+ } else {
+ sqlparser.MySQLVersion = convVersion
}
-
stats.NewString("BuildHost").Set(AppVersion.buildHost)
stats.NewString("BuildUser").Set(AppVersion.buildUser)
stats.NewGauge("BuildTimestamp", "build timestamp").Set(AppVersion.buildTime)
@@ -111,3 +139,41 @@ func init() {
}
stats.NewGaugesWithMultiLabels("BuildInformation", "build information exposed via label", buildLabels).Set(buildValues, 1)
}
+
+// convertMySQLVersionToCommentVersion converts the MySQL version into comment version format.
+func convertMySQLVersionToCommentVersion(version string) (string, error) {
+ var res = make([]int, 3)
+ idx := 0
+ val := ""
+ for _, c := range version {
+ if c <= '9' && c >= '0' {
+ val += string(c)
+ } else if c == '.' {
+ v, err := strconv.Atoi(val)
+ if err != nil {
+ return "", err
+ }
+ val = ""
+ res[idx] = v
+ idx++
+ if idx == 3 {
+ break
+ }
+ } else {
+ break
+ }
+ }
+ if val != "" {
+ v, err := strconv.Atoi(val)
+ if err != nil {
+ return "", err
+ }
+ res[idx] = v
+ idx++
+ }
+ if idx == 0 {
+ return "", vterrors.Errorf(vtrpc.Code_INVALID_ARGUMENT, "MySQL version not correctly setup - %s.", version)
+ }
+
+ return fmt.Sprintf("%01d%02d%02d", res[0], res[1], res[2]), nil
+}
diff --git a/go/vt/servenv/buildinfo_test.go b/go/vt/servenv/buildinfo_test.go
new file mode 100644
index 00000000000..1517f4abf65
--- /dev/null
+++ b/go/vt/servenv/buildinfo_test.go
@@ -0,0 +1,92 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package servenv
+
+import (
+ "testing"
+ "time"
+
+ "github.com/stretchr/testify/require"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestVersionString(t *testing.T) {
+ now, _ := time.Parse(time.RFC1123, "Tue, 15 Sep 2020 12:04:10 UTC")
+
+ v := &versionInfo{
+ buildHost: "host",
+ buildUser: "user",
+ buildTime: now.Unix(),
+ buildTimePretty: "time is now",
+ buildGitRev: "d54b87c",
+ buildGitBranch: "gitBranch",
+ goVersion: "1.15",
+ goOS: "amiga",
+ goArch: "amd64",
+ version: "v1.2.3-SNAPSHOT",
+ }
+
+ assert.Equal(t, "Version: v1.2.3-SNAPSHOT (Git revision d54b87c branch 'gitBranch') built on time is now by user@host using 1.15 amiga/amd64", v.String())
+
+ v.jenkinsBuildNumber = 422
+
+ assert.Equal(t, "Version: v1.2.3-SNAPSHOT (Jenkins build 422) (Git revision d54b87c branch 'gitBranch') built on time is now by user@host using 1.15 amiga/amd64", v.String())
+
+ assert.Equal(t, "5.7.9-vitess-v1.2.3-SNAPSHOT", v.MySQLVersion())
+ newVersion := "test!"
+ MySQLServerVersion = &newVersion
+ assert.Equal(t, newVersion, v.MySQLVersion())
+}
+
+func TestConvertMySQLVersion(t *testing.T) {
+ testcases := []struct {
+ version string
+ commentVersion string
+ error string
+ }{{
+ version: "5.7.9",
+ commentVersion: "50709",
+ }, {
+ version: "0008.08.9",
+ commentVersion: "80809",
+ }, {
+ version: "5.7.9, Vitess - 10.0.1",
+ commentVersion: "50709",
+ }, {
+ version: "8.1 Vitess - 10.0.1",
+ commentVersion: "80100",
+ }, {
+ version: "Vitess - 10.0.1",
+ error: "MySQL version not correctly setup - Vitess - 10.0.1.",
+ }, {
+ version: "5.7.9.22",
+ commentVersion: "50709",
+ }}
+
+ for _, tcase := range testcases {
+ t.Run(tcase.version, func(t *testing.T) {
+ output, err := convertMySQLVersionToCommentVersion(tcase.version)
+ if tcase.error != "" {
+ require.EqualError(t, err, tcase.error)
+ } else {
+ require.NoError(t, err)
+ require.Equal(t, tcase.commentVersion, output)
+ }
+ })
+ }
+}
diff --git a/go/vt/servenv/grpc_server.go b/go/vt/servenv/grpc_server.go
index 448fbb1d73b..feae9a0e6ef 100644
--- a/go/vt/servenv/grpc_server.go
+++ b/go/vt/servenv/grpc_server.go
@@ -35,6 +35,7 @@ import (
"context"
"vitess.io/vitess/go/vt/grpccommon"
+ "vitess.io/vitess/go/vt/grpcoptionaltls"
"vitess.io/vitess/go/vt/log"
"vitess.io/vitess/go/vt/vttls"
)
@@ -64,6 +65,11 @@ var (
// GRPCCA is the CA to use if TLS is enabled
GRPCCA = flag.String("grpc_ca", "", "server CA to use for gRPC connections, requires TLS, and enforces client certificate check")
+ GRPCEnableOptionalTLS = flag.Bool("grpc_enable_optional_tls", false, "enable optional TLS mode when a server accepts both TLS and plain-text connections on the same port")
+
+ // GRPCServerCA if specified will combine server cert and server CA
+ GRPCServerCA = flag.String("grpc_server_ca", "", "path to server CA in PEM format, which will be combine with server cert, return full certificate chain to clients")
+
// GRPCAuth which auth plugin to use (at the moment now only static is supported)
GRPCAuth = flag.String("grpc_auth_mode", "", "Which auth plugin implementation to use (eg: static)")
@@ -125,13 +131,17 @@ func createGRPCServer() {
var opts []grpc.ServerOption
if GRPCPort != nil && *GRPCCert != "" && *GRPCKey != "" {
- config, err := vttls.ServerConfig(*GRPCCert, *GRPCKey, *GRPCCA)
+ config, err := vttls.ServerConfig(*GRPCCert, *GRPCKey, *GRPCCA, *GRPCServerCA)
if err != nil {
log.Exitf("Failed to log gRPC cert/key/ca: %v", err)
}
// create the creds server options
creds := credentials.NewTLS(config)
+ if *GRPCEnableOptionalTLS {
+ log.Warning("Optional TLS is active. Plain-text connections will be accepted")
+ creds = grpcoptionaltls.New(creds)
+ }
opts = []grpc.ServerOption{grpc.Creds(creds)}
}
// Override the default max message size for both send and receive
diff --git a/go/vt/servenv/pprof.go b/go/vt/servenv/pprof.go
index 28c31dee347..e81f605d6fc 100644
--- a/go/vt/servenv/pprof.go
+++ b/go/vt/servenv/pprof.go
@@ -18,27 +18,298 @@ package servenv
import (
"flag"
+ "fmt"
+ "io/ioutil"
"os"
+ "os/signal"
+ "path/filepath"
+ "runtime"
"runtime/pprof"
+ "runtime/trace"
+ "strconv"
+ "strings"
+ "sync/atomic"
+ "syscall"
"vitess.io/vitess/go/vt/log"
)
var (
- cpuProfile = flag.String("cpu_profile", "", "write cpu profile to file")
+ _ = flag.String("cpu_profile", "", "deprecated: use '-pprof=cpu' instead")
+ pprofFlag = flag.String("pprof", "", "enable profiling")
)
-func init() {
- OnInit(func() {
- if *cpuProfile != "" {
- f, err := os.Create(*cpuProfile)
+type profmode string
+
+const (
+ profileCPU profmode = "cpu"
+ profileMemHeap profmode = "mem_heap"
+ profileMemAllocs profmode = "mem_allocs"
+ profileMutex profmode = "mutex"
+ profileBlock profmode = "block"
+ profileTrace profmode = "trace"
+ profileThreads profmode = "threads"
+ profileGoroutine profmode = "goroutine"
+)
+
+func (p profmode) filename() string {
+ return fmt.Sprintf("%s.pprof", string(p))
+}
+
+type profile struct {
+ mode profmode
+ rate int
+ path string
+ quiet bool
+ waitSig bool
+}
+
+func parseProfileFlag(pf string) (*profile, error) {
+ if pf == "" {
+ return nil, nil
+ }
+
+ var p profile
+
+ items := strings.Split(pf, ",")
+ switch items[0] {
+ case "cpu":
+ p.mode = profileCPU
+ case "mem", "mem=heap":
+ p.mode = profileMemHeap
+ p.rate = 4096
+ case "mem=allocs":
+ p.mode = profileMemAllocs
+ p.rate = 4096
+ case "mutex":
+ p.mode = profileMutex
+ p.rate = 1
+ case "block":
+ p.mode = profileBlock
+ p.rate = 1
+ case "trace":
+ p.mode = profileTrace
+ case "threads":
+ p.mode = profileThreads
+ case "goroutine":
+ p.mode = profileGoroutine
+ default:
+ return nil, fmt.Errorf("unknown profile mode: %q", items[0])
+ }
+
+ for _, kv := range items[1:] {
+ var err error
+ fields := strings.SplitN(kv, "=", 2)
+
+ switch fields[0] {
+ case "rate":
+ if len(fields) == 1 {
+ return nil, fmt.Errorf("missing value for 'rate'")
+ }
+ p.rate, err = strconv.Atoi(fields[1])
+ if err != nil {
+ return nil, fmt.Errorf("invalid profile rate %q: %v", fields[1], err)
+ }
+
+ case "path":
+ if len(fields) == 1 {
+ return nil, fmt.Errorf("missing value for 'path'")
+ }
+ p.path = fields[1]
+
+ case "quiet":
+ if len(fields) == 1 {
+ p.quiet = true
+ continue
+ }
+
+ p.quiet, err = strconv.ParseBool(fields[1])
if err != nil {
- log.Fatalf("Failed to create profile file: %v", err)
+ return nil, fmt.Errorf("invalid quiet flag %q: %v", fields[1], err)
}
+ case "waitSig":
+ if len(fields) == 1 {
+ p.waitSig = true
+ continue
+ }
+ p.waitSig, err = strconv.ParseBool(fields[1])
+ if err != nil {
+ return nil, fmt.Errorf("invalid waitSig flag %q: %v", fields[1], err)
+ }
+ default:
+ return nil, fmt.Errorf("unknown flag: %q", fields[0])
+ }
+ }
+
+ return &p, nil
+}
+
+var profileStarted uint32
+
+func startCallback(start func()) func() {
+ return func() {
+ if atomic.CompareAndSwapUint32(&profileStarted, 0, 1) {
+ start()
+ } else {
+ log.Fatal("profile: Start() already called")
+ }
+ }
+}
+
+func stopCallback(stop func()) func() {
+ return func() {
+ if atomic.CompareAndSwapUint32(&profileStarted, 1, 0) {
+ stop()
+ }
+ }
+}
+
+// init returns a start function that begins the configured profiling process and
+// returns a cleanup function that must be executed before process termination to
+// flush the profile to disk.
+// Based on the profiling code in github.com/pkg/profile
+func (prof *profile) init() (start func(), stop func()) {
+ var (
+ path string
+ err error
+ logf = func(format string, args ...interface{}) {}
+ )
+
+ if prof.path != "" {
+ path = prof.path
+ err = os.MkdirAll(path, 0777)
+ } else {
+ path, err = ioutil.TempDir("", "profile")
+ }
+ if err != nil {
+ log.Fatalf("pprof: could not create initial output directory: %v", err)
+ }
+
+ if !prof.quiet {
+ logf = log.Infof
+ }
+
+ fn := filepath.Join(path, prof.mode.filename())
+ f, err := os.Create(fn)
+ if err != nil {
+ log.Fatalf("pprof: could not create profile %q: %v", fn, err)
+ }
+ logf("pprof: %s profiling enabled, %s", string(prof.mode), fn)
+
+ switch prof.mode {
+ case profileCPU:
+ start = startCallback(func() {
pprof.StartCPUProfile(f)
- OnTerm(func() {
- pprof.StopCPUProfile()
- })
+ })
+ stop = stopCallback(func() {
+ pprof.StopCPUProfile()
+ f.Close()
+ })
+ return start, stop
+
+ case profileMemHeap, profileMemAllocs:
+ old := runtime.MemProfileRate
+ start = startCallback(func() {
+ runtime.MemProfileRate = prof.rate
+ })
+ stop = stopCallback(func() {
+ tt := "heap"
+ if prof.mode == profileMemAllocs {
+ tt = "allocs"
+ }
+ pprof.Lookup(tt).WriteTo(f, 0)
+ f.Close()
+ runtime.MemProfileRate = old
+ })
+ return start, stop
+
+ case profileMutex:
+ start = startCallback(func() {
+ runtime.SetMutexProfileFraction(prof.rate)
+ })
+ stop = stopCallback(func() {
+ if mp := pprof.Lookup("mutex"); mp != nil {
+ mp.WriteTo(f, 0)
+ }
+ f.Close()
+ runtime.SetMutexProfileFraction(0)
+ })
+ return start, stop
+
+ case profileBlock:
+ start = startCallback(func() {
+ runtime.SetBlockProfileRate(prof.rate)
+ })
+ stop = stopCallback(func() {
+ pprof.Lookup("block").WriteTo(f, 0)
+ f.Close()
+ runtime.SetBlockProfileRate(0)
+ })
+ return start, stop
+
+ case profileThreads:
+ start = startCallback(func() {})
+ stop = stopCallback(func() {
+ if mp := pprof.Lookup("threadcreate"); mp != nil {
+ mp.WriteTo(f, 0)
+ }
+ f.Close()
+ })
+ return start, stop
+
+ case profileTrace:
+ start = startCallback(func() {
+ if err := trace.Start(f); err != nil {
+ log.Fatalf("pprof: could not start trace: %v", err)
+ }
+ })
+ stop = stopCallback(func() {
+ trace.Stop()
+ f.Close()
+ })
+ return start, stop
+
+ case profileGoroutine:
+ start = startCallback(func() {})
+ stop = stopCallback(func() {
+ if mp := pprof.Lookup("goroutine"); mp != nil {
+ mp.WriteTo(f, 0)
+ }
+ f.Close()
+ })
+ return start, stop
+
+ default:
+ panic("unsupported profile mode")
+ }
+}
+
+func init() {
+ OnInit(func() {
+ prof, err := parseProfileFlag(*pprofFlag)
+ if err != nil {
+ log.Fatal(err)
+ }
+ if prof != nil {
+ ch := make(chan os.Signal, 1)
+ signal.Notify(ch, syscall.SIGUSR1)
+ start, stop := prof.init()
+
+ if prof.waitSig {
+ go func() {
+ <-ch
+ start()
+ }()
+ } else {
+ start()
+ }
+
+ go func() {
+ <-ch
+ stop()
+ }()
+
+ OnTerm(stop)
}
})
}
diff --git a/go/vt/servenv/pprof_test.go b/go/vt/servenv/pprof_test.go
new file mode 100644
index 00000000000..8ccabc773ff
--- /dev/null
+++ b/go/vt/servenv/pprof_test.go
@@ -0,0 +1,47 @@
+package servenv
+
+import (
+ "reflect"
+ "testing"
+)
+
+func TestParseProfileFlag(t *testing.T) {
+ tests := []struct {
+ arg string
+ want *profile
+ wantErr bool
+ }{
+ {"", nil, false},
+ {"mem", &profile{mode: profileMemHeap, rate: 4096}, false},
+ {"mem,rate=1234", &profile{mode: profileMemHeap, rate: 1234}, false},
+ {"mem,rate", nil, true},
+ {"mem,rate=foobar", nil, true},
+ {"mem=allocs", &profile{mode: profileMemAllocs, rate: 4096}, false},
+ {"mem=allocs,rate=420", &profile{mode: profileMemAllocs, rate: 420}, false},
+ {"block", &profile{mode: profileBlock, rate: 1}, false},
+ {"block,rate=4", &profile{mode: profileBlock, rate: 4}, false},
+ {"cpu", &profile{mode: profileCPU}, false},
+ {"cpu,quiet", &profile{mode: profileCPU, quiet: true}, false},
+ {"cpu,quiet=true", &profile{mode: profileCPU, quiet: true}, false},
+ {"cpu,quiet=false", &profile{mode: profileCPU, quiet: false}, false},
+ {"cpu,quiet=foobar", nil, true},
+ {"cpu,path=", &profile{mode: profileCPU, path: ""}, false},
+ {"cpu,path", nil, true},
+ {"cpu,path=a", &profile{mode: profileCPU, path: "a"}, false},
+ {"cpu,path=a/b/c/d", &profile{mode: profileCPU, path: "a/b/c/d"}, false},
+ {"cpu,waitSig", &profile{mode: profileCPU, waitSig: true}, false},
+ {"cpu,path=a/b,waitSig", &profile{mode: profileCPU, waitSig: true, path: "a/b"}, false},
+ }
+ for _, tt := range tests {
+ t.Run(tt.arg, func(t *testing.T) {
+ got, err := parseProfileFlag(tt.arg)
+ if (err != nil) != tt.wantErr {
+ t.Errorf("parseProfileFlag() error = %v, wantErr %v", err, tt.wantErr)
+ return
+ }
+ if !reflect.DeepEqual(got, tt.want) {
+ t.Errorf("parseProfileFlag() got = %v, want %v", got, tt.want)
+ }
+ })
+ }
+}
diff --git a/go/vt/servenv/run.go b/go/vt/servenv/run.go
index db69c6214bb..25b1e189d1b 100644
--- a/go/vt/servenv/run.go
+++ b/go/vt/servenv/run.go
@@ -18,17 +18,22 @@ package servenv
import (
"fmt"
+ "net"
"net/http"
"net/url"
+ "os"
+ "os/signal"
+ "syscall"
"time"
"vitess.io/vitess/go/event"
- "vitess.io/vitess/go/proc"
"vitess.io/vitess/go/vt/log"
)
var (
onCloseHooks event.Hooks
+ // ExitChan waits for a signal that tells the process to terminate
+ ExitChan chan os.Signal
)
// Run starts listening for RPC and HTTP requests,
@@ -40,13 +45,16 @@ func Run(port int) {
serveGRPC()
serveSocketFile()
- l, err := proc.Listen(fmt.Sprintf("%v", port))
+ l, err := net.Listen("tcp", fmt.Sprintf(":%v", port))
if err != nil {
log.Exit(err)
}
go http.Serve(l, nil)
- proc.Wait()
+ ExitChan = make(chan os.Signal, 1)
+ signal.Notify(ExitChan, syscall.SIGTERM, syscall.SIGINT)
+ // Wait for signal
+ <-ExitChan
l.Close()
startTime := time.Now()
diff --git a/go/vt/servenv/servenv.go b/go/vt/servenv/servenv.go
index 0303aef61ab..9695b48c1e5 100644
--- a/go/vt/servenv/servenv.go
+++ b/go/vt/servenv/servenv.go
@@ -33,7 +33,6 @@ import (
"net/url"
"os"
"os/signal"
- "runtime"
"strings"
"sync"
"syscall"
@@ -56,11 +55,11 @@ var (
Port *int
// Flags to alter the behavior of the library.
- lameduckPeriod = flag.Duration("lameduck-period", 50*time.Millisecond, "keep running at least this long after SIGTERM before stopping")
- onTermTimeout = flag.Duration("onterm_timeout", 10*time.Second, "wait no more than this for OnTermSync handlers before stopping")
- memProfileRate = flag.Int("mem-profile-rate", 512*1024, "profile every n bytes allocated")
- mutexProfileFraction = flag.Int("mutex-profile-fraction", 0, "profile every n mutex contention events (see runtime.SetMutexProfileFraction)")
- catchSigpipe = flag.Bool("catch-sigpipe", false, "catch and ignore SIGPIPE on stdout and stderr if specified")
+ lameduckPeriod = flag.Duration("lameduck-period", 50*time.Millisecond, "keep running at least this long after SIGTERM before stopping")
+ onTermTimeout = flag.Duration("onterm_timeout", 10*time.Second, "wait no more than this for OnTermSync handlers before stopping")
+ _ = flag.Int("mem-profile-rate", 512*1024, "deprecated: use '-pprof=mem' instead")
+ _ = flag.Int("mutex-profile-fraction", 0, "deprecated: use '-pprof=mutex' instead")
+ catchSigpipe = flag.Bool("catch-sigpipe", false, "catch and ignore SIGPIPE on stdout and stderr if specified")
// mutex used to protect the Init function
mu sync.Mutex
@@ -106,13 +105,6 @@ func Init() {
log.Exitf("servenv.Init: running this as root makes no sense")
}
- runtime.MemProfileRate = *memProfileRate
-
- if *mutexProfileFraction != 0 {
- log.Infof("setting mutex profile fraction to %v", *mutexProfileFraction)
- runtime.SetMutexProfileFraction(*mutexProfileFraction)
- }
-
// We used to set this limit directly, but you pretty much have to
// use a root account to allow increasing a limit reliably. Dropping
// privileges is also tricky. The best strategy is to make a shell
diff --git a/go/vt/servenv/version.go b/go/vt/servenv/version.go
new file mode 100644
index 00000000000..e6d25d406a1
--- /dev/null
+++ b/go/vt/servenv/version.go
@@ -0,0 +1,3 @@
+package servenv
+
+const versionName = "10.0.2"
diff --git a/go/vt/sqlparser/Makefile b/go/vt/sqlparser/Makefile
index 1ca0af6755e..9dfe647113d 100644
--- a/go/vt/sqlparser/Makefile
+++ b/go/vt/sqlparser/Makefile
@@ -1,11 +1,11 @@
# Copyright 2019 The Vitess Authors.
-#
+#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
-#
+#
# http://www.apache.org/licenses/LICENSE-2.0
-#
+#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -15,7 +15,7 @@
MAKEFLAGS = -s
sql.go: sql.y
- go run golang.org/x/tools/cmd/goyacc -o sql.go sql.y
+ go run ./goyacc -fast-append -o sql.go sql.y
gofmt -w sql.go
clean:
diff --git a/go/vt/sqlparser/analyzer.go b/go/vt/sqlparser/analyzer.go
index c9c78f5ca5d..ada3e09cc20 100644
--- a/go/vt/sqlparser/analyzer.go
+++ b/go/vt/sqlparser/analyzer.go
@@ -59,6 +59,9 @@ const (
StmtVStream
StmtLockTables
StmtUnlockTables
+ StmtFlush
+ StmtCallProc
+ StmtRevert
)
//ASTToStatementType returns a StatementType from an AST stmt
@@ -78,11 +81,13 @@ func ASTToStatementType(stmt Statement) StatementType {
return StmtShow
case DDLStatement, DBDDLStatement, *AlterVschema:
return StmtDDL
+ case *RevertMigration:
+ return StmtRevert
case *Use:
return StmtUse
case *OtherRead, *OtherAdmin, *Load:
return StmtOther
- case *Explain:
+ case Explain:
return StmtExplain
case *Begin:
return StmtBegin
@@ -100,6 +105,10 @@ func ASTToStatementType(stmt Statement) StatementType {
return StmtLockTables
case *UnlockTables:
return StmtUnlockTables
+ case *Flush:
+ return StmtFlush
+ case *CallProc:
+ return StmtCallProc
default:
return StmtUnknown
}
@@ -108,7 +117,7 @@ func ASTToStatementType(stmt Statement) StatementType {
//CanNormalize takes Statement and returns if the statement can be normalized.
func CanNormalize(stmt Statement) bool {
switch stmt.(type) {
- case *Select, *Union, *Insert, *Update, *Delete, *Set:
+ case *Select, *Union, *Insert, *Update, *Delete, *Set, *CallProc: // TODO: we could merge this logic into ASTrewriter
return true
}
return false
@@ -124,11 +133,17 @@ func CachePlan(stmt Statement) bool {
return false
}
-//IsSetStatement takes Statement and returns if the statement is set statement.
-func IsSetStatement(stmt Statement) bool {
- switch stmt.(type) {
+//MustRewriteAST takes Statement and returns true if RewriteAST must run on it for correct execution irrespective of user flags.
+func MustRewriteAST(stmt Statement) bool {
+ switch node := stmt.(type) {
case *Set:
return true
+ case *Show:
+ switch node.Internal.(type) {
+ case *ShowBasic:
+ return true
+ }
+ return false
}
return false
}
@@ -157,6 +172,8 @@ func Preview(sql string) StatementType {
return StmtStream
case "vstream":
return StmtVStream
+ case "revert":
+ return StmtRevert
case "insert":
return StmtInsert
case "replace":
@@ -187,8 +204,10 @@ func Preview(sql string) StatementType {
return StmtRollback
}
switch loweredFirstWord {
- case "create", "alter", "rename", "drop", "truncate", "flush":
+ case "create", "alter", "rename", "drop", "truncate":
return StmtDDL
+ case "flush":
+ return StmtFlush
case "set":
return StmtSet
case "show":
@@ -217,6 +236,8 @@ func (s StatementType) String() string {
return "STREAM"
case StmtVStream:
return "VSTREAM"
+ case StmtRevert:
+ return "REVERT"
case StmtInsert:
return "INSERT"
case StmtReplace:
@@ -255,6 +276,10 @@ func (s StatementType) String() string {
return "LOCK_TABLES"
case StmtUnlockTables:
return "UNLOCK_TABLES"
+ case StmtFlush:
+ return "FLUSH"
+ case StmtCallProc:
+ return "CALL_PROC"
default:
return "UNKNOWN"
}
@@ -391,9 +416,9 @@ func NewPlanValue(node Expr) (sqltypes.PlanValue, error) {
}
return sqltypes.PlanValue{Value: n}, nil
case FloatVal:
- return sqltypes.PlanValue{Value: sqltypes.MakeTrusted(sqltypes.Float64, node.Val)}, nil
+ return sqltypes.PlanValue{Value: sqltypes.MakeTrusted(sqltypes.Float64, node.Bytes())}, nil
case StrVal:
- return sqltypes.PlanValue{Value: sqltypes.MakeTrusted(sqltypes.VarBinary, node.Val)}, nil
+ return sqltypes.PlanValue{Value: sqltypes.MakeTrusted(sqltypes.VarBinary, node.Bytes())}, nil
case HexVal:
v, err := node.HexDecode()
if err != nil {
diff --git a/go/vt/sqlparser/analyzer_test.go b/go/vt/sqlparser/analyzer_test.go
index 3ec58e7f02e..7bf9a2590b5 100644
--- a/go/vt/sqlparser/analyzer_test.go
+++ b/go/vt/sqlparser/analyzer_test.go
@@ -77,6 +77,7 @@ func TestPreview(t *testing.T) {
{"grant", StmtPriv},
{"revoke", StmtPriv},
{"truncate", StmtDDL},
+ {"flush", StmtFlush},
{"unknown", StmtUnknown},
{"/* leading comment */ select ...", StmtSelect},
@@ -244,7 +245,7 @@ func TestIsColName(t *testing.T) {
in: &ColName{},
out: true,
}, {
- in: newHexLiteral(""),
+ in: NewHexLiteral(""),
}}
for _, tc := range testcases {
out := IsColName(tc.in)
@@ -259,16 +260,16 @@ func TestIsValue(t *testing.T) {
in Expr
out bool
}{{
- in: newStrLiteral("aa"),
+ in: NewStrLiteral("aa"),
out: true,
}, {
- in: newHexLiteral("3131"),
+ in: NewHexLiteral("3131"),
out: true,
}, {
- in: newIntLiteral("1"),
+ in: NewIntLiteral("1"),
out: true,
}, {
- in: newArgument(":a"),
+ in: NewArgument(":a"),
out: true,
}, {
in: &NullVal{},
@@ -299,7 +300,7 @@ func TestIsNull(t *testing.T) {
in: &NullVal{},
out: true,
}, {
- in: newStrLiteral(""),
+ in: NewStrLiteral(""),
}}
for _, tc := range testcases {
out := IsNull(tc.in)
@@ -314,7 +315,7 @@ func TestIsSimpleTuple(t *testing.T) {
in Expr
out bool
}{{
- in: ValTuple{newStrLiteral("aa")},
+ in: ValTuple{NewStrLiteral("aa")},
out: true,
}, {
in: ValTuple{&ColName{}},
@@ -349,37 +350,37 @@ func TestNewPlanValue(t *testing.T) {
}, {
in: &Literal{
Type: IntVal,
- Val: []byte("10"),
+ Val: "10",
},
out: sqltypes.PlanValue{Value: sqltypes.NewInt64(10)},
}, {
in: &Literal{
Type: IntVal,
- Val: []byte("1111111111111111111111111111111111111111"),
+ Val: "1111111111111111111111111111111111111111",
},
err: "value out of range",
}, {
in: &Literal{
Type: StrVal,
- Val: []byte("strval"),
+ Val: "strval",
},
out: sqltypes.PlanValue{Value: sqltypes.NewVarBinary("strval")},
}, {
in: &Literal{
Type: BitVal,
- Val: []byte("01100001"),
+ Val: "01100001",
},
err: "expression is too complex",
}, {
in: &Literal{
Type: HexVal,
- Val: []byte("3131"),
+ Val: "3131",
},
out: sqltypes.PlanValue{Value: sqltypes.NewVarBinary("11")},
}, {
in: &Literal{
Type: HexVal,
- Val: []byte("313"),
+ Val: "313",
},
err: "odd length hex string",
}, {
@@ -390,7 +391,7 @@ func TestNewPlanValue(t *testing.T) {
Argument(":valarg"),
&Literal{
Type: StrVal,
- Val: []byte("strval"),
+ Val: "strval",
},
},
out: sqltypes.PlanValue{
@@ -411,7 +412,7 @@ func TestNewPlanValue(t *testing.T) {
}, {
in: &Literal{
Type: FloatVal,
- Val: []byte("2.1"),
+ Val: "2.1",
},
out: sqltypes.PlanValue{Value: sqltypes.NewFloat64(2.1)},
}, {
@@ -419,7 +420,7 @@ func TestNewPlanValue(t *testing.T) {
Operator: Latin1Op,
Expr: &Literal{
Type: StrVal,
- Val: []byte("strval"),
+ Val: "strval",
},
},
out: sqltypes.PlanValue{Value: sqltypes.NewVarBinary("strval")},
@@ -428,7 +429,7 @@ func TestNewPlanValue(t *testing.T) {
Operator: UBinaryOp,
Expr: &Literal{
Type: StrVal,
- Val: []byte("strval"),
+ Val: "strval",
},
},
out: sqltypes.PlanValue{Value: sqltypes.NewVarBinary("strval")},
@@ -437,7 +438,7 @@ func TestNewPlanValue(t *testing.T) {
Operator: Utf8mb4Op,
Expr: &Literal{
Type: StrVal,
- Val: []byte("strval"),
+ Val: "strval",
},
},
out: sqltypes.PlanValue{Value: sqltypes.NewVarBinary("strval")},
@@ -446,7 +447,7 @@ func TestNewPlanValue(t *testing.T) {
Operator: Utf8Op,
Expr: &Literal{
Type: StrVal,
- Val: []byte("strval"),
+ Val: "strval",
},
},
out: sqltypes.PlanValue{Value: sqltypes.NewVarBinary("strval")},
@@ -455,7 +456,7 @@ func TestNewPlanValue(t *testing.T) {
Operator: UMinusOp,
Expr: &Literal{
Type: FloatVal,
- Val: []byte("2.1"),
+ Val: "2.1",
},
},
err: "expression is too complex",
@@ -481,19 +482,3 @@ var mustMatch = utils.MustMatchFn(
},
[]string{".Conn"}, // ignored fields
)
-
-func newStrLiteral(in string) *Literal {
- return NewStrLiteral([]byte(in))
-}
-
-func newIntLiteral(in string) *Literal {
- return NewIntLiteral([]byte(in))
-}
-
-func newHexLiteral(in string) *Literal {
- return NewHexLiteral([]byte(in))
-}
-
-func newArgument(in string) Expr {
- return NewArgument([]byte(in))
-}
diff --git a/go/vt/sqlparser/ast.go b/go/vt/sqlparser/ast.go
index c508c526c8e..2c77fe8e124 100644
--- a/go/vt/sqlparser/ast.go
+++ b/go/vt/sqlparser/ast.go
@@ -16,13 +16,6 @@ limitations under the License.
package sqlparser
-import (
- "fmt"
- "strings"
-
- "vitess.io/vitess/go/sqltypes"
-)
-
/*
This is the Vitess AST. This file should only contain pure struct declarations,
or methods used to mark a struct as implementing an interface. All other methods
@@ -33,6 +26,7 @@ related to these structs live in ast_funcs.go
// generated by the parser.
type SQLNode interface {
Format(buf *TrackedBuffer)
+ formatFast(buf *TrackedBuffer)
}
// Statements
@@ -45,24 +39,25 @@ type (
// SelectStatement any SELECT statement.
SelectStatement interface {
+ Statement
iSelectStatement()
- iStatement()
iInsertRows()
AddOrder(*Order)
SetLimit(*Limit)
SetLock(lock Lock)
MakeDistinct()
- SQLNode
}
// DDLStatement represents any DDL Statement
DDLStatement interface {
iDDLStatement()
IsFullyParsed() bool
+ IsTemporary() bool
GetTable() TableName
GetAction() DDLAction
GetOptLike() *OptLike
GetIfExists() bool
+ GetIfNotExists() bool
GetTableSpec() *TableSpec
GetFromTables() TableNames
GetToTables() TableNames
@@ -86,6 +81,12 @@ type (
SQLNode
}
+ // Explain is an interface that represents the Explain statements
+ Explain interface {
+ Statement
+ iExplain()
+ }
+
// AddConstraintDefinition represents a ADD CONSTRAINT alter option
AddConstraintDefinition struct {
ConstraintDefinition *ConstraintDefinition
@@ -155,7 +156,7 @@ type (
// DropKey is used to drop a key in an alter table statement
DropKey struct {
Type DropKeyType
- Name string
+ Name ColIdent
}
// Force is used to specify force alter option in an alter table statement
@@ -174,15 +175,15 @@ type (
Cols Columns
}
- // RenameTable clause is used to rename the table in an alter table statement
- RenameTable struct {
+ // RenameTableName clause is used to rename the table in an alter table statement
+ RenameTableName struct {
Table TableName
}
// RenameIndex clause is used to rename indexes in an alter table statement
RenameIndex struct {
- OldName string
- NewName string
+ OldName ColIdent
+ NewName ColIdent
}
// Validation clause is used to specify whether to use validation or not
@@ -336,7 +337,8 @@ type (
// DropDatabase represents a DROP database statement.
DropDatabase struct {
- DBName string
+ Comments Comments
+ DBName TableIdent
IfExists bool
}
@@ -352,7 +354,8 @@ type (
// CreateDatabase represents a CREATE database statement.
CreateDatabase struct {
- DBName string
+ Comments Comments
+ DBName TableIdent
IfNotExists bool
CreateOptions []CollateAndCharset
FullyParsed bool
@@ -360,30 +363,35 @@ type (
// AlterDatabase represents a ALTER database statement.
AlterDatabase struct {
- DBName string
+ DBName TableIdent
UpdateDataDirectory bool
AlterOptions []CollateAndCharset
FullyParsed bool
}
- // DDL represents a CREATE, ALTER, DROP, RENAME, TRUNCATE or ANALYZE statement.
- DDL struct {
- Action DDLAction
+ // Flush represents a FLUSH statement.
+ Flush struct {
+ IsLocal bool
+ FlushOptions []string
+ TableNames TableNames
+ WithLock bool
+ ForExport bool
+ }
- // FromTables is set if Action is RenameDDLAction or DropDDLAction.
- FromTables TableNames
+ // RenameTablePair represents the name of the original table and what it is going to be set in a RENAME TABLE statement.
+ RenameTablePair struct {
+ FromTable TableName
+ ToTable TableName
+ }
- // ToTables is set if Action is RenameDDLAction.
- ToTables TableNames
+ // RenameTable represents a RENAME TABLE statement.
+ RenameTable struct {
+ TablePairs []*RenameTablePair
+ }
- // Table is set if Action is other than RenameDDLAction or DropDDLAction.
+ // TruncateTable represents a TRUNCATE TABLE statement.
+ TruncateTable struct {
Table TableName
-
- // The following fields are set if a DDL was fully analyzed.
- IfExists bool
- TableSpec *TableSpec
- OptLike *OptLike
- PartitionSpec *PartitionSpec
}
// AlterVschema represents a ALTER VSCHEMA statement.
@@ -401,6 +409,20 @@ type (
AutoIncSpec *AutoIncSpec
}
+ // RevertMigration represents a REVERT VITESS_MIGRATION statement
+ RevertMigration struct {
+ UUID string
+ }
+
+ // AlterMigrationType represents the type of operation in an ALTER VITESS_MIGRATION statement
+ AlterMigrationType int8
+
+ // AlterMigration represents a ALTER VITESS_MIGRATION statement
+ AlterMigration struct {
+ Type AlterMigrationType
+ UUID string
+ }
+
// AlterTable represents a ALTER TABLE statement.
AlterTable struct {
Table TableName
@@ -411,6 +433,7 @@ type (
// DropTable represents a DROP TABLE statement.
DropTable struct {
+ Temp bool
FromTables TableNames
// The following fields are set if a DDL was fully analyzed.
IfExists bool
@@ -422,18 +445,9 @@ type (
IfExists bool
}
- // CreateIndex represents a CREATE INDEX query
- CreateIndex struct {
- Constraint string
- Name ColIdent
- Table TableName
- Columns []*IndexColumn
- Options []*IndexOption
- FullyParsed bool
- }
-
// CreateTable represents a CREATE TABLE statement.
CreateTable struct {
+ Temp bool
Table TableName
IfNotExists bool
TableSpec *TableSpec
@@ -510,26 +524,12 @@ type (
Name ColIdent
}
- // Explain represents an EXPLAIN statement
- Explain struct {
- Type ExplainType
- Statement Statement
+ // CallProc represents a CALL statement
+ CallProc struct {
+ Name TableName
+ Params Exprs
}
- // ExplainType is an enum for Explain.Type
- ExplainType int8
-
- // OtherRead represents a DESCRIBE, or EXPLAIN statement.
- // It should be used only as an indicator. It does not contain
- // the full AST for the statement.
- OtherRead struct{}
-
- // OtherAdmin represents a misc statement that relies on ADMIN privileges,
- // such as REPAIR, OPTIMIZE, or TRUNCATE statement.
- // It should be used only as an indicator. It does not contain
- // the full AST for the statement.
- OtherAdmin struct{}
-
// LockType is an enum for Lock Types
LockType int8
@@ -549,6 +549,32 @@ type (
// UnlockTables represents the unlock statement
UnlockTables struct{}
+
+ // ExplainType is an enum for ExplainStmt.Type
+ ExplainType int8
+
+ // ExplainStmt represents an Explain statement
+ ExplainStmt struct {
+ Type ExplainType
+ Statement Statement
+ }
+
+ // ExplainTab represents the Explain table
+ ExplainTab struct {
+ Table TableName
+ Wild string
+ }
+
+ // OtherRead represents a DESCRIBE, or EXPLAIN statement.
+ // It should be used only as an indicator. It does not contain
+ // the full AST for the statement.
+ OtherRead struct{}
+
+ // OtherAdmin represents a misc statement that relies on ADMIN privileges,
+ // such as REPAIR, OPTIMIZE, or TRUNCATE statement.
+ // It should be used only as an indicator. It does not contain
+ // the full AST for the statement.
+ OtherAdmin struct{}
)
func (*Union) iStatement() {}
@@ -561,7 +587,7 @@ func (*Delete) iStatement() {}
func (*Set) iStatement() {}
func (*SetTransaction) iStatement() {}
func (*DropDatabase) iStatement() {}
-func (*DDL) iStatement() {}
+func (*Flush) iStatement() {}
func (*Show) iStatement() {}
func (*Use) iStatement() {}
func (*Begin) iStatement() {}
@@ -570,14 +596,12 @@ func (*Rollback) iStatement() {}
func (*SRollback) iStatement() {}
func (*Savepoint) iStatement() {}
func (*Release) iStatement() {}
-func (*Explain) iStatement() {}
func (*OtherRead) iStatement() {}
func (*OtherAdmin) iStatement() {}
func (*Select) iSelectStatement() {}
func (*Union) iSelectStatement() {}
func (*ParenSelect) iSelectStatement() {}
func (*Load) iStatement() {}
-func (*CreateIndex) iStatement() {}
func (*CreateDatabase) iStatement() {}
func (*AlterDatabase) iStatement() {}
func (*CreateTable) iStatement() {}
@@ -587,17 +611,24 @@ func (*LockTables) iStatement() {}
func (*UnlockTables) iStatement() {}
func (*AlterTable) iStatement() {}
func (*AlterVschema) iStatement() {}
+func (*AlterMigration) iStatement() {}
+func (*RevertMigration) iStatement() {}
func (*DropTable) iStatement() {}
func (*DropView) iStatement() {}
-
-func (*DDL) iDDLStatement() {}
-func (*CreateIndex) iDDLStatement() {}
-func (*CreateView) iDDLStatement() {}
-func (*AlterView) iDDLStatement() {}
-func (*CreateTable) iDDLStatement() {}
-func (*DropTable) iDDLStatement() {}
-func (*DropView) iDDLStatement() {}
-func (*AlterTable) iDDLStatement() {}
+func (*TruncateTable) iStatement() {}
+func (*RenameTable) iStatement() {}
+func (*CallProc) iStatement() {}
+func (*ExplainStmt) iStatement() {}
+func (*ExplainTab) iStatement() {}
+
+func (*CreateView) iDDLStatement() {}
+func (*AlterView) iDDLStatement() {}
+func (*CreateTable) iDDLStatement() {}
+func (*DropTable) iDDLStatement() {}
+func (*DropView) iDDLStatement() {}
+func (*AlterTable) iDDLStatement() {}
+func (*TruncateTable) iDDLStatement() {}
+func (*RenameTable) iDDLStatement() {}
func (*AddConstraintDefinition) iAlterOption() {}
func (*AddIndexDefinition) iAlterOption() {}
@@ -614,19 +645,22 @@ func (*DropKey) iAlterOption() {}
func (*Force) iAlterOption() {}
func (*LockOption) iAlterOption() {}
func (*OrderByOption) iAlterOption() {}
-func (*RenameTable) iAlterOption() {}
+func (*RenameTableName) iAlterOption() {}
func (*RenameIndex) iAlterOption() {}
func (*Validation) iAlterOption() {}
func (TableOptions) iAlterOption() {}
+func (*ExplainStmt) iExplain() {}
+func (*ExplainTab) iExplain() {}
+
// IsFullyParsed implements the DDLStatement interface
-func (*DDL) IsFullyParsed() bool {
- return false
+func (*TruncateTable) IsFullyParsed() bool {
+ return true
}
// IsFullyParsed implements the DDLStatement interface
-func (node *CreateIndex) IsFullyParsed() bool {
- return node.FullyParsed
+func (*RenameTable) IsFullyParsed() bool {
+ return true
}
// IsFullyParsed implements the DDLStatement interface
@@ -659,8 +693,48 @@ func (node *AlterView) IsFullyParsed() bool {
return true
}
+// IsTemporary implements the DDLStatement interface
+func (*TruncateTable) IsTemporary() bool {
+ return false
+}
+
+// IsTemporary implements the DDLStatement interface
+func (*RenameTable) IsTemporary() bool {
+ return false
+}
+
+// IsTemporary implements the DDLStatement interface
+func (node *CreateTable) IsTemporary() bool {
+ return node.Temp
+}
+
+// IsTemporary implements the DDLStatement interface
+func (node *AlterTable) IsTemporary() bool {
+ return false
+}
+
+// IsTemporary implements the DDLStatement interface
+func (node *CreateView) IsTemporary() bool {
+ return false
+}
+
+// IsTemporary implements the DDLStatement interface
+func (node *DropView) IsTemporary() bool {
+ return false
+}
+
+// IsTemporary implements the DDLStatement interface
+func (node *DropTable) IsTemporary() bool {
+ return node.Temp
+}
+
+// IsTemporary implements the DDLStatement interface
+func (node *AlterView) IsTemporary() bool {
+ return false
+}
+
// GetTable implements the DDLStatement interface
-func (node *CreateIndex) GetTable() TableName {
+func (node *TruncateTable) GetTable() TableName {
return node.Table
}
@@ -684,11 +758,6 @@ func (node *AlterView) GetTable() TableName {
return node.ViewName
}
-// GetTable implements the DDLStatement interface
-func (node *DDL) GetTable() TableName {
- return node.Table
-}
-
// GetTable implements the DDLStatement interface
func (node *DropView) GetTable() TableName {
return TableName{}
@@ -699,14 +768,14 @@ func (node *DropTable) GetTable() TableName {
return TableName{}
}
-// GetAction implements the DDLStatement interface
-func (node *DDL) GetAction() DDLAction {
- return node.Action
+// GetTable implements the DDLStatement interface
+func (node *RenameTable) GetTable() TableName {
+ return TableName{}
}
// GetAction implements the DDLStatement interface
-func (node *CreateIndex) GetAction() DDLAction {
- return AlterDDLAction
+func (node *TruncateTable) GetAction() DDLAction {
+ return TruncateDDLAction
}
// GetAction implements the DDLStatement interface
@@ -729,6 +798,11 @@ func (node *AlterView) GetAction() DDLAction {
return AlterDDLAction
}
+// GetAction implements the DDLStatement interface
+func (node *RenameTable) GetAction() DDLAction {
+ return RenameDDLAction
+}
+
// GetAction implements the DDLStatement interface
func (node *DropTable) GetAction() DDLAction {
return DropDDLAction
@@ -740,17 +814,17 @@ func (node *DropView) GetAction() DDLAction {
}
// GetOptLike implements the DDLStatement interface
-func (node *DDL) GetOptLike() *OptLike {
+func (node *CreateTable) GetOptLike() *OptLike {
return node.OptLike
}
// GetOptLike implements the DDLStatement interface
-func (node *CreateTable) GetOptLike() *OptLike {
- return node.OptLike
+func (node *TruncateTable) GetOptLike() *OptLike {
+ return nil
}
// GetOptLike implements the DDLStatement interface
-func (node *CreateIndex) GetOptLike() *OptLike {
+func (node *RenameTable) GetOptLike() *OptLike {
return nil
}
@@ -780,8 +854,8 @@ func (node *DropView) GetOptLike() *OptLike {
}
// GetIfExists implements the DDLStatement interface
-func (node *DDL) GetIfExists() bool {
- return node.IfExists
+func (node *RenameTable) GetIfExists() bool {
+ return false
}
// GetIfExists implements the DDLStatement interface
@@ -790,7 +864,7 @@ func (node *CreateTable) GetIfExists() bool {
}
// GetIfExists implements the DDLStatement interface
-func (node *CreateIndex) GetIfExists() bool {
+func (node *TruncateTable) GetIfExists() bool {
return false
}
@@ -819,9 +893,44 @@ func (node *DropView) GetIfExists() bool {
return node.IfExists
}
-// GetTableSpec implements the DDLStatement interface
-func (node *DDL) GetTableSpec() *TableSpec {
- return node.TableSpec
+// GetIfNotExists implements the DDLStatement interface
+func (node *RenameTable) GetIfNotExists() bool {
+ return false
+}
+
+// GetIfNotExists implements the DDLStatement interface
+func (node *CreateTable) GetIfNotExists() bool {
+ return node.IfNotExists
+}
+
+// GetIfNotExists implements the DDLStatement interface
+func (node *TruncateTable) GetIfNotExists() bool {
+ return false
+}
+
+// GetIfNotExists implements the DDLStatement interface
+func (node *AlterTable) GetIfNotExists() bool {
+ return false
+}
+
+// GetIfNotExists implements the DDLStatement interface
+func (node *CreateView) GetIfNotExists() bool {
+ return false
+}
+
+// GetIfNotExists implements the DDLStatement interface
+func (node *AlterView) GetIfNotExists() bool {
+ return false
+}
+
+// GetIfNotExists implements the DDLStatement interface
+func (node *DropTable) GetIfNotExists() bool {
+ return false
+}
+
+// GetIfNotExists implements the DDLStatement interface
+func (node *DropView) GetIfNotExists() bool {
+ return false
}
// GetTableSpec implements the DDLStatement interface
@@ -830,7 +939,12 @@ func (node *CreateTable) GetTableSpec() *TableSpec {
}
// GetTableSpec implements the DDLStatement interface
-func (node *CreateIndex) GetTableSpec() *TableSpec {
+func (node *RenameTable) GetTableSpec() *TableSpec {
+ return nil
+}
+
+// GetTableSpec implements the DDLStatement interface
+func (node *TruncateTable) GetTableSpec() *TableSpec {
return nil
}
@@ -860,12 +974,16 @@ func (node *DropView) GetTableSpec() *TableSpec {
}
// GetFromTables implements the DDLStatement interface
-func (node *DDL) GetFromTables() TableNames {
- return node.FromTables
+func (node *RenameTable) GetFromTables() TableNames {
+ var fromTables TableNames
+ for _, pair := range node.TablePairs {
+ fromTables = append(fromTables, pair.FromTable)
+ }
+ return fromTables
}
// GetFromTables implements the DDLStatement interface
-func (node *CreateIndex) GetFromTables() TableNames {
+func (node *TruncateTable) GetFromTables() TableNames {
return nil
}
@@ -900,12 +1018,17 @@ func (node *AlterView) GetFromTables() TableNames {
}
// SetFromTables implements DDLStatement.
-func (node *DDL) SetFromTables(tables TableNames) {
- node.FromTables = tables
+func (node *RenameTable) SetFromTables(tables TableNames) {
+ if len(node.TablePairs) != len(tables) {
+ return
+ }
+ for i := range node.TablePairs {
+ node.TablePairs[i].FromTable = tables[i]
+ }
}
// SetFromTables implements DDLStatement.
-func (node *CreateIndex) SetFromTables(tables TableNames) {
+func (node *TruncateTable) SetFromTables(tables TableNames) {
// irrelevant
}
@@ -940,12 +1063,16 @@ func (node *AlterView) SetFromTables(tables TableNames) {
}
// GetToTables implements the DDLStatement interface
-func (node *DDL) GetToTables() TableNames {
- return node.ToTables
+func (node *RenameTable) GetToTables() TableNames {
+ var toTables TableNames
+ for _, pair := range node.TablePairs {
+ toTables = append(toTables, pair.ToTable)
+ }
+ return toTables
}
// GetToTables implements the DDLStatement interface
-func (node *CreateIndex) GetToTables() TableNames {
+func (node *TruncateTable) GetToTables() TableNames {
return nil
}
@@ -953,7 +1080,7 @@ func (node *CreateIndex) GetToTables() TableNames {
func (node *AlterTable) GetToTables() TableNames {
for _, option := range node.AlterOptions {
switch altOption := option.(type) {
- case *RenameTable:
+ case *RenameTableName:
return TableNames{altOption.Table}
}
}
@@ -986,14 +1113,13 @@ func (node *DropView) GetToTables() TableNames {
}
// AffectedTables returns the list table names affected by the DDLStatement.
-func (node *DDL) AffectedTables() TableNames {
- if node.Action == RenameDDLAction || node.Action == DropDDLAction {
- list := make(TableNames, 0, len(node.FromTables)+len(node.ToTables))
- list = append(list, node.FromTables...)
- list = append(list, node.ToTables...)
- return list
+func (node *RenameTable) AffectedTables() TableNames {
+ list := make(TableNames, 0, 2*len(node.TablePairs))
+ for _, pair := range node.TablePairs {
+ list = append(list, pair.FromTable)
+ list = append(list, pair.ToTable)
}
- return TableNames{node.Table}
+ return list
}
// AffectedTables returns the list table names affected by the DDLStatement.
@@ -1001,7 +1127,7 @@ func (node *AlterTable) AffectedTables() TableNames {
affectedTables := TableNames{node.Table}
for _, option := range node.AlterOptions {
switch altOption := option.(type) {
- case *RenameTable:
+ case *RenameTableName:
affectedTables = append(affectedTables, altOption.Table)
}
}
@@ -1009,7 +1135,7 @@ func (node *AlterTable) AffectedTables() TableNames {
}
// AffectedTables implements DDLStatement.
-func (node *CreateIndex) AffectedTables() TableNames {
+func (node *TruncateTable) AffectedTables() TableNames {
return TableNames{node.Table}
}
@@ -1039,13 +1165,7 @@ func (node *DropView) AffectedTables() TableNames {
}
// SetTable implements DDLStatement.
-func (node *CreateIndex) SetTable(qualifier string, name string) {
- node.Table.Qualifier = NewTableIdent(qualifier)
- node.Table.Name = NewTableIdent(name)
-}
-
-// SetTable implements DDLStatement.
-func (node *DDL) SetTable(qualifier string, name string) {
+func (node *TruncateTable) SetTable(qualifier string, name string) {
node.Table.Qualifier = NewTableIdent(qualifier)
node.Table.Name = NewTableIdent(name)
}
@@ -1074,6 +1194,9 @@ func (node *AlterView) SetTable(qualifier string, name string) {
node.ViewName.Name = NewTableIdent(name)
}
+// SetTable implements DDLStatement.
+func (node *RenameTable) SetTable(qualifier string, name string) {}
+
// SetTable implements DDLStatement.
func (node *DropTable) SetTable(qualifier string, name string) {}
@@ -1101,17 +1224,17 @@ func (node *AlterDatabase) IsFullyParsed() bool {
// GetDatabaseName implements the DBDDLStatement interface
func (node *DropDatabase) GetDatabaseName() string {
- return node.DBName
+ return node.DBName.String()
}
// GetDatabaseName implements the DBDDLStatement interface
func (node *CreateDatabase) GetDatabaseName() string {
- return node.DBName
+ return node.DBName.String()
}
// GetDatabaseName implements the DBDDLStatement interface
func (node *AlterDatabase) GetDatabaseName() string {
- return node.DBName
+ return node.DBName.String()
}
// ParenSelect can actually not be a top level statement,
@@ -1138,34 +1261,28 @@ type (
ShowCollationFilterOpt Expr
}
- // ShowColumns is of ShowInternal type, holds the show columns statement.
- ShowColumns struct {
- Full string
- Table TableName
- DbName string
- Filter *ShowFilter
- }
-
- // ShowTableStatus is of ShowInternal type, holds SHOW TABLE STATUS queries.
- ShowTableStatus struct {
- DatabaseName string
- Filter *ShowFilter
- }
-
// ShowCommandType represents the show statement type.
ShowCommandType int8
// ShowBasic is of ShowInternal type, holds Simple SHOW queries with a filter.
ShowBasic struct {
Command ShowCommandType
+ Full bool
+ Tbl TableName
+ DbName TableIdent
Filter *ShowFilter
}
+
+ // ShowCreate is of ShowInternal type, holds SHOW CREATE queries.
+ ShowCreate struct {
+ Command ShowCommandType
+ Op TableName
+ }
)
-func (*ShowLegacy) isShowInternal() {}
-func (*ShowColumns) isShowInternal() {}
-func (*ShowTableStatus) isShowInternal() {}
-func (*ShowBasic) isShowInternal() {}
+func (*ShowLegacy) isShowInternal() {}
+func (*ShowBasic) isShowInternal() {}
+func (*ShowCreate) isShowInternal() {}
// InsertRows represents the rows for an INSERT statement.
type InsertRows interface {
@@ -1229,11 +1346,7 @@ type ColumnType struct {
Type string
// Generic field options.
- NotNull bool
- Autoincrement bool
- Default Expr
- OnUpdate Expr
- Comment *Literal
+ Options *ColumnTypeOptions
// Numeric field options
Length *Literal
@@ -1247,6 +1360,22 @@ type ColumnType struct {
// Enum values
EnumValues []string
+}
+
+// ColumnTypeOptions are generic field options for a column type
+type ColumnTypeOptions struct {
+ /* We need Null to be *bool to distinguish 3 cases -
+ 1. When Not Null is specified (Null = false)
+ 2. When Null is specified (Null = true)
+ 3. When nothing is specified (Null = nil)
+ The complexity arises from the fact that we do not know whether the column will be nullable or not if nothing is specified.
+ Therefore we do not know whether the column is nullable or not in case 3.
+ */
+ Null *bool
+ Autoincrement bool
+ Default Expr
+ OnUpdate Expr
+ Comment *Literal
// Key specification
KeyOpt ColumnKeyOption
@@ -1291,7 +1420,7 @@ type VindexParam struct {
// ConstraintDefinition describes a constraint in a CREATE TABLE statement
type ConstraintDefinition struct {
- Name string
+ Name ColIdent
Details ConstraintInfo
}
@@ -1325,7 +1454,7 @@ type ShowFilter struct {
}
// Comments represents a list of comments.
-type Comments [][]byte
+type Comments []string
// SelectExprs represents SELECT expressions.
type SelectExprs []SelectExpr
@@ -1356,7 +1485,7 @@ type (
func (*StarExpr) iSelectExpr() {}
func (*AliasedExpr) iSelectExpr() {}
-func (Nextval) iSelectExpr() {}
+func (*Nextval) iSelectExpr() {}
// Columns represents an insert column list.
type Columns []ColIdent
@@ -1528,11 +1657,11 @@ type (
// Literal represents a fixed value.
Literal struct {
Type ValType
- Val []byte
+ Val string
}
// Argument represents bindvariable expression
- Argument []byte
+ Argument string
// NullVal represents a NULL value.
NullVal struct{}
@@ -1800,1638 +1929,10 @@ type TableIdent struct {
v string
}
-// Here follow all the Format implementations for AST nodes
-
-// Format formats the node.
-func (node *Select) Format(buf *TrackedBuffer) {
- var options string
- addIf := func(b bool, s string) {
- if b {
- options += s
- }
- }
- addIf(node.Distinct, DistinctStr)
- if node.Cache != nil {
- if *node.Cache {
- options += SQLCacheStr
- } else {
- options += SQLNoCacheStr
- }
- }
- addIf(node.StraightJoinHint, StraightJoinHint)
- addIf(node.SQLCalcFoundRows, SQLCalcFoundRowsStr)
-
- buf.astPrintf(node, "select %v%s%v from %v%v%v%v%v%v%s%v",
- node.Comments, options, node.SelectExprs,
- node.From, node.Where,
- node.GroupBy, node.Having, node.OrderBy,
- node.Limit, node.Lock.ToString(), node.Into)
-}
-
-// Format formats the node.
-func (node *ParenSelect) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "(%v)", node.Select)
-}
-
-// Format formats the node.
-func (node *Union) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "%v", node.FirstStatement)
- for _, us := range node.UnionSelects {
- buf.astPrintf(node, "%v", us)
- }
- buf.astPrintf(node, "%v%v%s", node.OrderBy, node.Limit, node.Lock.ToString())
-}
-
-// Format formats the node.
-func (node *UnionSelect) Format(buf *TrackedBuffer) {
- if node.Distinct {
- buf.astPrintf(node, " %s %v", UnionStr, node.Statement)
- } else {
- buf.astPrintf(node, " %s %v", UnionAllStr, node.Statement)
- }
-}
-
-// Format formats the node.
-func (node *VStream) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "vstream %v%v from %v",
- node.Comments, node.SelectExpr, node.Table)
-}
-
-// Format formats the node.
-func (node *Stream) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "stream %v%v from %v",
- node.Comments, node.SelectExpr, node.Table)
-}
-
-// Format formats the node.
-func (node *Insert) Format(buf *TrackedBuffer) {
- switch node.Action {
- case InsertAct:
- buf.astPrintf(node, "%s %v%sinto %v%v%v %v%v",
- InsertStr,
- node.Comments, node.Ignore.ToString(),
- node.Table, node.Partitions, node.Columns, node.Rows, node.OnDup)
- case ReplaceAct:
- buf.astPrintf(node, "%s %v%sinto %v%v%v %v%v",
- ReplaceStr,
- node.Comments, node.Ignore.ToString(),
- node.Table, node.Partitions, node.Columns, node.Rows, node.OnDup)
- default:
- buf.astPrintf(node, "%s %v%sinto %v%v%v %v%v",
- "Unkown Insert Action",
- node.Comments, node.Ignore.ToString(),
- node.Table, node.Partitions, node.Columns, node.Rows, node.OnDup)
- }
-
-}
-
-// Format formats the node.
-func (node *Update) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "update %v%s%v set %v%v%v%v",
- node.Comments, node.Ignore.ToString(), node.TableExprs,
- node.Exprs, node.Where, node.OrderBy, node.Limit)
-}
-
-// Format formats the node.
-func (node *Delete) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "delete %v", node.Comments)
- if node.Ignore {
- buf.WriteString("ignore ")
- }
- if node.Targets != nil {
- buf.astPrintf(node, "%v ", node.Targets)
- }
- buf.astPrintf(node, "from %v%v%v%v%v", node.TableExprs, node.Partitions, node.Where, node.OrderBy, node.Limit)
-}
-
-// Format formats the node.
-func (node *Set) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "set %v%v", node.Comments, node.Exprs)
-}
-
-// Format formats the node.
-func (node *SetTransaction) Format(buf *TrackedBuffer) {
- if node.Scope == ImplicitScope {
- buf.astPrintf(node, "set %vtransaction ", node.Comments)
- } else {
- buf.astPrintf(node, "set %v%s transaction ", node.Comments, node.Scope.ToString())
- }
-
- for i, char := range node.Characteristics {
- if i > 0 {
- buf.WriteString(", ")
- }
- buf.astPrintf(node, "%v", char)
- }
-}
-
-// Format formats the node.
-func (node *DropDatabase) Format(buf *TrackedBuffer) {
- exists := ""
- if node.IfExists {
- exists = " if exists"
- }
- buf.WriteString(fmt.Sprintf("%s database%s %v", DropStr, exists, node.DBName))
-}
-
-// Format formats the node.
-func (node *DDL) Format(buf *TrackedBuffer) {
- switch node.Action {
- case CreateDDLAction:
- if node.OptLike != nil {
- buf.astPrintf(node, "%s table %v %v", CreateStr, node.Table, node.OptLike)
- } else if node.TableSpec != nil {
- buf.astPrintf(node, "%s table %v %v", CreateStr, node.Table, node.TableSpec)
- } else {
- buf.astPrintf(node, "%s table %v", CreateStr, node.Table)
- }
- case DropDDLAction:
- exists := ""
- if node.IfExists {
- exists = " if exists"
- }
- buf.astPrintf(node, "%s table%s %v", DropStr, exists, node.FromTables)
- case RenameDDLAction:
- buf.astPrintf(node, "%s table %v to %v", RenameStr, node.FromTables[0], node.ToTables[0])
- for i := 1; i < len(node.FromTables); i++ {
- buf.astPrintf(node, ", %v to %v", node.FromTables[i], node.ToTables[i])
- }
- case AlterDDLAction:
- if node.PartitionSpec != nil {
- buf.astPrintf(node, "%s table %v %v", AlterStr, node.Table, node.PartitionSpec)
- } else {
- buf.astPrintf(node, "%s table %v", AlterStr, node.Table)
- }
- case FlushDDLAction:
- buf.astPrintf(node, "%s", FlushStr)
- default:
- buf.astPrintf(node, "%s table %v", node.Action.ToString(), node.Table)
- }
-}
-
-// Format formats the node.
-func (node *AlterVschema) Format(buf *TrackedBuffer) {
- switch node.Action {
- case CreateVindexDDLAction:
- buf.astPrintf(node, "alter vschema create vindex %v %v", node.Table, node.VindexSpec)
- case DropVindexDDLAction:
- buf.astPrintf(node, "alter vschema drop vindex %v", node.Table)
- case AddVschemaTableDDLAction:
- buf.astPrintf(node, "alter vschema add table %v", node.Table)
- case DropVschemaTableDDLAction:
- buf.astPrintf(node, "alter vschema drop table %v", node.Table)
- case AddColVindexDDLAction:
- buf.astPrintf(node, "alter vschema on %v add vindex %v (", node.Table, node.VindexSpec.Name)
- for i, col := range node.VindexCols {
- if i != 0 {
- buf.astPrintf(node, ", %v", col)
- } else {
- buf.astPrintf(node, "%v", col)
- }
- }
- buf.astPrintf(node, ")")
- if node.VindexSpec.Type.String() != "" {
- buf.astPrintf(node, " %v", node.VindexSpec)
- }
- case DropColVindexDDLAction:
- buf.astPrintf(node, "alter vschema on %v drop vindex %v", node.Table, node.VindexSpec.Name)
- case AddSequenceDDLAction:
- buf.astPrintf(node, "alter vschema add sequence %v", node.Table)
- case AddAutoIncDDLAction:
- buf.astPrintf(node, "alter vschema on %v add auto_increment %v", node.Table, node.AutoIncSpec)
- default:
- buf.astPrintf(node, "%s table %v", node.Action.ToString(), node.Table)
- }
-}
-
-// Format formats the node.
-func (node *OptLike) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "like %v", node.LikeTable)
-}
-
-// Format formats the node.
-func (node *PartitionSpec) Format(buf *TrackedBuffer) {
- switch node.Action {
- case ReorganizeAction:
- buf.astPrintf(node, "%s ", ReorganizeStr)
- prefix := ""
- for _, n := range node.Names {
- buf.astPrintf(node, "%s%v", prefix, n)
- prefix = ", "
- }
- buf.WriteString(" into (")
- prefix = ""
- for _, pd := range node.Definitions {
- buf.astPrintf(node, "%s%v", prefix, pd)
- prefix = ", "
- }
- buf.astPrintf(node, ")")
- case AddAction:
- buf.astPrintf(node, "%s (%v)", AddStr, node.Definitions[0])
- case DropAction:
- buf.astPrintf(node, "%s ", DropPartitionStr)
- prefix := ""
- for _, n := range node.Names {
- buf.astPrintf(node, "%s%v", prefix, n)
- prefix = ", "
- }
- case DiscardAction:
- buf.astPrintf(node, "%s ", DiscardStr)
- if node.IsAll {
- buf.WriteString("all")
- } else {
- prefix := ""
- for _, n := range node.Names {
- buf.astPrintf(node, "%s%v", prefix, n)
- prefix = ", "
- }
- }
- buf.WriteString(" tablespace")
- case ImportAction:
- buf.astPrintf(node, "%s ", ImportStr)
- if node.IsAll {
- buf.WriteString("all")
- } else {
- prefix := ""
- for _, n := range node.Names {
- buf.astPrintf(node, "%s%v", prefix, n)
- prefix = ", "
- }
- }
- buf.WriteString(" tablespace")
- case TruncateAction:
- buf.astPrintf(node, "%s ", TruncatePartitionStr)
- if node.IsAll {
- buf.WriteString("all")
- } else {
- prefix := ""
- for _, n := range node.Names {
- buf.astPrintf(node, "%s%v", prefix, n)
- prefix = ", "
- }
- }
- case CoalesceAction:
- buf.astPrintf(node, "%s %v", CoalesceStr, node.Number)
- case ExchangeAction:
- buf.astPrintf(node, "%s %v with table %v", ExchangeStr, node.Names[0], node.TableName)
- if node.WithoutValidation {
- buf.WriteString(" without validation")
- }
- case AnalyzeAction:
- buf.astPrintf(node, "%s ", AnalyzePartitionStr)
- if node.IsAll {
- buf.WriteString("all")
- } else {
- prefix := ""
- for _, n := range node.Names {
- buf.astPrintf(node, "%s%v", prefix, n)
- prefix = ", "
- }
- }
- case CheckAction:
- buf.astPrintf(node, "%s ", CheckStr)
- if node.IsAll {
- buf.WriteString("all")
- } else {
- prefix := ""
- for _, n := range node.Names {
- buf.astPrintf(node, "%s%v", prefix, n)
- prefix = ", "
- }
- }
- case OptimizeAction:
- buf.astPrintf(node, "%s ", OptimizeStr)
- if node.IsAll {
- buf.WriteString("all")
- } else {
- prefix := ""
- for _, n := range node.Names {
- buf.astPrintf(node, "%s%v", prefix, n)
- prefix = ", "
- }
- }
- case RebuildAction:
- buf.astPrintf(node, "%s ", RebuildStr)
- if node.IsAll {
- buf.WriteString("all")
- } else {
- prefix := ""
- for _, n := range node.Names {
- buf.astPrintf(node, "%s%v", prefix, n)
- prefix = ", "
- }
- }
- case RepairAction:
- buf.astPrintf(node, "%s ", RepairStr)
- if node.IsAll {
- buf.WriteString("all")
- } else {
- prefix := ""
- for _, n := range node.Names {
- buf.astPrintf(node, "%s%v", prefix, n)
- prefix = ", "
- }
- }
- case RemoveAction:
- buf.WriteString(RemoveStr)
- case UpgradeAction:
- buf.WriteString(UpgradeStr)
- default:
- panic("unimplemented")
- }
-}
-
-// Format formats the node
-func (node *PartitionDefinition) Format(buf *TrackedBuffer) {
- if !node.Maxvalue {
- buf.astPrintf(node, "partition %v values less than (%v)", node.Name, node.Limit)
- } else {
- buf.astPrintf(node, "partition %v values less than (maxvalue)", node.Name)
- }
-}
-
-// Format formats the node.
-func (ts *TableSpec) Format(buf *TrackedBuffer) {
- buf.astPrintf(ts, "(\n")
- for i, col := range ts.Columns {
- if i == 0 {
- buf.astPrintf(ts, "\t%v", col)
- } else {
- buf.astPrintf(ts, ",\n\t%v", col)
- }
- }
- for _, idx := range ts.Indexes {
- buf.astPrintf(ts, ",\n\t%v", idx)
- }
- for _, c := range ts.Constraints {
- buf.astPrintf(ts, ",\n\t%v", c)
- }
-
- buf.astPrintf(ts, "\n)")
- for i, opt := range ts.Options {
- if i != 0 {
- buf.WriteString(",\n ")
- }
- buf.astPrintf(ts, " %s", opt.Name)
- if opt.String != "" {
- buf.astPrintf(ts, " %s", opt.String)
- } else if opt.Value != nil {
- buf.astPrintf(ts, " %v", opt.Value)
- } else {
- buf.astPrintf(ts, " (%v)", opt.Tables)
- }
- }
-}
-
-// Format formats the node.
-func (col *ColumnDefinition) Format(buf *TrackedBuffer) {
- buf.astPrintf(col, "%v %v", col.Name, &col.Type)
-}
-
-// Format returns a canonical string representation of the type and all relevant options
-func (ct *ColumnType) Format(buf *TrackedBuffer) {
- buf.astPrintf(ct, "%s", ct.Type)
-
- if ct.Length != nil && ct.Scale != nil {
- buf.astPrintf(ct, "(%v,%v)", ct.Length, ct.Scale)
-
- } else if ct.Length != nil {
- buf.astPrintf(ct, "(%v)", ct.Length)
- }
-
- if ct.EnumValues != nil {
- buf.astPrintf(ct, "(%s)", strings.Join(ct.EnumValues, ", "))
- }
-
- opts := make([]string, 0, 16)
- if ct.Unsigned {
- opts = append(opts, keywordStrings[UNSIGNED])
- }
- if ct.Zerofill {
- opts = append(opts, keywordStrings[ZEROFILL])
- }
- if ct.Charset != "" {
- opts = append(opts, keywordStrings[CHARACTER], keywordStrings[SET], ct.Charset)
- }
- if ct.Collate != "" {
- opts = append(opts, keywordStrings[COLLATE], ct.Collate)
- }
- if ct.NotNull {
- opts = append(opts, keywordStrings[NOT], keywordStrings[NULL])
- }
- if ct.Default != nil {
- opts = append(opts, keywordStrings[DEFAULT], String(ct.Default))
- }
- if ct.OnUpdate != nil {
- opts = append(opts, keywordStrings[ON], keywordStrings[UPDATE], String(ct.OnUpdate))
- }
- if ct.Autoincrement {
- opts = append(opts, keywordStrings[AUTO_INCREMENT])
- }
- if ct.Comment != nil {
- opts = append(opts, keywordStrings[COMMENT_KEYWORD], String(ct.Comment))
- }
- if ct.KeyOpt == colKeyPrimary {
- opts = append(opts, keywordStrings[PRIMARY], keywordStrings[KEY])
- }
- if ct.KeyOpt == colKeyUnique {
- opts = append(opts, keywordStrings[UNIQUE])
- }
- if ct.KeyOpt == colKeyUniqueKey {
- opts = append(opts, keywordStrings[UNIQUE], keywordStrings[KEY])
- }
- if ct.KeyOpt == colKeySpatialKey {
- opts = append(opts, keywordStrings[SPATIAL], keywordStrings[KEY])
- }
- if ct.KeyOpt == colKeyFulltextKey {
- opts = append(opts, keywordStrings[FULLTEXT], keywordStrings[KEY])
- }
- if ct.KeyOpt == colKey {
- opts = append(opts, keywordStrings[KEY])
- }
-
- if len(opts) != 0 {
- buf.astPrintf(ct, " %s", strings.Join(opts, " "))
- }
-}
-
-// Format formats the node.
-func (idx *IndexDefinition) Format(buf *TrackedBuffer) {
- buf.astPrintf(idx, "%v (", idx.Info)
- for i, col := range idx.Columns {
- if i != 0 {
- buf.astPrintf(idx, ", %v", col.Column)
- } else {
- buf.astPrintf(idx, "%v", col.Column)
- }
- if col.Length != nil {
- buf.astPrintf(idx, "(%v)", col.Length)
- }
- if col.Direction == DescOrder {
- buf.astPrintf(idx, " desc")
- }
- }
- buf.astPrintf(idx, ")")
-
- for _, opt := range idx.Options {
- buf.astPrintf(idx, " %s", opt.Name)
- if opt.String != "" {
- buf.astPrintf(idx, " %s", opt.String)
- } else {
- buf.astPrintf(idx, " %v", opt.Value)
- }
- }
-}
-
-// Format formats the node.
-func (ii *IndexInfo) Format(buf *TrackedBuffer) {
- if !ii.ConstraintName.IsEmpty() {
- buf.astPrintf(ii, "constraint %v ", ii.ConstraintName)
- }
- if ii.Primary {
- buf.astPrintf(ii, "%s", ii.Type)
- } else {
- buf.astPrintf(ii, "%s", ii.Type)
- if !ii.Name.IsEmpty() {
- buf.astPrintf(ii, " %v", ii.Name)
- }
- }
-}
-
-// Format formats the node.
-func (node *AutoIncSpec) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "%v ", node.Column)
- buf.astPrintf(node, "using %v", node.Sequence)
-}
-
-// Format formats the node. The "CREATE VINDEX" preamble was formatted in
-// the containing DDL node Format, so this just prints the type, any
-// parameters, and optionally the owner
-func (node *VindexSpec) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "using %v", node.Type)
-
- numParams := len(node.Params)
- if numParams != 0 {
- buf.astPrintf(node, " with ")
- for i, p := range node.Params {
- if i != 0 {
- buf.astPrintf(node, ", ")
- }
- buf.astPrintf(node, "%v", p)
- }
- }
-}
-
-// Format formats the node.
-func (node VindexParam) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "%s=%s", node.Key.String(), node.Val)
-}
-
-// Format formats the node.
-func (c *ConstraintDefinition) Format(buf *TrackedBuffer) {
- if c.Name != "" {
- buf.astPrintf(c, "constraint %s ", c.Name)
- }
- c.Details.Format(buf)
-}
-
-// Format formats the node.
-func (a ReferenceAction) Format(buf *TrackedBuffer) {
- switch a {
- case Restrict:
- buf.WriteString("restrict")
- case Cascade:
- buf.WriteString("cascade")
- case NoAction:
- buf.WriteString("no action")
- case SetNull:
- buf.WriteString("set null")
- case SetDefault:
- buf.WriteString("set default")
- }
-}
-
-// Format formats the node.
-func (f *ForeignKeyDefinition) Format(buf *TrackedBuffer) {
- buf.astPrintf(f, "foreign key %v references %v %v", f.Source, f.ReferencedTable, f.ReferencedColumns)
- if f.OnDelete != DefaultAction {
- buf.astPrintf(f, " on delete %v", f.OnDelete)
- }
- if f.OnUpdate != DefaultAction {
- buf.astPrintf(f, " on update %v", f.OnUpdate)
- }
-}
-
-// Format formats the node.
-func (c *CheckConstraintDefinition) Format(buf *TrackedBuffer) {
- buf.astPrintf(c, "check (%v)", c.Expr)
- if c.Enforced {
- buf.astPrintf(c, " enforced")
- } else {
- buf.astPrintf(c, " not enforced")
- }
-}
-
-// Format formats the node.
-func (node *Show) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "%v", node.Internal)
-}
-
-// Format formats the node.
-func (node *ShowColumns) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "show %s", node.Full)
- buf.astPrintf(node, "columns from %v", node.Table)
-
- buf.printIf(node.DbName != "", " from "+node.DbName)
- if node.Filter != nil {
- buf.astPrintf(node, "%v", node.Filter)
- }
-}
-
-// Format formats the node.
-func (node *ShowLegacy) Format(buf *TrackedBuffer) {
- nodeType := strings.ToLower(node.Type)
- if (nodeType == "tables" || nodeType == "columns" || nodeType == "fields" || nodeType == "index" || nodeType == "keys" || nodeType == "indexes" ||
- nodeType == "databases" || nodeType == "schemas" || nodeType == "keyspaces" || nodeType == "vitess_keyspaces" || nodeType == "vitess_shards" || nodeType == "vitess_tablets") && node.ShowTablesOpt != nil {
- opt := node.ShowTablesOpt
- if node.Extended != "" {
- buf.astPrintf(node, "show %s%s", node.Extended, nodeType)
- } else {
- buf.astPrintf(node, "show %s%s", opt.Full, nodeType)
- }
- if (nodeType == "columns" || nodeType == "fields") && node.HasOnTable() {
- buf.astPrintf(node, " from %v", node.OnTable)
- }
- if (nodeType == "index" || nodeType == "keys" || nodeType == "indexes") && node.HasOnTable() {
- buf.astPrintf(node, " from %v", node.OnTable)
- }
- if opt.DbName != "" {
- buf.astPrintf(node, " from %s", opt.DbName)
- }
- buf.astPrintf(node, "%v", opt.Filter)
- return
- }
- if node.Scope == ImplicitScope {
- buf.astPrintf(node, "show %s", nodeType)
- } else {
- buf.astPrintf(node, "show %s %s", node.Scope.ToString(), nodeType)
- }
- if node.HasOnTable() {
- buf.astPrintf(node, " on %v", node.OnTable)
- }
- if nodeType == "collation" && node.ShowCollationFilterOpt != nil {
- buf.astPrintf(node, " where %v", node.ShowCollationFilterOpt)
- }
- if nodeType == "charset" && node.ShowTablesOpt != nil {
- buf.astPrintf(node, "%v", node.ShowTablesOpt.Filter)
- }
- if node.HasTable() {
- buf.astPrintf(node, " %v", node.Table)
- }
-}
-
-// Format formats the node.
-func (node *ShowFilter) Format(buf *TrackedBuffer) {
- if node == nil {
- return
- }
- if node.Like != "" {
- buf.astPrintf(node, " like '%s'", node.Like)
- } else {
- buf.astPrintf(node, " where %v", node.Filter)
- }
-}
-
-// Format formats the node.
-func (node *Use) Format(buf *TrackedBuffer) {
- if node.DBName.v != "" {
- buf.astPrintf(node, "use %v", node.DBName)
- } else {
- buf.astPrintf(node, "use")
- }
-}
-
-// Format formats the node.
-func (node *Commit) Format(buf *TrackedBuffer) {
- buf.WriteString("commit")
-}
-
-// Format formats the node.
-func (node *Begin) Format(buf *TrackedBuffer) {
- buf.WriteString("begin")
-}
-
-// Format formats the node.
-func (node *Rollback) Format(buf *TrackedBuffer) {
- buf.WriteString("rollback")
-}
-
-// Format formats the node.
-func (node *SRollback) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "rollback to %v", node.Name)
-}
-
-// Format formats the node.
-func (node *Savepoint) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "savepoint %v", node.Name)
-}
-
-// Format formats the node.
-func (node *Release) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "release savepoint %v", node.Name)
-}
-
-// Format formats the node.
-func (node *Explain) Format(buf *TrackedBuffer) {
- format := ""
- switch node.Type {
- case EmptyType: // do nothing
- case AnalyzeType:
- format = AnalyzeStr + " "
- default:
- format = "format = " + node.Type.ToString() + " "
- }
- buf.astPrintf(node, "explain %s%v", format, node.Statement)
-}
-
-// Format formats the node.
-func (node *OtherRead) Format(buf *TrackedBuffer) {
- buf.WriteString("otherread")
-}
-
-// Format formats the node.
-func (node *OtherAdmin) Format(buf *TrackedBuffer) {
- buf.WriteString("otheradmin")
-}
-
-// Format formats the node.
-func (node Comments) Format(buf *TrackedBuffer) {
- for _, c := range node {
- buf.astPrintf(node, "%s ", c)
- }
-}
-
-// Format formats the node.
-func (node SelectExprs) Format(buf *TrackedBuffer) {
- var prefix string
- for _, n := range node {
- buf.astPrintf(node, "%s%v", prefix, n)
- prefix = ", "
- }
-}
-
-// Format formats the node.
-func (node *StarExpr) Format(buf *TrackedBuffer) {
- if !node.TableName.IsEmpty() {
- buf.astPrintf(node, "%v.", node.TableName)
- }
- buf.astPrintf(node, "*")
-}
-
-// Format formats the node.
-func (node *AliasedExpr) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "%v", node.Expr)
- if !node.As.IsEmpty() {
- buf.astPrintf(node, " as %v", node.As)
- }
-}
-
-// Format formats the node.
-func (node Nextval) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "next %v values", node.Expr)
-}
-
-// Format formats the node.
-func (node Columns) Format(buf *TrackedBuffer) {
- if node == nil {
- return
- }
- prefix := "("
- for _, n := range node {
- buf.astPrintf(node, "%s%v", prefix, n)
- prefix = ", "
- }
- buf.WriteString(")")
-}
-
-// Format formats the node
-func (node Partitions) Format(buf *TrackedBuffer) {
- if node == nil {
- return
- }
- prefix := " partition ("
- for _, n := range node {
- buf.astPrintf(node, "%s%v", prefix, n)
- prefix = ", "
- }
- buf.WriteString(")")
-}
-
-// Format formats the node.
-func (node TableExprs) Format(buf *TrackedBuffer) {
- var prefix string
- for _, n := range node {
- buf.astPrintf(node, "%s%v", prefix, n)
- prefix = ", "
- }
-}
-
-// Format formats the node.
-func (node *AliasedTableExpr) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "%v%v", node.Expr, node.Partitions)
- if !node.As.IsEmpty() {
- buf.astPrintf(node, " as %v", node.As)
- }
- if node.Hints != nil {
- // Hint node provides the space padding.
- buf.astPrintf(node, "%v", node.Hints)
- }
-}
-
-// Format formats the node.
-func (node TableNames) Format(buf *TrackedBuffer) {
- var prefix string
- for _, n := range node {
- buf.astPrintf(node, "%s%v", prefix, n)
- prefix = ", "
- }
-}
-
-// Format formats the node.
-func (node TableName) Format(buf *TrackedBuffer) {
- if node.IsEmpty() {
- return
- }
- if !node.Qualifier.IsEmpty() {
- buf.astPrintf(node, "%v.", node.Qualifier)
- }
- buf.astPrintf(node, "%v", node.Name)
-}
-
-// Format formats the node.
-func (node *ParenTableExpr) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "(%v)", node.Exprs)
-}
-
-// Format formats the node.
-func (node JoinCondition) Format(buf *TrackedBuffer) {
- if node.On != nil {
- buf.astPrintf(node, " on %v", node.On)
- }
- if node.Using != nil {
- buf.astPrintf(node, " using %v", node.Using)
- }
-}
-
-// Format formats the node.
-func (node *JoinTableExpr) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "%v %s %v%v", node.LeftExpr, node.Join.ToString(), node.RightExpr, node.Condition)
-}
-
-// Format formats the node.
-func (node *IndexHints) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, " %sindex ", node.Type.ToString())
- if len(node.Indexes) == 0 {
- buf.astPrintf(node, "()")
- } else {
- prefix := "("
- for _, n := range node.Indexes {
- buf.astPrintf(node, "%s%v", prefix, n)
- prefix = ", "
- }
- buf.astPrintf(node, ")")
- }
-}
-
-// Format formats the node.
-func (node *Where) Format(buf *TrackedBuffer) {
- if node == nil || node.Expr == nil {
- return
- }
- buf.astPrintf(node, " %s %v", node.Type.ToString(), node.Expr)
-}
-
-// Format formats the node.
-func (node Exprs) Format(buf *TrackedBuffer) {
- var prefix string
- for _, n := range node {
- buf.astPrintf(node, "%s%v", prefix, n)
- prefix = ", "
- }
-}
-
-// Format formats the node.
-func (node *AndExpr) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "%l and %r", node.Left, node.Right)
-}
-
-// Format formats the node.
-func (node *OrExpr) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "%l or %r", node.Left, node.Right)
-}
-
-// Format formats the node.
-func (node *XorExpr) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "%l xor %r", node.Left, node.Right)
-}
-
-// Format formats the node.
-func (node *NotExpr) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "not %v", node.Expr)
-}
-
-// Format formats the node.
-func (node *ComparisonExpr) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "%l %s %r", node.Left, node.Operator.ToString(), node.Right)
- if node.Escape != nil {
- buf.astPrintf(node, " escape %v", node.Escape)
- }
-}
-
-// Format formats the node.
-func (node *RangeCond) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "%v %s %l and %r", node.Left, node.Operator.ToString(), node.From, node.To)
-}
-
-// Format formats the node.
-func (node *IsExpr) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "%v %s", node.Expr, node.Operator.ToString())
-}
-
-// Format formats the node.
-func (node *ExistsExpr) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "exists %v", node.Subquery)
-}
-
-// Format formats the node.
-func (node *Literal) Format(buf *TrackedBuffer) {
- switch node.Type {
- case StrVal:
- sqltypes.MakeTrusted(sqltypes.VarBinary, node.Val).EncodeSQL(buf)
- case IntVal, FloatVal, HexNum:
- buf.astPrintf(node, "%s", node.Val)
- case HexVal:
- buf.astPrintf(node, "X'%s'", node.Val)
- case BitVal:
- buf.astPrintf(node, "B'%s'", node.Val)
- default:
- panic("unexpected")
- }
-}
-
-// Format formats the node.
-func (node Argument) Format(buf *TrackedBuffer) {
- buf.WriteArg(string(node))
-}
-
-// Format formats the node.
-func (node *NullVal) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "null")
-}
-
-// Format formats the node.
-func (node BoolVal) Format(buf *TrackedBuffer) {
- if node {
- buf.astPrintf(node, "true")
- } else {
- buf.astPrintf(node, "false")
- }
-}
-
-// Format formats the node.
-func (node *ColName) Format(buf *TrackedBuffer) {
- if !node.Qualifier.IsEmpty() {
- buf.astPrintf(node, "%v.", node.Qualifier)
- }
- buf.astPrintf(node, "%v", node.Name)
-}
-
-// Format formats the node.
-func (node ValTuple) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "(%v)", Exprs(node))
-}
-
-// Format formats the node.
-func (node *Subquery) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "(%v)", node.Select)
-}
-
-// Format formats the node.
-func (node *DerivedTable) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "(%v)", node.Select)
-}
-
-// Format formats the node.
-func (node ListArg) Format(buf *TrackedBuffer) {
- buf.WriteArg(string(node))
-}
-
-// Format formats the node.
-func (node *BinaryExpr) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "%l %s %r", node.Left, node.Operator.ToString(), node.Right)
-}
-
-// Format formats the node.
-func (node *UnaryExpr) Format(buf *TrackedBuffer) {
- if _, unary := node.Expr.(*UnaryExpr); unary {
- // They have same precedence so parenthesis is not required.
- buf.astPrintf(node, "%s %v", node.Operator.ToString(), node.Expr)
- return
- }
- buf.astPrintf(node, "%s%v", node.Operator.ToString(), node.Expr)
-}
-
-// Format formats the node.
-func (node *IntervalExpr) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "interval %v %s", node.Expr, node.Unit)
-}
-
-// Format formats the node.
-func (node *TimestampFuncExpr) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "%s(%s, %v, %v)", node.Name, node.Unit, node.Expr1, node.Expr2)
-}
-
-// Format formats the node.
-func (node *CurTimeFuncExpr) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "%s(%v)", node.Name.String(), node.Fsp)
-}
-
-// Format formats the node.
-func (node *CollateExpr) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "%v collate %s", node.Expr, node.Charset)
-}
-
-// Format formats the node.
-func (node *FuncExpr) Format(buf *TrackedBuffer) {
- var distinct string
- if node.Distinct {
- distinct = "distinct "
- }
- if !node.Qualifier.IsEmpty() {
- buf.astPrintf(node, "%v.", node.Qualifier)
- }
- // Function names should not be back-quoted even
- // if they match a reserved word, only if they contain illegal characters
- funcName := node.Name.String()
-
- if containEscapableChars(funcName, NoAt) {
- writeEscapedString(buf, funcName)
- } else {
- buf.WriteString(funcName)
- }
- buf.astPrintf(node, "(%s%v)", distinct, node.Exprs)
-}
-
-// Format formats the node
-func (node *GroupConcatExpr) Format(buf *TrackedBuffer) {
- if node.Distinct {
- buf.astPrintf(node, "group_concat(%s%v%v%s%v)", DistinctStr, node.Exprs, node.OrderBy, node.Separator, node.Limit)
- } else {
- buf.astPrintf(node, "group_concat(%v%v%s%v)", node.Exprs, node.OrderBy, node.Separator, node.Limit)
- }
-}
-
-// Format formats the node.
-func (node *ValuesFuncExpr) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "values(%v)", node.Name)
-}
-
-// Format formats the node.
-func (node *SubstrExpr) Format(buf *TrackedBuffer) {
- var val interface{}
- if node.Name != nil {
- val = node.Name
- } else {
- val = node.StrVal
- }
-
- if node.To == nil {
- buf.astPrintf(node, "substr(%v, %v)", val, node.From)
- } else {
- buf.astPrintf(node, "substr(%v, %v, %v)", val, node.From, node.To)
- }
-}
-
-// Format formats the node.
-func (node *ConvertExpr) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "convert(%v, %v)", node.Expr, node.Type)
-}
-
-// Format formats the node.
-func (node *ConvertUsingExpr) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "convert(%v using %s)", node.Expr, node.Type)
-}
-
-// Format formats the node.
-func (node *ConvertType) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "%s", node.Type)
- if node.Length != nil {
- buf.astPrintf(node, "(%v", node.Length)
- if node.Scale != nil {
- buf.astPrintf(node, ", %v", node.Scale)
- }
- buf.astPrintf(node, ")")
- }
- if node.Charset != "" {
- buf.astPrintf(node, "%s %s", node.Operator.ToString(), node.Charset)
- }
-}
-
-// Format formats the node
-func (node *MatchExpr) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "match(%v) against (%v%s)", node.Columns, node.Expr, node.Option.ToString())
-}
-
-// Format formats the node.
-func (node *CaseExpr) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "case ")
- if node.Expr != nil {
- buf.astPrintf(node, "%v ", node.Expr)
- }
- for _, when := range node.Whens {
- buf.astPrintf(node, "%v ", when)
- }
- if node.Else != nil {
- buf.astPrintf(node, "else %v ", node.Else)
- }
- buf.astPrintf(node, "end")
-}
-
-// Format formats the node.
-func (node *Default) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "default")
- if node.ColName != "" {
- buf.WriteString("(")
- formatID(buf, node.ColName, strings.ToLower(node.ColName), NoAt)
- buf.WriteString(")")
- }
-}
-
-// Format formats the node.
-func (node *When) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "when %v then %v", node.Cond, node.Val)
-}
-
-// Format formats the node.
-func (node GroupBy) Format(buf *TrackedBuffer) {
- prefix := " group by "
- for _, n := range node {
- buf.astPrintf(node, "%s%v", prefix, n)
- prefix = ", "
- }
-}
-
-// Format formats the node.
-func (node OrderBy) Format(buf *TrackedBuffer) {
- prefix := " order by "
- for _, n := range node {
- buf.astPrintf(node, "%s%v", prefix, n)
- prefix = ", "
- }
-}
-
-// Format formats the node.
-func (node *Order) Format(buf *TrackedBuffer) {
- if node, ok := node.Expr.(*NullVal); ok {
- buf.astPrintf(node, "%v", node)
- return
- }
- if node, ok := node.Expr.(*FuncExpr); ok {
- if node.Name.Lowered() == "rand" {
- buf.astPrintf(node, "%v", node)
- return
- }
- }
-
- buf.astPrintf(node, "%v %s", node.Expr, node.Direction.ToString())
-}
-
-// Format formats the node.
-func (node *Limit) Format(buf *TrackedBuffer) {
- if node == nil {
- return
- }
- buf.astPrintf(node, " limit ")
- if node.Offset != nil {
- buf.astPrintf(node, "%v, ", node.Offset)
- }
- buf.astPrintf(node, "%v", node.Rowcount)
-}
-
-// Format formats the node.
-func (node Values) Format(buf *TrackedBuffer) {
- prefix := "values "
- for _, n := range node {
- buf.astPrintf(node, "%s%v", prefix, n)
- prefix = ", "
- }
-}
-
-// Format formats the node.
-func (node UpdateExprs) Format(buf *TrackedBuffer) {
- var prefix string
- for _, n := range node {
- buf.astPrintf(node, "%s%v", prefix, n)
- prefix = ", "
- }
-}
-
-// Format formats the node.
-func (node *UpdateExpr) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "%v = %v", node.Name, node.Expr)
-}
-
-// Format formats the node.
-func (node SetExprs) Format(buf *TrackedBuffer) {
- var prefix string
- for _, n := range node {
- buf.astPrintf(node, "%s%v", prefix, n)
- prefix = ", "
- }
-}
-
-// Format formats the node.
-func (node *SetExpr) Format(buf *TrackedBuffer) {
- if node.Scope != ImplicitScope {
- buf.WriteString(node.Scope.ToString())
- buf.WriteString(" ")
- }
- // We don't have to backtick set variable names.
- switch {
- case node.Name.EqualString("charset") || node.Name.EqualString("names"):
- buf.astPrintf(node, "%s %v", node.Name.String(), node.Expr)
- case node.Name.EqualString(TransactionStr):
- literal := node.Expr.(*Literal)
- buf.astPrintf(node, "%s %s", node.Name.String(), strings.ToLower(string(literal.Val)))
- default:
- buf.astPrintf(node, "%v = %v", node.Name, node.Expr)
- }
-}
-
-// Format formats the node.
-func (node OnDup) Format(buf *TrackedBuffer) {
- if node == nil {
- return
- }
- buf.astPrintf(node, " on duplicate key update %v", UpdateExprs(node))
-}
-
-// Format formats the node.
-func (node ColIdent) Format(buf *TrackedBuffer) {
- for i := NoAt; i < node.at; i++ {
- buf.WriteByte('@')
- }
- formatID(buf, node.val, node.Lowered(), node.at)
-}
-
-// Format formats the node.
-func (node TableIdent) Format(buf *TrackedBuffer) {
- formatID(buf, node.v, strings.ToLower(node.v), NoAt)
-}
-
-// AtCount return the '@' count present in ColIdent Name
-func (node ColIdent) AtCount() AtCount {
- return node.at
+// AtCount return the '@' count present in ColIdent Name
+func (node ColIdent) AtCount() AtCount {
+ return node.at
}
func (IsolationLevel) iChar() {}
func (AccessMode) iChar() {}
-
-// Format formats the node.
-func (node IsolationLevel) Format(buf *TrackedBuffer) {
- buf.WriteString("isolation level ")
- switch node {
- case ReadUncommitted:
- buf.WriteString(ReadUncommittedStr)
- case ReadCommitted:
- buf.WriteString(ReadCommittedStr)
- case RepeatableRead:
- buf.WriteString(RepeatableReadStr)
- case Serializable:
- buf.WriteString(SerializableStr)
- default:
- buf.WriteString("Unknown Isolation level value")
- }
-}
-
-// Format formats the node.
-func (node AccessMode) Format(buf *TrackedBuffer) {
- if node == ReadOnly {
- buf.WriteString(TxReadOnly)
- } else {
- buf.WriteString(TxReadWrite)
- }
-}
-
-// Format formats the node.
-func (node *Load) Format(buf *TrackedBuffer) {
- buf.WriteString("AST node missing for Load type")
-}
-
-// Format formats the node.
-func (node *ShowTableStatus) Format(buf *TrackedBuffer) {
- buf.WriteString("show table status")
- if node.DatabaseName != "" {
- buf.WriteString(" from ")
- buf.WriteString(node.DatabaseName)
- }
- buf.astPrintf(node, "%v", node.Filter)
-}
-
-// Format formats the node.
-func (node *ShowBasic) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "show%s%v", node.Command.ToString(), node.Filter)
-}
-
-// Format formats the node.
-func (node *SelectInto) Format(buf *TrackedBuffer) {
- if node == nil {
- return
- }
- buf.astPrintf(node, "%s'%s'", node.Type.ToString(), node.FileName)
- if node.Charset != "" {
- buf.astPrintf(node, " character set %s", node.Charset)
- }
- buf.astPrintf(node, "%s%s%s%s", node.FormatOption, node.ExportOption, node.Manifest, node.Overwrite)
-}
-
-// Format formats the node.
-func (node *CreateIndex) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "alter table %v add", node.Table)
- if node.Constraint != "" {
- buf.WriteString(" " + node.Constraint)
- }
- buf.astPrintf(node, " index %v", node.Name)
-
- buf.WriteString(" (")
- for i, col := range node.Columns {
- if i != 0 {
- buf.astPrintf(node, ", %v", col.Column)
- } else {
- buf.astPrintf(node, "%v", col.Column)
- }
- if col.Length != nil {
- buf.astPrintf(node, "(%v)", col.Length)
- }
- if col.Direction == DescOrder {
- buf.WriteString(" desc")
- }
- }
- buf.astPrintf(node, ")")
- for _, opt := range node.Options {
- //if opt == nil {
- // continue
- //}
- buf.WriteString(" " + strings.ToLower(opt.Name))
- if opt.String != "" {
- buf.WriteString(" " + opt.String)
- } else {
- buf.astPrintf(node, " %v", opt.Value)
- }
- }
-}
-
-// Format formats the node.
-func (node *CreateDatabase) Format(buf *TrackedBuffer) {
- buf.WriteString("create database")
- if node.IfNotExists {
- buf.WriteString(" if not exists")
- }
- buf.astPrintf(node, " %s", node.DBName)
- if node.CreateOptions != nil {
- for _, createOption := range node.CreateOptions {
- if createOption.IsDefault {
- buf.WriteString(" default")
- }
- buf.WriteString(createOption.Type.ToString())
- buf.WriteString(" " + createOption.Value)
- }
- }
-}
-
-// Format formats the node.
-func (node *AlterDatabase) Format(buf *TrackedBuffer) {
- buf.WriteString("alter database")
- if node.DBName != "" {
- buf.astPrintf(node, " %s", node.DBName)
- }
- if node.UpdateDataDirectory {
- buf.WriteString(" upgrade data directory name")
- }
- if node.AlterOptions != nil {
- for _, createOption := range node.AlterOptions {
- if createOption.IsDefault {
- buf.WriteString(" default")
- }
- buf.WriteString(createOption.Type.ToString())
- buf.WriteString(" " + createOption.Value)
- }
- }
-}
-
-// Format formats the node.
-func (node *CreateTable) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "create table %v", node.Table)
- if node.OptLike != nil {
- buf.astPrintf(node, " %v", node.OptLike)
- }
- if node.TableSpec != nil {
- buf.astPrintf(node, " %v", node.TableSpec)
- }
-}
-
-// Format formats the node.
-func (node *CreateView) Format(buf *TrackedBuffer) {
- buf.WriteString("create")
- if node.IsReplace {
- buf.WriteString(" or replace")
- }
- if node.Algorithm != "" {
- buf.astPrintf(node, " algorithm = %s", node.Algorithm)
- }
- if node.Definer != "" {
- buf.astPrintf(node, " definer = %s", node.Definer)
- }
- if node.Security != "" {
- buf.astPrintf(node, " sql security %s", node.Security)
- }
- buf.astPrintf(node, " view %v", node.ViewName)
- buf.astPrintf(node, "%v as %v", node.Columns, node.Select)
- if node.CheckOption != "" {
- buf.astPrintf(node, " with %s check option", node.CheckOption)
- }
-}
-
-// Format formats the LockTables node.
-func (node *LockTables) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "lock tables %v %s", node.Tables[0].Table, node.Tables[0].Lock.ToString())
- for i := 1; i < len(node.Tables); i++ {
- buf.astPrintf(node, ", %v %s", node.Tables[i].Table, node.Tables[i].Lock.ToString())
- }
-}
-
-// Format formats the UnlockTables node.
-func (node *UnlockTables) Format(buf *TrackedBuffer) {
- buf.WriteString("unlock tables")
-}
-
-// Format formats the node.
-func (node *AlterView) Format(buf *TrackedBuffer) {
- buf.WriteString("alter")
- if node.Algorithm != "" {
- buf.astPrintf(node, " algorithm = %s", node.Algorithm)
- }
- if node.Definer != "" {
- buf.astPrintf(node, " definer = %s", node.Definer)
- }
- if node.Security != "" {
- buf.astPrintf(node, " sql security %s", node.Security)
- }
- buf.astPrintf(node, " view %v", node.ViewName)
- buf.astPrintf(node, "%v as %v", node.Columns, node.Select)
- if node.CheckOption != "" {
- buf.astPrintf(node, " with %s check option", node.CheckOption)
- }
-}
-
-// Format formats the node.
-func (node *DropTable) Format(buf *TrackedBuffer) {
- exists := ""
- if node.IfExists {
- exists = " if exists"
- }
- buf.astPrintf(node, "drop table%s %v", exists, node.FromTables)
-}
-
-// Format formats the node.
-func (node *DropView) Format(buf *TrackedBuffer) {
- exists := ""
- if node.IfExists {
- exists = " if exists"
- }
- buf.astPrintf(node, "drop view%s %v", exists, node.FromTables)
-}
-
-// Format formats the AlterTable node.
-func (node *AlterTable) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "alter table %v", node.Table)
- prefix := ""
- for i, option := range node.AlterOptions {
- if i != 0 {
- buf.WriteString(",")
- }
- buf.astPrintf(node, " %v", option)
- if node.PartitionSpec != nil && node.PartitionSpec.Action != RemoveAction {
- prefix = ","
- }
- }
- if node.PartitionSpec != nil {
- buf.astPrintf(node, "%s %v", prefix, node.PartitionSpec)
- }
-}
-
-// Format formats the node.
-func (node *AddConstraintDefinition) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "add %v", node.ConstraintDefinition)
-}
-
-// Format formats the node.
-func (node *AddIndexDefinition) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "add %v", node.IndexDefinition)
-}
-
-// Format formats the node.
-func (node *AddColumns) Format(buf *TrackedBuffer) {
-
- if len(node.Columns) == 1 {
- buf.astPrintf(node, "add column %v", node.Columns[0])
- if node.First != nil {
- buf.astPrintf(node, " first %v", node.First)
- }
- if node.After != nil {
- buf.astPrintf(node, " after %v", node.After)
- }
- } else {
- for i, col := range node.Columns {
- if i == 0 {
- buf.astPrintf(node, "add column (%v", col)
- } else {
- buf.astPrintf(node, ", %v", col)
- }
- }
- buf.WriteString(")")
- }
-}
-
-// Format formats the node.
-func (node AlgorithmValue) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "algorithm = %s", string(node))
-}
-
-// Format formats the node
-func (node *AlterColumn) Format(buf *TrackedBuffer) {
- if node.DropDefault {
- buf.astPrintf(node, "alter column %v drop default", node.Column)
- } else {
- buf.astPrintf(node, "alter column %v set default", node.Column)
- buf.astPrintf(node, " %v", node.DefaultVal)
- }
-}
-
-// Format formats the node
-func (node *ChangeColumn) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "change column %v %v", node.OldColumn, node.NewColDefinition)
- if node.First != nil {
- buf.astPrintf(node, " first %v", node.First)
- }
- if node.After != nil {
- buf.astPrintf(node, " after %v", node.After)
- }
-}
-
-// Format formats the node
-func (node *ModifyColumn) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "modify column %v", node.NewColDefinition)
- if node.First != nil {
- buf.astPrintf(node, " first %v", node.First)
- }
- if node.After != nil {
- buf.astPrintf(node, " after %v", node.After)
- }
-}
-
-// Format formats the node
-func (node *AlterCharset) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "convert to character set %s", node.CharacterSet)
- if node.Collate != "" {
- buf.astPrintf(node, " collate %s", node.Collate)
- }
-}
-
-// Format formats the node
-func (node *KeyState) Format(buf *TrackedBuffer) {
- if node.Enable {
- buf.WriteString("enable keys")
- } else {
- buf.WriteString("disable keys")
- }
-
-}
-
-// Format formats the node
-func (node *TablespaceOperation) Format(buf *TrackedBuffer) {
- if node.Import {
- buf.WriteString("import tablespace")
- } else {
- buf.WriteString("discard tablespace")
- }
-}
-
-// Format formats the node
-func (node *DropColumn) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "drop column %v", node.Name)
-}
-
-// Format formats the node
-func (node *DropKey) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "drop %s", node.Type.ToString())
- if node.Name != "" {
- buf.astPrintf(node, " %s", node.Name)
- }
-}
-
-// Format formats the node
-func (node *Force) Format(buf *TrackedBuffer) {
- buf.WriteString("force")
-}
-
-// Format formats the node
-func (node *LockOption) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "lock %s", node.Type.ToString())
-}
-
-// Format formats the node
-func (node *OrderByOption) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "order by ")
- prefix := ""
- for _, n := range node.Cols {
- buf.astPrintf(node, "%s%v", prefix, n)
- prefix = ", "
- }
-}
-
-// Format formats the node
-func (node *RenameTable) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "rename %v", node.Table)
-}
-
-// Format formats the node
-func (node *RenameIndex) Format(buf *TrackedBuffer) {
- buf.astPrintf(node, "rename index %s to %s", node.OldName, node.NewName)
-}
-
-// Format formats the node
-func (node *Validation) Format(buf *TrackedBuffer) {
- if node.With {
- buf.WriteString("with validation")
- } else {
- buf.WriteString("without validation")
- }
-}
-
-// Format formats the node
-func (node TableOptions) Format(buf *TrackedBuffer) {
- for i, option := range node {
- if i != 0 {
- buf.WriteString(" ")
- }
- buf.astPrintf(node, "%s", option.Name)
- if option.String != "" {
- buf.astPrintf(node, " %s", option.String)
- } else if option.Value != nil {
- buf.astPrintf(node, " %v", option.Value)
- } else {
- buf.astPrintf(node, " (%v)", option.Tables)
- }
- }
-}
diff --git a/go/vt/sqlparser/ast_clone.go b/go/vt/sqlparser/ast_clone.go
new file mode 100644
index 00000000000..44db68253c7
--- /dev/null
+++ b/go/vt/sqlparser/ast_clone.go
@@ -0,0 +1,2507 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+// Code generated by ASTHelperGen. DO NOT EDIT.
+
+package sqlparser
+
+// CloneSQLNode creates a deep clone of the input.
+func CloneSQLNode(in SQLNode) SQLNode {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case AccessMode:
+ return in
+ case *AddColumns:
+ return CloneRefOfAddColumns(in)
+ case *AddConstraintDefinition:
+ return CloneRefOfAddConstraintDefinition(in)
+ case *AddIndexDefinition:
+ return CloneRefOfAddIndexDefinition(in)
+ case AlgorithmValue:
+ return in
+ case *AliasedExpr:
+ return CloneRefOfAliasedExpr(in)
+ case *AliasedTableExpr:
+ return CloneRefOfAliasedTableExpr(in)
+ case *AlterCharset:
+ return CloneRefOfAlterCharset(in)
+ case *AlterColumn:
+ return CloneRefOfAlterColumn(in)
+ case *AlterDatabase:
+ return CloneRefOfAlterDatabase(in)
+ case *AlterMigration:
+ return CloneRefOfAlterMigration(in)
+ case *AlterTable:
+ return CloneRefOfAlterTable(in)
+ case *AlterView:
+ return CloneRefOfAlterView(in)
+ case *AlterVschema:
+ return CloneRefOfAlterVschema(in)
+ case *AndExpr:
+ return CloneRefOfAndExpr(in)
+ case Argument:
+ return in
+ case *AutoIncSpec:
+ return CloneRefOfAutoIncSpec(in)
+ case *Begin:
+ return CloneRefOfBegin(in)
+ case *BinaryExpr:
+ return CloneRefOfBinaryExpr(in)
+ case BoolVal:
+ return in
+ case *CallProc:
+ return CloneRefOfCallProc(in)
+ case *CaseExpr:
+ return CloneRefOfCaseExpr(in)
+ case *ChangeColumn:
+ return CloneRefOfChangeColumn(in)
+ case *CheckConstraintDefinition:
+ return CloneRefOfCheckConstraintDefinition(in)
+ case ColIdent:
+ return CloneColIdent(in)
+ case *ColName:
+ return CloneRefOfColName(in)
+ case *CollateExpr:
+ return CloneRefOfCollateExpr(in)
+ case *ColumnDefinition:
+ return CloneRefOfColumnDefinition(in)
+ case *ColumnType:
+ return CloneRefOfColumnType(in)
+ case Columns:
+ return CloneColumns(in)
+ case Comments:
+ return CloneComments(in)
+ case *Commit:
+ return CloneRefOfCommit(in)
+ case *ComparisonExpr:
+ return CloneRefOfComparisonExpr(in)
+ case *ConstraintDefinition:
+ return CloneRefOfConstraintDefinition(in)
+ case *ConvertExpr:
+ return CloneRefOfConvertExpr(in)
+ case *ConvertType:
+ return CloneRefOfConvertType(in)
+ case *ConvertUsingExpr:
+ return CloneRefOfConvertUsingExpr(in)
+ case *CreateDatabase:
+ return CloneRefOfCreateDatabase(in)
+ case *CreateTable:
+ return CloneRefOfCreateTable(in)
+ case *CreateView:
+ return CloneRefOfCreateView(in)
+ case *CurTimeFuncExpr:
+ return CloneRefOfCurTimeFuncExpr(in)
+ case *Default:
+ return CloneRefOfDefault(in)
+ case *Delete:
+ return CloneRefOfDelete(in)
+ case *DerivedTable:
+ return CloneRefOfDerivedTable(in)
+ case *DropColumn:
+ return CloneRefOfDropColumn(in)
+ case *DropDatabase:
+ return CloneRefOfDropDatabase(in)
+ case *DropKey:
+ return CloneRefOfDropKey(in)
+ case *DropTable:
+ return CloneRefOfDropTable(in)
+ case *DropView:
+ return CloneRefOfDropView(in)
+ case *ExistsExpr:
+ return CloneRefOfExistsExpr(in)
+ case *ExplainStmt:
+ return CloneRefOfExplainStmt(in)
+ case *ExplainTab:
+ return CloneRefOfExplainTab(in)
+ case Exprs:
+ return CloneExprs(in)
+ case *Flush:
+ return CloneRefOfFlush(in)
+ case *Force:
+ return CloneRefOfForce(in)
+ case *ForeignKeyDefinition:
+ return CloneRefOfForeignKeyDefinition(in)
+ case *FuncExpr:
+ return CloneRefOfFuncExpr(in)
+ case GroupBy:
+ return CloneGroupBy(in)
+ case *GroupConcatExpr:
+ return CloneRefOfGroupConcatExpr(in)
+ case *IndexDefinition:
+ return CloneRefOfIndexDefinition(in)
+ case *IndexHints:
+ return CloneRefOfIndexHints(in)
+ case *IndexInfo:
+ return CloneRefOfIndexInfo(in)
+ case *Insert:
+ return CloneRefOfInsert(in)
+ case *IntervalExpr:
+ return CloneRefOfIntervalExpr(in)
+ case *IsExpr:
+ return CloneRefOfIsExpr(in)
+ case IsolationLevel:
+ return in
+ case JoinCondition:
+ return CloneJoinCondition(in)
+ case *JoinTableExpr:
+ return CloneRefOfJoinTableExpr(in)
+ case *KeyState:
+ return CloneRefOfKeyState(in)
+ case *Limit:
+ return CloneRefOfLimit(in)
+ case ListArg:
+ return CloneListArg(in)
+ case *Literal:
+ return CloneRefOfLiteral(in)
+ case *Load:
+ return CloneRefOfLoad(in)
+ case *LockOption:
+ return CloneRefOfLockOption(in)
+ case *LockTables:
+ return CloneRefOfLockTables(in)
+ case *MatchExpr:
+ return CloneRefOfMatchExpr(in)
+ case *ModifyColumn:
+ return CloneRefOfModifyColumn(in)
+ case *Nextval:
+ return CloneRefOfNextval(in)
+ case *NotExpr:
+ return CloneRefOfNotExpr(in)
+ case *NullVal:
+ return CloneRefOfNullVal(in)
+ case OnDup:
+ return CloneOnDup(in)
+ case *OptLike:
+ return CloneRefOfOptLike(in)
+ case *OrExpr:
+ return CloneRefOfOrExpr(in)
+ case *Order:
+ return CloneRefOfOrder(in)
+ case OrderBy:
+ return CloneOrderBy(in)
+ case *OrderByOption:
+ return CloneRefOfOrderByOption(in)
+ case *OtherAdmin:
+ return CloneRefOfOtherAdmin(in)
+ case *OtherRead:
+ return CloneRefOfOtherRead(in)
+ case *ParenSelect:
+ return CloneRefOfParenSelect(in)
+ case *ParenTableExpr:
+ return CloneRefOfParenTableExpr(in)
+ case *PartitionDefinition:
+ return CloneRefOfPartitionDefinition(in)
+ case *PartitionSpec:
+ return CloneRefOfPartitionSpec(in)
+ case Partitions:
+ return ClonePartitions(in)
+ case *RangeCond:
+ return CloneRefOfRangeCond(in)
+ case ReferenceAction:
+ return in
+ case *Release:
+ return CloneRefOfRelease(in)
+ case *RenameIndex:
+ return CloneRefOfRenameIndex(in)
+ case *RenameTable:
+ return CloneRefOfRenameTable(in)
+ case *RenameTableName:
+ return CloneRefOfRenameTableName(in)
+ case *RevertMigration:
+ return CloneRefOfRevertMigration(in)
+ case *Rollback:
+ return CloneRefOfRollback(in)
+ case *SRollback:
+ return CloneRefOfSRollback(in)
+ case *Savepoint:
+ return CloneRefOfSavepoint(in)
+ case *Select:
+ return CloneRefOfSelect(in)
+ case SelectExprs:
+ return CloneSelectExprs(in)
+ case *SelectInto:
+ return CloneRefOfSelectInto(in)
+ case *Set:
+ return CloneRefOfSet(in)
+ case *SetExpr:
+ return CloneRefOfSetExpr(in)
+ case SetExprs:
+ return CloneSetExprs(in)
+ case *SetTransaction:
+ return CloneRefOfSetTransaction(in)
+ case *Show:
+ return CloneRefOfShow(in)
+ case *ShowBasic:
+ return CloneRefOfShowBasic(in)
+ case *ShowCreate:
+ return CloneRefOfShowCreate(in)
+ case *ShowFilter:
+ return CloneRefOfShowFilter(in)
+ case *ShowLegacy:
+ return CloneRefOfShowLegacy(in)
+ case *StarExpr:
+ return CloneRefOfStarExpr(in)
+ case *Stream:
+ return CloneRefOfStream(in)
+ case *Subquery:
+ return CloneRefOfSubquery(in)
+ case *SubstrExpr:
+ return CloneRefOfSubstrExpr(in)
+ case TableExprs:
+ return CloneTableExprs(in)
+ case TableIdent:
+ return CloneTableIdent(in)
+ case TableName:
+ return CloneTableName(in)
+ case TableNames:
+ return CloneTableNames(in)
+ case TableOptions:
+ return CloneTableOptions(in)
+ case *TableSpec:
+ return CloneRefOfTableSpec(in)
+ case *TablespaceOperation:
+ return CloneRefOfTablespaceOperation(in)
+ case *TimestampFuncExpr:
+ return CloneRefOfTimestampFuncExpr(in)
+ case *TruncateTable:
+ return CloneRefOfTruncateTable(in)
+ case *UnaryExpr:
+ return CloneRefOfUnaryExpr(in)
+ case *Union:
+ return CloneRefOfUnion(in)
+ case *UnionSelect:
+ return CloneRefOfUnionSelect(in)
+ case *UnlockTables:
+ return CloneRefOfUnlockTables(in)
+ case *Update:
+ return CloneRefOfUpdate(in)
+ case *UpdateExpr:
+ return CloneRefOfUpdateExpr(in)
+ case UpdateExprs:
+ return CloneUpdateExprs(in)
+ case *Use:
+ return CloneRefOfUse(in)
+ case *VStream:
+ return CloneRefOfVStream(in)
+ case ValTuple:
+ return CloneValTuple(in)
+ case *Validation:
+ return CloneRefOfValidation(in)
+ case Values:
+ return CloneValues(in)
+ case *ValuesFuncExpr:
+ return CloneRefOfValuesFuncExpr(in)
+ case VindexParam:
+ return CloneVindexParam(in)
+ case *VindexSpec:
+ return CloneRefOfVindexSpec(in)
+ case *When:
+ return CloneRefOfWhen(in)
+ case *Where:
+ return CloneRefOfWhere(in)
+ case *XorExpr:
+ return CloneRefOfXorExpr(in)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+
+// CloneRefOfAddColumns creates a deep clone of the input.
+func CloneRefOfAddColumns(n *AddColumns) *AddColumns {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Columns = CloneSliceOfRefOfColumnDefinition(n.Columns)
+ out.First = CloneRefOfColName(n.First)
+ out.After = CloneRefOfColName(n.After)
+ return &out
+}
+
+// CloneRefOfAddConstraintDefinition creates a deep clone of the input.
+func CloneRefOfAddConstraintDefinition(n *AddConstraintDefinition) *AddConstraintDefinition {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.ConstraintDefinition = CloneRefOfConstraintDefinition(n.ConstraintDefinition)
+ return &out
+}
+
+// CloneRefOfAddIndexDefinition creates a deep clone of the input.
+func CloneRefOfAddIndexDefinition(n *AddIndexDefinition) *AddIndexDefinition {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.IndexDefinition = CloneRefOfIndexDefinition(n.IndexDefinition)
+ return &out
+}
+
+// CloneRefOfAliasedExpr creates a deep clone of the input.
+func CloneRefOfAliasedExpr(n *AliasedExpr) *AliasedExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Expr = CloneExpr(n.Expr)
+ out.As = CloneColIdent(n.As)
+ return &out
+}
+
+// CloneRefOfAliasedTableExpr creates a deep clone of the input.
+func CloneRefOfAliasedTableExpr(n *AliasedTableExpr) *AliasedTableExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Expr = CloneSimpleTableExpr(n.Expr)
+ out.Partitions = ClonePartitions(n.Partitions)
+ out.As = CloneTableIdent(n.As)
+ out.Hints = CloneRefOfIndexHints(n.Hints)
+ return &out
+}
+
+// CloneRefOfAlterCharset creates a deep clone of the input.
+func CloneRefOfAlterCharset(n *AlterCharset) *AlterCharset {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ return &out
+}
+
+// CloneRefOfAlterColumn creates a deep clone of the input.
+func CloneRefOfAlterColumn(n *AlterColumn) *AlterColumn {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Column = CloneRefOfColName(n.Column)
+ out.DefaultVal = CloneExpr(n.DefaultVal)
+ return &out
+}
+
+// CloneRefOfAlterDatabase creates a deep clone of the input.
+func CloneRefOfAlterDatabase(n *AlterDatabase) *AlterDatabase {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.DBName = CloneTableIdent(n.DBName)
+ out.AlterOptions = CloneSliceOfCollateAndCharset(n.AlterOptions)
+ return &out
+}
+
+// CloneRefOfAlterMigration creates a deep clone of the input.
+func CloneRefOfAlterMigration(n *AlterMigration) *AlterMigration {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ return &out
+}
+
+// CloneRefOfAlterTable creates a deep clone of the input.
+func CloneRefOfAlterTable(n *AlterTable) *AlterTable {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Table = CloneTableName(n.Table)
+ out.AlterOptions = CloneSliceOfAlterOption(n.AlterOptions)
+ out.PartitionSpec = CloneRefOfPartitionSpec(n.PartitionSpec)
+ return &out
+}
+
+// CloneRefOfAlterView creates a deep clone of the input.
+func CloneRefOfAlterView(n *AlterView) *AlterView {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.ViewName = CloneTableName(n.ViewName)
+ out.Columns = CloneColumns(n.Columns)
+ out.Select = CloneSelectStatement(n.Select)
+ return &out
+}
+
+// CloneRefOfAlterVschema creates a deep clone of the input.
+func CloneRefOfAlterVschema(n *AlterVschema) *AlterVschema {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Table = CloneTableName(n.Table)
+ out.VindexSpec = CloneRefOfVindexSpec(n.VindexSpec)
+ out.VindexCols = CloneSliceOfColIdent(n.VindexCols)
+ out.AutoIncSpec = CloneRefOfAutoIncSpec(n.AutoIncSpec)
+ return &out
+}
+
+// CloneRefOfAndExpr creates a deep clone of the input.
+func CloneRefOfAndExpr(n *AndExpr) *AndExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Left = CloneExpr(n.Left)
+ out.Right = CloneExpr(n.Right)
+ return &out
+}
+
+// CloneRefOfAutoIncSpec creates a deep clone of the input.
+func CloneRefOfAutoIncSpec(n *AutoIncSpec) *AutoIncSpec {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Column = CloneColIdent(n.Column)
+ out.Sequence = CloneTableName(n.Sequence)
+ return &out
+}
+
+// CloneRefOfBegin creates a deep clone of the input.
+func CloneRefOfBegin(n *Begin) *Begin {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ return &out
+}
+
+// CloneRefOfBinaryExpr creates a deep clone of the input.
+func CloneRefOfBinaryExpr(n *BinaryExpr) *BinaryExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Left = CloneExpr(n.Left)
+ out.Right = CloneExpr(n.Right)
+ return &out
+}
+
+// CloneRefOfCallProc creates a deep clone of the input.
+func CloneRefOfCallProc(n *CallProc) *CallProc {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Name = CloneTableName(n.Name)
+ out.Params = CloneExprs(n.Params)
+ return &out
+}
+
+// CloneRefOfCaseExpr creates a deep clone of the input.
+func CloneRefOfCaseExpr(n *CaseExpr) *CaseExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Expr = CloneExpr(n.Expr)
+ out.Whens = CloneSliceOfRefOfWhen(n.Whens)
+ out.Else = CloneExpr(n.Else)
+ return &out
+}
+
+// CloneRefOfChangeColumn creates a deep clone of the input.
+func CloneRefOfChangeColumn(n *ChangeColumn) *ChangeColumn {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.OldColumn = CloneRefOfColName(n.OldColumn)
+ out.NewColDefinition = CloneRefOfColumnDefinition(n.NewColDefinition)
+ out.First = CloneRefOfColName(n.First)
+ out.After = CloneRefOfColName(n.After)
+ return &out
+}
+
+// CloneRefOfCheckConstraintDefinition creates a deep clone of the input.
+func CloneRefOfCheckConstraintDefinition(n *CheckConstraintDefinition) *CheckConstraintDefinition {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Expr = CloneExpr(n.Expr)
+ return &out
+}
+
+// CloneColIdent creates a deep clone of the input.
+func CloneColIdent(n ColIdent) ColIdent {
+ return *CloneRefOfColIdent(&n)
+}
+
+// CloneRefOfColName creates a deep clone of the input.
+func CloneRefOfColName(n *ColName) *ColName {
+ return n
+}
+
+// CloneRefOfCollateExpr creates a deep clone of the input.
+func CloneRefOfCollateExpr(n *CollateExpr) *CollateExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Expr = CloneExpr(n.Expr)
+ return &out
+}
+
+// CloneRefOfColumnDefinition creates a deep clone of the input.
+func CloneRefOfColumnDefinition(n *ColumnDefinition) *ColumnDefinition {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Name = CloneColIdent(n.Name)
+ out.Type = CloneColumnType(n.Type)
+ return &out
+}
+
+// CloneRefOfColumnType creates a deep clone of the input.
+func CloneRefOfColumnType(n *ColumnType) *ColumnType {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Options = CloneRefOfColumnTypeOptions(n.Options)
+ out.Length = CloneRefOfLiteral(n.Length)
+ out.Scale = CloneRefOfLiteral(n.Scale)
+ out.EnumValues = CloneSliceOfString(n.EnumValues)
+ return &out
+}
+
+// CloneColumns creates a deep clone of the input.
+func CloneColumns(n Columns) Columns {
+ res := make(Columns, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneColIdent(x))
+ }
+ return res
+}
+
+// CloneComments creates a deep clone of the input.
+func CloneComments(n Comments) Comments {
+ res := make(Comments, 0, len(n))
+ copy(res, n)
+ return res
+}
+
+// CloneRefOfCommit creates a deep clone of the input.
+func CloneRefOfCommit(n *Commit) *Commit {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ return &out
+}
+
+// CloneRefOfComparisonExpr creates a deep clone of the input.
+func CloneRefOfComparisonExpr(n *ComparisonExpr) *ComparisonExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Left = CloneExpr(n.Left)
+ out.Right = CloneExpr(n.Right)
+ out.Escape = CloneExpr(n.Escape)
+ return &out
+}
+
+// CloneRefOfConstraintDefinition creates a deep clone of the input.
+func CloneRefOfConstraintDefinition(n *ConstraintDefinition) *ConstraintDefinition {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Name = CloneColIdent(n.Name)
+ out.Details = CloneConstraintInfo(n.Details)
+ return &out
+}
+
+// CloneRefOfConvertExpr creates a deep clone of the input.
+func CloneRefOfConvertExpr(n *ConvertExpr) *ConvertExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Expr = CloneExpr(n.Expr)
+ out.Type = CloneRefOfConvertType(n.Type)
+ return &out
+}
+
+// CloneRefOfConvertType creates a deep clone of the input.
+func CloneRefOfConvertType(n *ConvertType) *ConvertType {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Length = CloneRefOfLiteral(n.Length)
+ out.Scale = CloneRefOfLiteral(n.Scale)
+ return &out
+}
+
+// CloneRefOfConvertUsingExpr creates a deep clone of the input.
+func CloneRefOfConvertUsingExpr(n *ConvertUsingExpr) *ConvertUsingExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Expr = CloneExpr(n.Expr)
+ return &out
+}
+
+// CloneRefOfCreateDatabase creates a deep clone of the input.
+func CloneRefOfCreateDatabase(n *CreateDatabase) *CreateDatabase {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Comments = CloneComments(n.Comments)
+ out.DBName = CloneTableIdent(n.DBName)
+ out.CreateOptions = CloneSliceOfCollateAndCharset(n.CreateOptions)
+ return &out
+}
+
+// CloneRefOfCreateTable creates a deep clone of the input.
+func CloneRefOfCreateTable(n *CreateTable) *CreateTable {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Table = CloneTableName(n.Table)
+ out.TableSpec = CloneRefOfTableSpec(n.TableSpec)
+ out.OptLike = CloneRefOfOptLike(n.OptLike)
+ return &out
+}
+
+// CloneRefOfCreateView creates a deep clone of the input.
+func CloneRefOfCreateView(n *CreateView) *CreateView {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.ViewName = CloneTableName(n.ViewName)
+ out.Columns = CloneColumns(n.Columns)
+ out.Select = CloneSelectStatement(n.Select)
+ return &out
+}
+
+// CloneRefOfCurTimeFuncExpr creates a deep clone of the input.
+func CloneRefOfCurTimeFuncExpr(n *CurTimeFuncExpr) *CurTimeFuncExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Name = CloneColIdent(n.Name)
+ out.Fsp = CloneExpr(n.Fsp)
+ return &out
+}
+
+// CloneRefOfDefault creates a deep clone of the input.
+func CloneRefOfDefault(n *Default) *Default {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ return &out
+}
+
+// CloneRefOfDelete creates a deep clone of the input.
+func CloneRefOfDelete(n *Delete) *Delete {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Comments = CloneComments(n.Comments)
+ out.Targets = CloneTableNames(n.Targets)
+ out.TableExprs = CloneTableExprs(n.TableExprs)
+ out.Partitions = ClonePartitions(n.Partitions)
+ out.Where = CloneRefOfWhere(n.Where)
+ out.OrderBy = CloneOrderBy(n.OrderBy)
+ out.Limit = CloneRefOfLimit(n.Limit)
+ return &out
+}
+
+// CloneRefOfDerivedTable creates a deep clone of the input.
+func CloneRefOfDerivedTable(n *DerivedTable) *DerivedTable {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Select = CloneSelectStatement(n.Select)
+ return &out
+}
+
+// CloneRefOfDropColumn creates a deep clone of the input.
+func CloneRefOfDropColumn(n *DropColumn) *DropColumn {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Name = CloneRefOfColName(n.Name)
+ return &out
+}
+
+// CloneRefOfDropDatabase creates a deep clone of the input.
+func CloneRefOfDropDatabase(n *DropDatabase) *DropDatabase {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Comments = CloneComments(n.Comments)
+ out.DBName = CloneTableIdent(n.DBName)
+ return &out
+}
+
+// CloneRefOfDropKey creates a deep clone of the input.
+func CloneRefOfDropKey(n *DropKey) *DropKey {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Name = CloneColIdent(n.Name)
+ return &out
+}
+
+// CloneRefOfDropTable creates a deep clone of the input.
+func CloneRefOfDropTable(n *DropTable) *DropTable {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.FromTables = CloneTableNames(n.FromTables)
+ return &out
+}
+
+// CloneRefOfDropView creates a deep clone of the input.
+func CloneRefOfDropView(n *DropView) *DropView {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.FromTables = CloneTableNames(n.FromTables)
+ return &out
+}
+
+// CloneRefOfExistsExpr creates a deep clone of the input.
+func CloneRefOfExistsExpr(n *ExistsExpr) *ExistsExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Subquery = CloneRefOfSubquery(n.Subquery)
+ return &out
+}
+
+// CloneRefOfExplainStmt creates a deep clone of the input.
+func CloneRefOfExplainStmt(n *ExplainStmt) *ExplainStmt {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Statement = CloneStatement(n.Statement)
+ return &out
+}
+
+// CloneRefOfExplainTab creates a deep clone of the input.
+func CloneRefOfExplainTab(n *ExplainTab) *ExplainTab {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Table = CloneTableName(n.Table)
+ return &out
+}
+
+// CloneExprs creates a deep clone of the input.
+func CloneExprs(n Exprs) Exprs {
+ res := make(Exprs, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneExpr(x))
+ }
+ return res
+}
+
+// CloneRefOfFlush creates a deep clone of the input.
+func CloneRefOfFlush(n *Flush) *Flush {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.FlushOptions = CloneSliceOfString(n.FlushOptions)
+ out.TableNames = CloneTableNames(n.TableNames)
+ return &out
+}
+
+// CloneRefOfForce creates a deep clone of the input.
+func CloneRefOfForce(n *Force) *Force {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ return &out
+}
+
+// CloneRefOfForeignKeyDefinition creates a deep clone of the input.
+func CloneRefOfForeignKeyDefinition(n *ForeignKeyDefinition) *ForeignKeyDefinition {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Source = CloneColumns(n.Source)
+ out.ReferencedTable = CloneTableName(n.ReferencedTable)
+ out.ReferencedColumns = CloneColumns(n.ReferencedColumns)
+ return &out
+}
+
+// CloneRefOfFuncExpr creates a deep clone of the input.
+func CloneRefOfFuncExpr(n *FuncExpr) *FuncExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Qualifier = CloneTableIdent(n.Qualifier)
+ out.Name = CloneColIdent(n.Name)
+ out.Exprs = CloneSelectExprs(n.Exprs)
+ return &out
+}
+
+// CloneGroupBy creates a deep clone of the input.
+func CloneGroupBy(n GroupBy) GroupBy {
+ res := make(GroupBy, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneExpr(x))
+ }
+ return res
+}
+
+// CloneRefOfGroupConcatExpr creates a deep clone of the input.
+func CloneRefOfGroupConcatExpr(n *GroupConcatExpr) *GroupConcatExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Exprs = CloneSelectExprs(n.Exprs)
+ out.OrderBy = CloneOrderBy(n.OrderBy)
+ out.Limit = CloneRefOfLimit(n.Limit)
+ return &out
+}
+
+// CloneRefOfIndexDefinition creates a deep clone of the input.
+func CloneRefOfIndexDefinition(n *IndexDefinition) *IndexDefinition {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Info = CloneRefOfIndexInfo(n.Info)
+ out.Columns = CloneSliceOfRefOfIndexColumn(n.Columns)
+ out.Options = CloneSliceOfRefOfIndexOption(n.Options)
+ return &out
+}
+
+// CloneRefOfIndexHints creates a deep clone of the input.
+func CloneRefOfIndexHints(n *IndexHints) *IndexHints {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Indexes = CloneSliceOfColIdent(n.Indexes)
+ return &out
+}
+
+// CloneRefOfIndexInfo creates a deep clone of the input.
+func CloneRefOfIndexInfo(n *IndexInfo) *IndexInfo {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Name = CloneColIdent(n.Name)
+ out.ConstraintName = CloneColIdent(n.ConstraintName)
+ return &out
+}
+
+// CloneRefOfInsert creates a deep clone of the input.
+func CloneRefOfInsert(n *Insert) *Insert {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Comments = CloneComments(n.Comments)
+ out.Table = CloneTableName(n.Table)
+ out.Partitions = ClonePartitions(n.Partitions)
+ out.Columns = CloneColumns(n.Columns)
+ out.Rows = CloneInsertRows(n.Rows)
+ out.OnDup = CloneOnDup(n.OnDup)
+ return &out
+}
+
+// CloneRefOfIntervalExpr creates a deep clone of the input.
+func CloneRefOfIntervalExpr(n *IntervalExpr) *IntervalExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Expr = CloneExpr(n.Expr)
+ return &out
+}
+
+// CloneRefOfIsExpr creates a deep clone of the input.
+func CloneRefOfIsExpr(n *IsExpr) *IsExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Expr = CloneExpr(n.Expr)
+ return &out
+}
+
+// CloneJoinCondition creates a deep clone of the input.
+func CloneJoinCondition(n JoinCondition) JoinCondition {
+ return *CloneRefOfJoinCondition(&n)
+}
+
+// CloneRefOfJoinTableExpr creates a deep clone of the input.
+func CloneRefOfJoinTableExpr(n *JoinTableExpr) *JoinTableExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.LeftExpr = CloneTableExpr(n.LeftExpr)
+ out.RightExpr = CloneTableExpr(n.RightExpr)
+ out.Condition = CloneJoinCondition(n.Condition)
+ return &out
+}
+
+// CloneRefOfKeyState creates a deep clone of the input.
+func CloneRefOfKeyState(n *KeyState) *KeyState {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ return &out
+}
+
+// CloneRefOfLimit creates a deep clone of the input.
+func CloneRefOfLimit(n *Limit) *Limit {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Offset = CloneExpr(n.Offset)
+ out.Rowcount = CloneExpr(n.Rowcount)
+ return &out
+}
+
+// CloneListArg creates a deep clone of the input.
+func CloneListArg(n ListArg) ListArg {
+ res := make(ListArg, 0, len(n))
+ copy(res, n)
+ return res
+}
+
+// CloneRefOfLiteral creates a deep clone of the input.
+func CloneRefOfLiteral(n *Literal) *Literal {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ return &out
+}
+
+// CloneRefOfLoad creates a deep clone of the input.
+func CloneRefOfLoad(n *Load) *Load {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ return &out
+}
+
+// CloneRefOfLockOption creates a deep clone of the input.
+func CloneRefOfLockOption(n *LockOption) *LockOption {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ return &out
+}
+
+// CloneRefOfLockTables creates a deep clone of the input.
+func CloneRefOfLockTables(n *LockTables) *LockTables {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Tables = CloneTableAndLockTypes(n.Tables)
+ return &out
+}
+
+// CloneRefOfMatchExpr creates a deep clone of the input.
+func CloneRefOfMatchExpr(n *MatchExpr) *MatchExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Columns = CloneSelectExprs(n.Columns)
+ out.Expr = CloneExpr(n.Expr)
+ return &out
+}
+
+// CloneRefOfModifyColumn creates a deep clone of the input.
+func CloneRefOfModifyColumn(n *ModifyColumn) *ModifyColumn {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.NewColDefinition = CloneRefOfColumnDefinition(n.NewColDefinition)
+ out.First = CloneRefOfColName(n.First)
+ out.After = CloneRefOfColName(n.After)
+ return &out
+}
+
+// CloneRefOfNextval creates a deep clone of the input.
+func CloneRefOfNextval(n *Nextval) *Nextval {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Expr = CloneExpr(n.Expr)
+ return &out
+}
+
+// CloneRefOfNotExpr creates a deep clone of the input.
+func CloneRefOfNotExpr(n *NotExpr) *NotExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Expr = CloneExpr(n.Expr)
+ return &out
+}
+
+// CloneRefOfNullVal creates a deep clone of the input.
+func CloneRefOfNullVal(n *NullVal) *NullVal {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ return &out
+}
+
+// CloneOnDup creates a deep clone of the input.
+func CloneOnDup(n OnDup) OnDup {
+ res := make(OnDup, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneRefOfUpdateExpr(x))
+ }
+ return res
+}
+
+// CloneRefOfOptLike creates a deep clone of the input.
+func CloneRefOfOptLike(n *OptLike) *OptLike {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.LikeTable = CloneTableName(n.LikeTable)
+ return &out
+}
+
+// CloneRefOfOrExpr creates a deep clone of the input.
+func CloneRefOfOrExpr(n *OrExpr) *OrExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Left = CloneExpr(n.Left)
+ out.Right = CloneExpr(n.Right)
+ return &out
+}
+
+// CloneRefOfOrder creates a deep clone of the input.
+func CloneRefOfOrder(n *Order) *Order {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Expr = CloneExpr(n.Expr)
+ return &out
+}
+
+// CloneOrderBy creates a deep clone of the input.
+func CloneOrderBy(n OrderBy) OrderBy {
+ res := make(OrderBy, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneRefOfOrder(x))
+ }
+ return res
+}
+
+// CloneRefOfOrderByOption creates a deep clone of the input.
+func CloneRefOfOrderByOption(n *OrderByOption) *OrderByOption {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Cols = CloneColumns(n.Cols)
+ return &out
+}
+
+// CloneRefOfOtherAdmin creates a deep clone of the input.
+func CloneRefOfOtherAdmin(n *OtherAdmin) *OtherAdmin {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ return &out
+}
+
+// CloneRefOfOtherRead creates a deep clone of the input.
+func CloneRefOfOtherRead(n *OtherRead) *OtherRead {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ return &out
+}
+
+// CloneRefOfParenSelect creates a deep clone of the input.
+func CloneRefOfParenSelect(n *ParenSelect) *ParenSelect {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Select = CloneSelectStatement(n.Select)
+ return &out
+}
+
+// CloneRefOfParenTableExpr creates a deep clone of the input.
+func CloneRefOfParenTableExpr(n *ParenTableExpr) *ParenTableExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Exprs = CloneTableExprs(n.Exprs)
+ return &out
+}
+
+// CloneRefOfPartitionDefinition creates a deep clone of the input.
+func CloneRefOfPartitionDefinition(n *PartitionDefinition) *PartitionDefinition {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Name = CloneColIdent(n.Name)
+ out.Limit = CloneExpr(n.Limit)
+ return &out
+}
+
+// CloneRefOfPartitionSpec creates a deep clone of the input.
+func CloneRefOfPartitionSpec(n *PartitionSpec) *PartitionSpec {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Names = ClonePartitions(n.Names)
+ out.Number = CloneRefOfLiteral(n.Number)
+ out.TableName = CloneTableName(n.TableName)
+ out.Definitions = CloneSliceOfRefOfPartitionDefinition(n.Definitions)
+ return &out
+}
+
+// ClonePartitions creates a deep clone of the input.
+func ClonePartitions(n Partitions) Partitions {
+ res := make(Partitions, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneColIdent(x))
+ }
+ return res
+}
+
+// CloneRefOfRangeCond creates a deep clone of the input.
+func CloneRefOfRangeCond(n *RangeCond) *RangeCond {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Left = CloneExpr(n.Left)
+ out.From = CloneExpr(n.From)
+ out.To = CloneExpr(n.To)
+ return &out
+}
+
+// CloneRefOfRelease creates a deep clone of the input.
+func CloneRefOfRelease(n *Release) *Release {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Name = CloneColIdent(n.Name)
+ return &out
+}
+
+// CloneRefOfRenameIndex creates a deep clone of the input.
+func CloneRefOfRenameIndex(n *RenameIndex) *RenameIndex {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.OldName = CloneColIdent(n.OldName)
+ out.NewName = CloneColIdent(n.NewName)
+ return &out
+}
+
+// CloneRefOfRenameTable creates a deep clone of the input.
+func CloneRefOfRenameTable(n *RenameTable) *RenameTable {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.TablePairs = CloneSliceOfRefOfRenameTablePair(n.TablePairs)
+ return &out
+}
+
+// CloneRefOfRenameTableName creates a deep clone of the input.
+func CloneRefOfRenameTableName(n *RenameTableName) *RenameTableName {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Table = CloneTableName(n.Table)
+ return &out
+}
+
+// CloneRefOfRevertMigration creates a deep clone of the input.
+func CloneRefOfRevertMigration(n *RevertMigration) *RevertMigration {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ return &out
+}
+
+// CloneRefOfRollback creates a deep clone of the input.
+func CloneRefOfRollback(n *Rollback) *Rollback {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ return &out
+}
+
+// CloneRefOfSRollback creates a deep clone of the input.
+func CloneRefOfSRollback(n *SRollback) *SRollback {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Name = CloneColIdent(n.Name)
+ return &out
+}
+
+// CloneRefOfSavepoint creates a deep clone of the input.
+func CloneRefOfSavepoint(n *Savepoint) *Savepoint {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Name = CloneColIdent(n.Name)
+ return &out
+}
+
+// CloneRefOfSelect creates a deep clone of the input.
+func CloneRefOfSelect(n *Select) *Select {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Cache = CloneRefOfBool(n.Cache)
+ out.Comments = CloneComments(n.Comments)
+ out.SelectExprs = CloneSelectExprs(n.SelectExprs)
+ out.From = CloneTableExprs(n.From)
+ out.Where = CloneRefOfWhere(n.Where)
+ out.GroupBy = CloneGroupBy(n.GroupBy)
+ out.Having = CloneRefOfWhere(n.Having)
+ out.OrderBy = CloneOrderBy(n.OrderBy)
+ out.Limit = CloneRefOfLimit(n.Limit)
+ out.Into = CloneRefOfSelectInto(n.Into)
+ return &out
+}
+
+// CloneSelectExprs creates a deep clone of the input.
+func CloneSelectExprs(n SelectExprs) SelectExprs {
+ res := make(SelectExprs, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneSelectExpr(x))
+ }
+ return res
+}
+
+// CloneRefOfSelectInto creates a deep clone of the input.
+func CloneRefOfSelectInto(n *SelectInto) *SelectInto {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ return &out
+}
+
+// CloneRefOfSet creates a deep clone of the input.
+func CloneRefOfSet(n *Set) *Set {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Comments = CloneComments(n.Comments)
+ out.Exprs = CloneSetExprs(n.Exprs)
+ return &out
+}
+
+// CloneRefOfSetExpr creates a deep clone of the input.
+func CloneRefOfSetExpr(n *SetExpr) *SetExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Name = CloneColIdent(n.Name)
+ out.Expr = CloneExpr(n.Expr)
+ return &out
+}
+
+// CloneSetExprs creates a deep clone of the input.
+func CloneSetExprs(n SetExprs) SetExprs {
+ res := make(SetExprs, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneRefOfSetExpr(x))
+ }
+ return res
+}
+
+// CloneRefOfSetTransaction creates a deep clone of the input.
+func CloneRefOfSetTransaction(n *SetTransaction) *SetTransaction {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.SQLNode = CloneSQLNode(n.SQLNode)
+ out.Comments = CloneComments(n.Comments)
+ out.Characteristics = CloneSliceOfCharacteristic(n.Characteristics)
+ return &out
+}
+
+// CloneRefOfShow creates a deep clone of the input.
+func CloneRefOfShow(n *Show) *Show {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Internal = CloneShowInternal(n.Internal)
+ return &out
+}
+
+// CloneRefOfShowBasic creates a deep clone of the input.
+func CloneRefOfShowBasic(n *ShowBasic) *ShowBasic {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Tbl = CloneTableName(n.Tbl)
+ out.DbName = CloneTableIdent(n.DbName)
+ out.Filter = CloneRefOfShowFilter(n.Filter)
+ return &out
+}
+
+// CloneRefOfShowCreate creates a deep clone of the input.
+func CloneRefOfShowCreate(n *ShowCreate) *ShowCreate {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Op = CloneTableName(n.Op)
+ return &out
+}
+
+// CloneRefOfShowFilter creates a deep clone of the input.
+func CloneRefOfShowFilter(n *ShowFilter) *ShowFilter {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Filter = CloneExpr(n.Filter)
+ return &out
+}
+
+// CloneRefOfShowLegacy creates a deep clone of the input.
+func CloneRefOfShowLegacy(n *ShowLegacy) *ShowLegacy {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.OnTable = CloneTableName(n.OnTable)
+ out.Table = CloneTableName(n.Table)
+ out.ShowTablesOpt = CloneRefOfShowTablesOpt(n.ShowTablesOpt)
+ out.ShowCollationFilterOpt = CloneExpr(n.ShowCollationFilterOpt)
+ return &out
+}
+
+// CloneRefOfStarExpr creates a deep clone of the input.
+func CloneRefOfStarExpr(n *StarExpr) *StarExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.TableName = CloneTableName(n.TableName)
+ return &out
+}
+
+// CloneRefOfStream creates a deep clone of the input.
+func CloneRefOfStream(n *Stream) *Stream {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Comments = CloneComments(n.Comments)
+ out.SelectExpr = CloneSelectExpr(n.SelectExpr)
+ out.Table = CloneTableName(n.Table)
+ return &out
+}
+
+// CloneRefOfSubquery creates a deep clone of the input.
+func CloneRefOfSubquery(n *Subquery) *Subquery {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Select = CloneSelectStatement(n.Select)
+ return &out
+}
+
+// CloneRefOfSubstrExpr creates a deep clone of the input.
+func CloneRefOfSubstrExpr(n *SubstrExpr) *SubstrExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Name = CloneRefOfColName(n.Name)
+ out.StrVal = CloneRefOfLiteral(n.StrVal)
+ out.From = CloneExpr(n.From)
+ out.To = CloneExpr(n.To)
+ return &out
+}
+
+// CloneTableExprs creates a deep clone of the input.
+func CloneTableExprs(n TableExprs) TableExprs {
+ res := make(TableExprs, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneTableExpr(x))
+ }
+ return res
+}
+
+// CloneTableIdent creates a deep clone of the input.
+func CloneTableIdent(n TableIdent) TableIdent {
+ return *CloneRefOfTableIdent(&n)
+}
+
+// CloneTableName creates a deep clone of the input.
+func CloneTableName(n TableName) TableName {
+ return *CloneRefOfTableName(&n)
+}
+
+// CloneTableNames creates a deep clone of the input.
+func CloneTableNames(n TableNames) TableNames {
+ res := make(TableNames, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneTableName(x))
+ }
+ return res
+}
+
+// CloneTableOptions creates a deep clone of the input.
+func CloneTableOptions(n TableOptions) TableOptions {
+ res := make(TableOptions, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneRefOfTableOption(x))
+ }
+ return res
+}
+
+// CloneRefOfTableSpec creates a deep clone of the input.
+func CloneRefOfTableSpec(n *TableSpec) *TableSpec {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Columns = CloneSliceOfRefOfColumnDefinition(n.Columns)
+ out.Indexes = CloneSliceOfRefOfIndexDefinition(n.Indexes)
+ out.Constraints = CloneSliceOfRefOfConstraintDefinition(n.Constraints)
+ out.Options = CloneTableOptions(n.Options)
+ return &out
+}
+
+// CloneRefOfTablespaceOperation creates a deep clone of the input.
+func CloneRefOfTablespaceOperation(n *TablespaceOperation) *TablespaceOperation {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ return &out
+}
+
+// CloneRefOfTimestampFuncExpr creates a deep clone of the input.
+func CloneRefOfTimestampFuncExpr(n *TimestampFuncExpr) *TimestampFuncExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Expr1 = CloneExpr(n.Expr1)
+ out.Expr2 = CloneExpr(n.Expr2)
+ return &out
+}
+
+// CloneRefOfTruncateTable creates a deep clone of the input.
+func CloneRefOfTruncateTable(n *TruncateTable) *TruncateTable {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Table = CloneTableName(n.Table)
+ return &out
+}
+
+// CloneRefOfUnaryExpr creates a deep clone of the input.
+func CloneRefOfUnaryExpr(n *UnaryExpr) *UnaryExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Expr = CloneExpr(n.Expr)
+ return &out
+}
+
+// CloneRefOfUnion creates a deep clone of the input.
+func CloneRefOfUnion(n *Union) *Union {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.FirstStatement = CloneSelectStatement(n.FirstStatement)
+ out.UnionSelects = CloneSliceOfRefOfUnionSelect(n.UnionSelects)
+ out.OrderBy = CloneOrderBy(n.OrderBy)
+ out.Limit = CloneRefOfLimit(n.Limit)
+ return &out
+}
+
+// CloneRefOfUnionSelect creates a deep clone of the input.
+func CloneRefOfUnionSelect(n *UnionSelect) *UnionSelect {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Statement = CloneSelectStatement(n.Statement)
+ return &out
+}
+
+// CloneRefOfUnlockTables creates a deep clone of the input.
+func CloneRefOfUnlockTables(n *UnlockTables) *UnlockTables {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ return &out
+}
+
+// CloneRefOfUpdate creates a deep clone of the input.
+func CloneRefOfUpdate(n *Update) *Update {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Comments = CloneComments(n.Comments)
+ out.TableExprs = CloneTableExprs(n.TableExprs)
+ out.Exprs = CloneUpdateExprs(n.Exprs)
+ out.Where = CloneRefOfWhere(n.Where)
+ out.OrderBy = CloneOrderBy(n.OrderBy)
+ out.Limit = CloneRefOfLimit(n.Limit)
+ return &out
+}
+
+// CloneRefOfUpdateExpr creates a deep clone of the input.
+func CloneRefOfUpdateExpr(n *UpdateExpr) *UpdateExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Name = CloneRefOfColName(n.Name)
+ out.Expr = CloneExpr(n.Expr)
+ return &out
+}
+
+// CloneUpdateExprs creates a deep clone of the input.
+func CloneUpdateExprs(n UpdateExprs) UpdateExprs {
+ res := make(UpdateExprs, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneRefOfUpdateExpr(x))
+ }
+ return res
+}
+
+// CloneRefOfUse creates a deep clone of the input.
+func CloneRefOfUse(n *Use) *Use {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.DBName = CloneTableIdent(n.DBName)
+ return &out
+}
+
+// CloneRefOfVStream creates a deep clone of the input.
+func CloneRefOfVStream(n *VStream) *VStream {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Comments = CloneComments(n.Comments)
+ out.SelectExpr = CloneSelectExpr(n.SelectExpr)
+ out.Table = CloneTableName(n.Table)
+ out.Where = CloneRefOfWhere(n.Where)
+ out.Limit = CloneRefOfLimit(n.Limit)
+ return &out
+}
+
+// CloneValTuple creates a deep clone of the input.
+func CloneValTuple(n ValTuple) ValTuple {
+ res := make(ValTuple, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneExpr(x))
+ }
+ return res
+}
+
+// CloneRefOfValidation creates a deep clone of the input.
+func CloneRefOfValidation(n *Validation) *Validation {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ return &out
+}
+
+// CloneValues creates a deep clone of the input.
+func CloneValues(n Values) Values {
+ res := make(Values, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneValTuple(x))
+ }
+ return res
+}
+
+// CloneRefOfValuesFuncExpr creates a deep clone of the input.
+func CloneRefOfValuesFuncExpr(n *ValuesFuncExpr) *ValuesFuncExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Name = CloneRefOfColName(n.Name)
+ return &out
+}
+
+// CloneVindexParam creates a deep clone of the input.
+func CloneVindexParam(n VindexParam) VindexParam {
+ return *CloneRefOfVindexParam(&n)
+}
+
+// CloneRefOfVindexSpec creates a deep clone of the input.
+func CloneRefOfVindexSpec(n *VindexSpec) *VindexSpec {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Name = CloneColIdent(n.Name)
+ out.Type = CloneColIdent(n.Type)
+ out.Params = CloneSliceOfVindexParam(n.Params)
+ return &out
+}
+
+// CloneRefOfWhen creates a deep clone of the input.
+func CloneRefOfWhen(n *When) *When {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Cond = CloneExpr(n.Cond)
+ out.Val = CloneExpr(n.Val)
+ return &out
+}
+
+// CloneRefOfWhere creates a deep clone of the input.
+func CloneRefOfWhere(n *Where) *Where {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Expr = CloneExpr(n.Expr)
+ return &out
+}
+
+// CloneRefOfXorExpr creates a deep clone of the input.
+func CloneRefOfXorExpr(n *XorExpr) *XorExpr {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Left = CloneExpr(n.Left)
+ out.Right = CloneExpr(n.Right)
+ return &out
+}
+
+// CloneAlterOption creates a deep clone of the input.
+func CloneAlterOption(in AlterOption) AlterOption {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *AddColumns:
+ return CloneRefOfAddColumns(in)
+ case *AddConstraintDefinition:
+ return CloneRefOfAddConstraintDefinition(in)
+ case *AddIndexDefinition:
+ return CloneRefOfAddIndexDefinition(in)
+ case AlgorithmValue:
+ return in
+ case *AlterCharset:
+ return CloneRefOfAlterCharset(in)
+ case *AlterColumn:
+ return CloneRefOfAlterColumn(in)
+ case *ChangeColumn:
+ return CloneRefOfChangeColumn(in)
+ case *DropColumn:
+ return CloneRefOfDropColumn(in)
+ case *DropKey:
+ return CloneRefOfDropKey(in)
+ case *Force:
+ return CloneRefOfForce(in)
+ case *KeyState:
+ return CloneRefOfKeyState(in)
+ case *LockOption:
+ return CloneRefOfLockOption(in)
+ case *ModifyColumn:
+ return CloneRefOfModifyColumn(in)
+ case *OrderByOption:
+ return CloneRefOfOrderByOption(in)
+ case *RenameIndex:
+ return CloneRefOfRenameIndex(in)
+ case *RenameTableName:
+ return CloneRefOfRenameTableName(in)
+ case TableOptions:
+ return CloneTableOptions(in)
+ case *TablespaceOperation:
+ return CloneRefOfTablespaceOperation(in)
+ case *Validation:
+ return CloneRefOfValidation(in)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+
+// CloneCharacteristic creates a deep clone of the input.
+func CloneCharacteristic(in Characteristic) Characteristic {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case AccessMode:
+ return in
+ case IsolationLevel:
+ return in
+ default:
+ // this should never happen
+ return nil
+ }
+}
+
+// CloneColTuple creates a deep clone of the input.
+func CloneColTuple(in ColTuple) ColTuple {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case ListArg:
+ return CloneListArg(in)
+ case *Subquery:
+ return CloneRefOfSubquery(in)
+ case ValTuple:
+ return CloneValTuple(in)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+
+// CloneConstraintInfo creates a deep clone of the input.
+func CloneConstraintInfo(in ConstraintInfo) ConstraintInfo {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *CheckConstraintDefinition:
+ return CloneRefOfCheckConstraintDefinition(in)
+ case *ForeignKeyDefinition:
+ return CloneRefOfForeignKeyDefinition(in)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+
+// CloneDBDDLStatement creates a deep clone of the input.
+func CloneDBDDLStatement(in DBDDLStatement) DBDDLStatement {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *AlterDatabase:
+ return CloneRefOfAlterDatabase(in)
+ case *CreateDatabase:
+ return CloneRefOfCreateDatabase(in)
+ case *DropDatabase:
+ return CloneRefOfDropDatabase(in)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+
+// CloneDDLStatement creates a deep clone of the input.
+func CloneDDLStatement(in DDLStatement) DDLStatement {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *AlterTable:
+ return CloneRefOfAlterTable(in)
+ case *AlterView:
+ return CloneRefOfAlterView(in)
+ case *CreateTable:
+ return CloneRefOfCreateTable(in)
+ case *CreateView:
+ return CloneRefOfCreateView(in)
+ case *DropTable:
+ return CloneRefOfDropTable(in)
+ case *DropView:
+ return CloneRefOfDropView(in)
+ case *RenameTable:
+ return CloneRefOfRenameTable(in)
+ case *TruncateTable:
+ return CloneRefOfTruncateTable(in)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+
+// CloneExplain creates a deep clone of the input.
+func CloneExplain(in Explain) Explain {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *ExplainStmt:
+ return CloneRefOfExplainStmt(in)
+ case *ExplainTab:
+ return CloneRefOfExplainTab(in)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+
+// CloneExpr creates a deep clone of the input.
+func CloneExpr(in Expr) Expr {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *AndExpr:
+ return CloneRefOfAndExpr(in)
+ case Argument:
+ return in
+ case *BinaryExpr:
+ return CloneRefOfBinaryExpr(in)
+ case BoolVal:
+ return in
+ case *CaseExpr:
+ return CloneRefOfCaseExpr(in)
+ case *ColName:
+ return CloneRefOfColName(in)
+ case *CollateExpr:
+ return CloneRefOfCollateExpr(in)
+ case *ComparisonExpr:
+ return CloneRefOfComparisonExpr(in)
+ case *ConvertExpr:
+ return CloneRefOfConvertExpr(in)
+ case *ConvertUsingExpr:
+ return CloneRefOfConvertUsingExpr(in)
+ case *CurTimeFuncExpr:
+ return CloneRefOfCurTimeFuncExpr(in)
+ case *Default:
+ return CloneRefOfDefault(in)
+ case *ExistsExpr:
+ return CloneRefOfExistsExpr(in)
+ case *FuncExpr:
+ return CloneRefOfFuncExpr(in)
+ case *GroupConcatExpr:
+ return CloneRefOfGroupConcatExpr(in)
+ case *IntervalExpr:
+ return CloneRefOfIntervalExpr(in)
+ case *IsExpr:
+ return CloneRefOfIsExpr(in)
+ case ListArg:
+ return CloneListArg(in)
+ case *Literal:
+ return CloneRefOfLiteral(in)
+ case *MatchExpr:
+ return CloneRefOfMatchExpr(in)
+ case *NotExpr:
+ return CloneRefOfNotExpr(in)
+ case *NullVal:
+ return CloneRefOfNullVal(in)
+ case *OrExpr:
+ return CloneRefOfOrExpr(in)
+ case *RangeCond:
+ return CloneRefOfRangeCond(in)
+ case *Subquery:
+ return CloneRefOfSubquery(in)
+ case *SubstrExpr:
+ return CloneRefOfSubstrExpr(in)
+ case *TimestampFuncExpr:
+ return CloneRefOfTimestampFuncExpr(in)
+ case *UnaryExpr:
+ return CloneRefOfUnaryExpr(in)
+ case ValTuple:
+ return CloneValTuple(in)
+ case *ValuesFuncExpr:
+ return CloneRefOfValuesFuncExpr(in)
+ case *XorExpr:
+ return CloneRefOfXorExpr(in)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+
+// CloneInsertRows creates a deep clone of the input.
+func CloneInsertRows(in InsertRows) InsertRows {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *ParenSelect:
+ return CloneRefOfParenSelect(in)
+ case *Select:
+ return CloneRefOfSelect(in)
+ case *Union:
+ return CloneRefOfUnion(in)
+ case Values:
+ return CloneValues(in)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+
+// CloneSelectExpr creates a deep clone of the input.
+func CloneSelectExpr(in SelectExpr) SelectExpr {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *AliasedExpr:
+ return CloneRefOfAliasedExpr(in)
+ case *Nextval:
+ return CloneRefOfNextval(in)
+ case *StarExpr:
+ return CloneRefOfStarExpr(in)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+
+// CloneSelectStatement creates a deep clone of the input.
+func CloneSelectStatement(in SelectStatement) SelectStatement {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *ParenSelect:
+ return CloneRefOfParenSelect(in)
+ case *Select:
+ return CloneRefOfSelect(in)
+ case *Union:
+ return CloneRefOfUnion(in)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+
+// CloneShowInternal creates a deep clone of the input.
+func CloneShowInternal(in ShowInternal) ShowInternal {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *ShowBasic:
+ return CloneRefOfShowBasic(in)
+ case *ShowCreate:
+ return CloneRefOfShowCreate(in)
+ case *ShowLegacy:
+ return CloneRefOfShowLegacy(in)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+
+// CloneSimpleTableExpr creates a deep clone of the input.
+func CloneSimpleTableExpr(in SimpleTableExpr) SimpleTableExpr {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *DerivedTable:
+ return CloneRefOfDerivedTable(in)
+ case TableName:
+ return CloneTableName(in)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+
+// CloneStatement creates a deep clone of the input.
+func CloneStatement(in Statement) Statement {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *AlterDatabase:
+ return CloneRefOfAlterDatabase(in)
+ case *AlterMigration:
+ return CloneRefOfAlterMigration(in)
+ case *AlterTable:
+ return CloneRefOfAlterTable(in)
+ case *AlterView:
+ return CloneRefOfAlterView(in)
+ case *AlterVschema:
+ return CloneRefOfAlterVschema(in)
+ case *Begin:
+ return CloneRefOfBegin(in)
+ case *CallProc:
+ return CloneRefOfCallProc(in)
+ case *Commit:
+ return CloneRefOfCommit(in)
+ case *CreateDatabase:
+ return CloneRefOfCreateDatabase(in)
+ case *CreateTable:
+ return CloneRefOfCreateTable(in)
+ case *CreateView:
+ return CloneRefOfCreateView(in)
+ case *Delete:
+ return CloneRefOfDelete(in)
+ case *DropDatabase:
+ return CloneRefOfDropDatabase(in)
+ case *DropTable:
+ return CloneRefOfDropTable(in)
+ case *DropView:
+ return CloneRefOfDropView(in)
+ case *ExplainStmt:
+ return CloneRefOfExplainStmt(in)
+ case *ExplainTab:
+ return CloneRefOfExplainTab(in)
+ case *Flush:
+ return CloneRefOfFlush(in)
+ case *Insert:
+ return CloneRefOfInsert(in)
+ case *Load:
+ return CloneRefOfLoad(in)
+ case *LockTables:
+ return CloneRefOfLockTables(in)
+ case *OtherAdmin:
+ return CloneRefOfOtherAdmin(in)
+ case *OtherRead:
+ return CloneRefOfOtherRead(in)
+ case *ParenSelect:
+ return CloneRefOfParenSelect(in)
+ case *Release:
+ return CloneRefOfRelease(in)
+ case *RenameTable:
+ return CloneRefOfRenameTable(in)
+ case *RevertMigration:
+ return CloneRefOfRevertMigration(in)
+ case *Rollback:
+ return CloneRefOfRollback(in)
+ case *SRollback:
+ return CloneRefOfSRollback(in)
+ case *Savepoint:
+ return CloneRefOfSavepoint(in)
+ case *Select:
+ return CloneRefOfSelect(in)
+ case *Set:
+ return CloneRefOfSet(in)
+ case *SetTransaction:
+ return CloneRefOfSetTransaction(in)
+ case *Show:
+ return CloneRefOfShow(in)
+ case *Stream:
+ return CloneRefOfStream(in)
+ case *TruncateTable:
+ return CloneRefOfTruncateTable(in)
+ case *Union:
+ return CloneRefOfUnion(in)
+ case *UnlockTables:
+ return CloneRefOfUnlockTables(in)
+ case *Update:
+ return CloneRefOfUpdate(in)
+ case *Use:
+ return CloneRefOfUse(in)
+ case *VStream:
+ return CloneRefOfVStream(in)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+
+// CloneTableExpr creates a deep clone of the input.
+func CloneTableExpr(in TableExpr) TableExpr {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *AliasedTableExpr:
+ return CloneRefOfAliasedTableExpr(in)
+ case *JoinTableExpr:
+ return CloneRefOfJoinTableExpr(in)
+ case *ParenTableExpr:
+ return CloneRefOfParenTableExpr(in)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+
+// CloneSliceOfRefOfColumnDefinition creates a deep clone of the input.
+func CloneSliceOfRefOfColumnDefinition(n []*ColumnDefinition) []*ColumnDefinition {
+ res := make([]*ColumnDefinition, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneRefOfColumnDefinition(x))
+ }
+ return res
+}
+
+// CloneSliceOfCollateAndCharset creates a deep clone of the input.
+func CloneSliceOfCollateAndCharset(n []CollateAndCharset) []CollateAndCharset {
+ res := make([]CollateAndCharset, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneCollateAndCharset(x))
+ }
+ return res
+}
+
+// CloneSliceOfAlterOption creates a deep clone of the input.
+func CloneSliceOfAlterOption(n []AlterOption) []AlterOption {
+ res := make([]AlterOption, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneAlterOption(x))
+ }
+ return res
+}
+
+// CloneSliceOfColIdent creates a deep clone of the input.
+func CloneSliceOfColIdent(n []ColIdent) []ColIdent {
+ res := make([]ColIdent, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneColIdent(x))
+ }
+ return res
+}
+
+// CloneSliceOfRefOfWhen creates a deep clone of the input.
+func CloneSliceOfRefOfWhen(n []*When) []*When {
+ res := make([]*When, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneRefOfWhen(x))
+ }
+ return res
+}
+
+// CloneRefOfColIdent creates a deep clone of the input.
+func CloneRefOfColIdent(n *ColIdent) *ColIdent {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ return &out
+}
+
+// CloneColumnType creates a deep clone of the input.
+func CloneColumnType(n ColumnType) ColumnType {
+ return *CloneRefOfColumnType(&n)
+}
+
+// CloneRefOfColumnTypeOptions creates a deep clone of the input.
+func CloneRefOfColumnTypeOptions(n *ColumnTypeOptions) *ColumnTypeOptions {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Null = CloneRefOfBool(n.Null)
+ out.Default = CloneExpr(n.Default)
+ out.OnUpdate = CloneExpr(n.OnUpdate)
+ out.Comment = CloneRefOfLiteral(n.Comment)
+ return &out
+}
+
+// CloneSliceOfString creates a deep clone of the input.
+func CloneSliceOfString(n []string) []string {
+ res := make([]string, 0, len(n))
+ copy(res, n)
+ return res
+}
+
+// CloneSliceOfRefOfIndexColumn creates a deep clone of the input.
+func CloneSliceOfRefOfIndexColumn(n []*IndexColumn) []*IndexColumn {
+ res := make([]*IndexColumn, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneRefOfIndexColumn(x))
+ }
+ return res
+}
+
+// CloneSliceOfRefOfIndexOption creates a deep clone of the input.
+func CloneSliceOfRefOfIndexOption(n []*IndexOption) []*IndexOption {
+ res := make([]*IndexOption, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneRefOfIndexOption(x))
+ }
+ return res
+}
+
+// CloneRefOfJoinCondition creates a deep clone of the input.
+func CloneRefOfJoinCondition(n *JoinCondition) *JoinCondition {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.On = CloneExpr(n.On)
+ out.Using = CloneColumns(n.Using)
+ return &out
+}
+
+// CloneTableAndLockTypes creates a deep clone of the input.
+func CloneTableAndLockTypes(n TableAndLockTypes) TableAndLockTypes {
+ res := make(TableAndLockTypes, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneRefOfTableAndLockType(x))
+ }
+ return res
+}
+
+// CloneSliceOfRefOfPartitionDefinition creates a deep clone of the input.
+func CloneSliceOfRefOfPartitionDefinition(n []*PartitionDefinition) []*PartitionDefinition {
+ res := make([]*PartitionDefinition, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneRefOfPartitionDefinition(x))
+ }
+ return res
+}
+
+// CloneSliceOfRefOfRenameTablePair creates a deep clone of the input.
+func CloneSliceOfRefOfRenameTablePair(n []*RenameTablePair) []*RenameTablePair {
+ res := make([]*RenameTablePair, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneRefOfRenameTablePair(x))
+ }
+ return res
+}
+
+// CloneRefOfBool creates a deep clone of the input.
+func CloneRefOfBool(n *bool) *bool {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ return &out
+}
+
+// CloneSliceOfCharacteristic creates a deep clone of the input.
+func CloneSliceOfCharacteristic(n []Characteristic) []Characteristic {
+ res := make([]Characteristic, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneCharacteristic(x))
+ }
+ return res
+}
+
+// CloneRefOfShowTablesOpt creates a deep clone of the input.
+func CloneRefOfShowTablesOpt(n *ShowTablesOpt) *ShowTablesOpt {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Filter = CloneRefOfShowFilter(n.Filter)
+ return &out
+}
+
+// CloneRefOfTableIdent creates a deep clone of the input.
+func CloneRefOfTableIdent(n *TableIdent) *TableIdent {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ return &out
+}
+
+// CloneRefOfTableName creates a deep clone of the input.
+func CloneRefOfTableName(n *TableName) *TableName {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Name = CloneTableIdent(n.Name)
+ out.Qualifier = CloneTableIdent(n.Qualifier)
+ return &out
+}
+
+// CloneRefOfTableOption creates a deep clone of the input.
+func CloneRefOfTableOption(n *TableOption) *TableOption {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Value = CloneRefOfLiteral(n.Value)
+ out.Tables = CloneTableNames(n.Tables)
+ return &out
+}
+
+// CloneSliceOfRefOfIndexDefinition creates a deep clone of the input.
+func CloneSliceOfRefOfIndexDefinition(n []*IndexDefinition) []*IndexDefinition {
+ res := make([]*IndexDefinition, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneRefOfIndexDefinition(x))
+ }
+ return res
+}
+
+// CloneSliceOfRefOfConstraintDefinition creates a deep clone of the input.
+func CloneSliceOfRefOfConstraintDefinition(n []*ConstraintDefinition) []*ConstraintDefinition {
+ res := make([]*ConstraintDefinition, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneRefOfConstraintDefinition(x))
+ }
+ return res
+}
+
+// CloneSliceOfRefOfUnionSelect creates a deep clone of the input.
+func CloneSliceOfRefOfUnionSelect(n []*UnionSelect) []*UnionSelect {
+ res := make([]*UnionSelect, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneRefOfUnionSelect(x))
+ }
+ return res
+}
+
+// CloneRefOfVindexParam creates a deep clone of the input.
+func CloneRefOfVindexParam(n *VindexParam) *VindexParam {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Key = CloneColIdent(n.Key)
+ return &out
+}
+
+// CloneSliceOfVindexParam creates a deep clone of the input.
+func CloneSliceOfVindexParam(n []VindexParam) []VindexParam {
+ res := make([]VindexParam, 0, len(n))
+ for _, x := range n {
+ res = append(res, CloneVindexParam(x))
+ }
+ return res
+}
+
+// CloneCollateAndCharset creates a deep clone of the input.
+func CloneCollateAndCharset(n CollateAndCharset) CollateAndCharset {
+ return *CloneRefOfCollateAndCharset(&n)
+}
+
+// CloneRefOfIndexColumn creates a deep clone of the input.
+func CloneRefOfIndexColumn(n *IndexColumn) *IndexColumn {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Column = CloneColIdent(n.Column)
+ out.Length = CloneRefOfLiteral(n.Length)
+ return &out
+}
+
+// CloneRefOfIndexOption creates a deep clone of the input.
+func CloneRefOfIndexOption(n *IndexOption) *IndexOption {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Value = CloneRefOfLiteral(n.Value)
+ return &out
+}
+
+// CloneRefOfTableAndLockType creates a deep clone of the input.
+func CloneRefOfTableAndLockType(n *TableAndLockType) *TableAndLockType {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.Table = CloneTableExpr(n.Table)
+ return &out
+}
+
+// CloneRefOfRenameTablePair creates a deep clone of the input.
+func CloneRefOfRenameTablePair(n *RenameTablePair) *RenameTablePair {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ out.FromTable = CloneTableName(n.FromTable)
+ out.ToTable = CloneTableName(n.ToTable)
+ return &out
+}
+
+// CloneRefOfCollateAndCharset creates a deep clone of the input.
+func CloneRefOfCollateAndCharset(n *CollateAndCharset) *CollateAndCharset {
+ if n == nil {
+ return nil
+ }
+ out := *n
+ return &out
+}
diff --git a/go/vt/sqlparser/ast_equals.go b/go/vt/sqlparser/ast_equals.go
new file mode 100644
index 00000000000..c19138584ba
--- /dev/null
+++ b/go/vt/sqlparser/ast_equals.go
@@ -0,0 +1,4076 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+// Code generated by ASTHelperGen. DO NOT EDIT.
+
+package sqlparser
+
+// EqualsSQLNode does deep equals between the two objects.
+func EqualsSQLNode(inA, inB SQLNode) bool {
+ if inA == nil && inB == nil {
+ return true
+ }
+ if inA == nil || inB == nil {
+ return false
+ }
+ switch a := inA.(type) {
+ case AccessMode:
+ b, ok := inB.(AccessMode)
+ if !ok {
+ return false
+ }
+ return a == b
+ case *AddColumns:
+ b, ok := inB.(*AddColumns)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAddColumns(a, b)
+ case *AddConstraintDefinition:
+ b, ok := inB.(*AddConstraintDefinition)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAddConstraintDefinition(a, b)
+ case *AddIndexDefinition:
+ b, ok := inB.(*AddIndexDefinition)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAddIndexDefinition(a, b)
+ case AlgorithmValue:
+ b, ok := inB.(AlgorithmValue)
+ if !ok {
+ return false
+ }
+ return a == b
+ case *AliasedExpr:
+ b, ok := inB.(*AliasedExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAliasedExpr(a, b)
+ case *AliasedTableExpr:
+ b, ok := inB.(*AliasedTableExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAliasedTableExpr(a, b)
+ case *AlterCharset:
+ b, ok := inB.(*AlterCharset)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAlterCharset(a, b)
+ case *AlterColumn:
+ b, ok := inB.(*AlterColumn)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAlterColumn(a, b)
+ case *AlterDatabase:
+ b, ok := inB.(*AlterDatabase)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAlterDatabase(a, b)
+ case *AlterMigration:
+ b, ok := inB.(*AlterMigration)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAlterMigration(a, b)
+ case *AlterTable:
+ b, ok := inB.(*AlterTable)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAlterTable(a, b)
+ case *AlterView:
+ b, ok := inB.(*AlterView)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAlterView(a, b)
+ case *AlterVschema:
+ b, ok := inB.(*AlterVschema)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAlterVschema(a, b)
+ case *AndExpr:
+ b, ok := inB.(*AndExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAndExpr(a, b)
+ case Argument:
+ b, ok := inB.(Argument)
+ if !ok {
+ return false
+ }
+ return a == b
+ case *AutoIncSpec:
+ b, ok := inB.(*AutoIncSpec)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAutoIncSpec(a, b)
+ case *Begin:
+ b, ok := inB.(*Begin)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfBegin(a, b)
+ case *BinaryExpr:
+ b, ok := inB.(*BinaryExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfBinaryExpr(a, b)
+ case BoolVal:
+ b, ok := inB.(BoolVal)
+ if !ok {
+ return false
+ }
+ return a == b
+ case *CallProc:
+ b, ok := inB.(*CallProc)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfCallProc(a, b)
+ case *CaseExpr:
+ b, ok := inB.(*CaseExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfCaseExpr(a, b)
+ case *ChangeColumn:
+ b, ok := inB.(*ChangeColumn)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfChangeColumn(a, b)
+ case *CheckConstraintDefinition:
+ b, ok := inB.(*CheckConstraintDefinition)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfCheckConstraintDefinition(a, b)
+ case ColIdent:
+ b, ok := inB.(ColIdent)
+ if !ok {
+ return false
+ }
+ return EqualsColIdent(a, b)
+ case *ColName:
+ b, ok := inB.(*ColName)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfColName(a, b)
+ case *CollateExpr:
+ b, ok := inB.(*CollateExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfCollateExpr(a, b)
+ case *ColumnDefinition:
+ b, ok := inB.(*ColumnDefinition)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfColumnDefinition(a, b)
+ case *ColumnType:
+ b, ok := inB.(*ColumnType)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfColumnType(a, b)
+ case Columns:
+ b, ok := inB.(Columns)
+ if !ok {
+ return false
+ }
+ return EqualsColumns(a, b)
+ case Comments:
+ b, ok := inB.(Comments)
+ if !ok {
+ return false
+ }
+ return EqualsComments(a, b)
+ case *Commit:
+ b, ok := inB.(*Commit)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfCommit(a, b)
+ case *ComparisonExpr:
+ b, ok := inB.(*ComparisonExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfComparisonExpr(a, b)
+ case *ConstraintDefinition:
+ b, ok := inB.(*ConstraintDefinition)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfConstraintDefinition(a, b)
+ case *ConvertExpr:
+ b, ok := inB.(*ConvertExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfConvertExpr(a, b)
+ case *ConvertType:
+ b, ok := inB.(*ConvertType)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfConvertType(a, b)
+ case *ConvertUsingExpr:
+ b, ok := inB.(*ConvertUsingExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfConvertUsingExpr(a, b)
+ case *CreateDatabase:
+ b, ok := inB.(*CreateDatabase)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfCreateDatabase(a, b)
+ case *CreateTable:
+ b, ok := inB.(*CreateTable)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfCreateTable(a, b)
+ case *CreateView:
+ b, ok := inB.(*CreateView)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfCreateView(a, b)
+ case *CurTimeFuncExpr:
+ b, ok := inB.(*CurTimeFuncExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfCurTimeFuncExpr(a, b)
+ case *Default:
+ b, ok := inB.(*Default)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfDefault(a, b)
+ case *Delete:
+ b, ok := inB.(*Delete)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfDelete(a, b)
+ case *DerivedTable:
+ b, ok := inB.(*DerivedTable)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfDerivedTable(a, b)
+ case *DropColumn:
+ b, ok := inB.(*DropColumn)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfDropColumn(a, b)
+ case *DropDatabase:
+ b, ok := inB.(*DropDatabase)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfDropDatabase(a, b)
+ case *DropKey:
+ b, ok := inB.(*DropKey)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfDropKey(a, b)
+ case *DropTable:
+ b, ok := inB.(*DropTable)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfDropTable(a, b)
+ case *DropView:
+ b, ok := inB.(*DropView)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfDropView(a, b)
+ case *ExistsExpr:
+ b, ok := inB.(*ExistsExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfExistsExpr(a, b)
+ case *ExplainStmt:
+ b, ok := inB.(*ExplainStmt)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfExplainStmt(a, b)
+ case *ExplainTab:
+ b, ok := inB.(*ExplainTab)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfExplainTab(a, b)
+ case Exprs:
+ b, ok := inB.(Exprs)
+ if !ok {
+ return false
+ }
+ return EqualsExprs(a, b)
+ case *Flush:
+ b, ok := inB.(*Flush)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfFlush(a, b)
+ case *Force:
+ b, ok := inB.(*Force)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfForce(a, b)
+ case *ForeignKeyDefinition:
+ b, ok := inB.(*ForeignKeyDefinition)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfForeignKeyDefinition(a, b)
+ case *FuncExpr:
+ b, ok := inB.(*FuncExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfFuncExpr(a, b)
+ case GroupBy:
+ b, ok := inB.(GroupBy)
+ if !ok {
+ return false
+ }
+ return EqualsGroupBy(a, b)
+ case *GroupConcatExpr:
+ b, ok := inB.(*GroupConcatExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfGroupConcatExpr(a, b)
+ case *IndexDefinition:
+ b, ok := inB.(*IndexDefinition)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfIndexDefinition(a, b)
+ case *IndexHints:
+ b, ok := inB.(*IndexHints)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfIndexHints(a, b)
+ case *IndexInfo:
+ b, ok := inB.(*IndexInfo)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfIndexInfo(a, b)
+ case *Insert:
+ b, ok := inB.(*Insert)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfInsert(a, b)
+ case *IntervalExpr:
+ b, ok := inB.(*IntervalExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfIntervalExpr(a, b)
+ case *IsExpr:
+ b, ok := inB.(*IsExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfIsExpr(a, b)
+ case IsolationLevel:
+ b, ok := inB.(IsolationLevel)
+ if !ok {
+ return false
+ }
+ return a == b
+ case JoinCondition:
+ b, ok := inB.(JoinCondition)
+ if !ok {
+ return false
+ }
+ return EqualsJoinCondition(a, b)
+ case *JoinTableExpr:
+ b, ok := inB.(*JoinTableExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfJoinTableExpr(a, b)
+ case *KeyState:
+ b, ok := inB.(*KeyState)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfKeyState(a, b)
+ case *Limit:
+ b, ok := inB.(*Limit)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfLimit(a, b)
+ case ListArg:
+ b, ok := inB.(ListArg)
+ if !ok {
+ return false
+ }
+ return EqualsListArg(a, b)
+ case *Literal:
+ b, ok := inB.(*Literal)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfLiteral(a, b)
+ case *Load:
+ b, ok := inB.(*Load)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfLoad(a, b)
+ case *LockOption:
+ b, ok := inB.(*LockOption)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfLockOption(a, b)
+ case *LockTables:
+ b, ok := inB.(*LockTables)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfLockTables(a, b)
+ case *MatchExpr:
+ b, ok := inB.(*MatchExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfMatchExpr(a, b)
+ case *ModifyColumn:
+ b, ok := inB.(*ModifyColumn)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfModifyColumn(a, b)
+ case *Nextval:
+ b, ok := inB.(*Nextval)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfNextval(a, b)
+ case *NotExpr:
+ b, ok := inB.(*NotExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfNotExpr(a, b)
+ case *NullVal:
+ b, ok := inB.(*NullVal)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfNullVal(a, b)
+ case OnDup:
+ b, ok := inB.(OnDup)
+ if !ok {
+ return false
+ }
+ return EqualsOnDup(a, b)
+ case *OptLike:
+ b, ok := inB.(*OptLike)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfOptLike(a, b)
+ case *OrExpr:
+ b, ok := inB.(*OrExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfOrExpr(a, b)
+ case *Order:
+ b, ok := inB.(*Order)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfOrder(a, b)
+ case OrderBy:
+ b, ok := inB.(OrderBy)
+ if !ok {
+ return false
+ }
+ return EqualsOrderBy(a, b)
+ case *OrderByOption:
+ b, ok := inB.(*OrderByOption)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfOrderByOption(a, b)
+ case *OtherAdmin:
+ b, ok := inB.(*OtherAdmin)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfOtherAdmin(a, b)
+ case *OtherRead:
+ b, ok := inB.(*OtherRead)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfOtherRead(a, b)
+ case *ParenSelect:
+ b, ok := inB.(*ParenSelect)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfParenSelect(a, b)
+ case *ParenTableExpr:
+ b, ok := inB.(*ParenTableExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfParenTableExpr(a, b)
+ case *PartitionDefinition:
+ b, ok := inB.(*PartitionDefinition)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfPartitionDefinition(a, b)
+ case *PartitionSpec:
+ b, ok := inB.(*PartitionSpec)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfPartitionSpec(a, b)
+ case Partitions:
+ b, ok := inB.(Partitions)
+ if !ok {
+ return false
+ }
+ return EqualsPartitions(a, b)
+ case *RangeCond:
+ b, ok := inB.(*RangeCond)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfRangeCond(a, b)
+ case ReferenceAction:
+ b, ok := inB.(ReferenceAction)
+ if !ok {
+ return false
+ }
+ return a == b
+ case *Release:
+ b, ok := inB.(*Release)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfRelease(a, b)
+ case *RenameIndex:
+ b, ok := inB.(*RenameIndex)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfRenameIndex(a, b)
+ case *RenameTable:
+ b, ok := inB.(*RenameTable)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfRenameTable(a, b)
+ case *RenameTableName:
+ b, ok := inB.(*RenameTableName)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfRenameTableName(a, b)
+ case *RevertMigration:
+ b, ok := inB.(*RevertMigration)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfRevertMigration(a, b)
+ case *Rollback:
+ b, ok := inB.(*Rollback)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfRollback(a, b)
+ case *SRollback:
+ b, ok := inB.(*SRollback)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfSRollback(a, b)
+ case *Savepoint:
+ b, ok := inB.(*Savepoint)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfSavepoint(a, b)
+ case *Select:
+ b, ok := inB.(*Select)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfSelect(a, b)
+ case SelectExprs:
+ b, ok := inB.(SelectExprs)
+ if !ok {
+ return false
+ }
+ return EqualsSelectExprs(a, b)
+ case *SelectInto:
+ b, ok := inB.(*SelectInto)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfSelectInto(a, b)
+ case *Set:
+ b, ok := inB.(*Set)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfSet(a, b)
+ case *SetExpr:
+ b, ok := inB.(*SetExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfSetExpr(a, b)
+ case SetExprs:
+ b, ok := inB.(SetExprs)
+ if !ok {
+ return false
+ }
+ return EqualsSetExprs(a, b)
+ case *SetTransaction:
+ b, ok := inB.(*SetTransaction)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfSetTransaction(a, b)
+ case *Show:
+ b, ok := inB.(*Show)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfShow(a, b)
+ case *ShowBasic:
+ b, ok := inB.(*ShowBasic)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfShowBasic(a, b)
+ case *ShowCreate:
+ b, ok := inB.(*ShowCreate)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfShowCreate(a, b)
+ case *ShowFilter:
+ b, ok := inB.(*ShowFilter)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfShowFilter(a, b)
+ case *ShowLegacy:
+ b, ok := inB.(*ShowLegacy)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfShowLegacy(a, b)
+ case *StarExpr:
+ b, ok := inB.(*StarExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfStarExpr(a, b)
+ case *Stream:
+ b, ok := inB.(*Stream)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfStream(a, b)
+ case *Subquery:
+ b, ok := inB.(*Subquery)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfSubquery(a, b)
+ case *SubstrExpr:
+ b, ok := inB.(*SubstrExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfSubstrExpr(a, b)
+ case TableExprs:
+ b, ok := inB.(TableExprs)
+ if !ok {
+ return false
+ }
+ return EqualsTableExprs(a, b)
+ case TableIdent:
+ b, ok := inB.(TableIdent)
+ if !ok {
+ return false
+ }
+ return EqualsTableIdent(a, b)
+ case TableName:
+ b, ok := inB.(TableName)
+ if !ok {
+ return false
+ }
+ return EqualsTableName(a, b)
+ case TableNames:
+ b, ok := inB.(TableNames)
+ if !ok {
+ return false
+ }
+ return EqualsTableNames(a, b)
+ case TableOptions:
+ b, ok := inB.(TableOptions)
+ if !ok {
+ return false
+ }
+ return EqualsTableOptions(a, b)
+ case *TableSpec:
+ b, ok := inB.(*TableSpec)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfTableSpec(a, b)
+ case *TablespaceOperation:
+ b, ok := inB.(*TablespaceOperation)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfTablespaceOperation(a, b)
+ case *TimestampFuncExpr:
+ b, ok := inB.(*TimestampFuncExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfTimestampFuncExpr(a, b)
+ case *TruncateTable:
+ b, ok := inB.(*TruncateTable)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfTruncateTable(a, b)
+ case *UnaryExpr:
+ b, ok := inB.(*UnaryExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfUnaryExpr(a, b)
+ case *Union:
+ b, ok := inB.(*Union)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfUnion(a, b)
+ case *UnionSelect:
+ b, ok := inB.(*UnionSelect)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfUnionSelect(a, b)
+ case *UnlockTables:
+ b, ok := inB.(*UnlockTables)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfUnlockTables(a, b)
+ case *Update:
+ b, ok := inB.(*Update)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfUpdate(a, b)
+ case *UpdateExpr:
+ b, ok := inB.(*UpdateExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfUpdateExpr(a, b)
+ case UpdateExprs:
+ b, ok := inB.(UpdateExprs)
+ if !ok {
+ return false
+ }
+ return EqualsUpdateExprs(a, b)
+ case *Use:
+ b, ok := inB.(*Use)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfUse(a, b)
+ case *VStream:
+ b, ok := inB.(*VStream)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfVStream(a, b)
+ case ValTuple:
+ b, ok := inB.(ValTuple)
+ if !ok {
+ return false
+ }
+ return EqualsValTuple(a, b)
+ case *Validation:
+ b, ok := inB.(*Validation)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfValidation(a, b)
+ case Values:
+ b, ok := inB.(Values)
+ if !ok {
+ return false
+ }
+ return EqualsValues(a, b)
+ case *ValuesFuncExpr:
+ b, ok := inB.(*ValuesFuncExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfValuesFuncExpr(a, b)
+ case VindexParam:
+ b, ok := inB.(VindexParam)
+ if !ok {
+ return false
+ }
+ return EqualsVindexParam(a, b)
+ case *VindexSpec:
+ b, ok := inB.(*VindexSpec)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfVindexSpec(a, b)
+ case *When:
+ b, ok := inB.(*When)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfWhen(a, b)
+ case *Where:
+ b, ok := inB.(*Where)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfWhere(a, b)
+ case *XorExpr:
+ b, ok := inB.(*XorExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfXorExpr(a, b)
+ default:
+ // this should never happen
+ return false
+ }
+}
+
+// EqualsRefOfAddColumns does deep equals between the two objects.
+func EqualsRefOfAddColumns(a, b *AddColumns) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsSliceOfRefOfColumnDefinition(a.Columns, b.Columns) &&
+ EqualsRefOfColName(a.First, b.First) &&
+ EqualsRefOfColName(a.After, b.After)
+}
+
+// EqualsRefOfAddConstraintDefinition does deep equals between the two objects.
+func EqualsRefOfAddConstraintDefinition(a, b *AddConstraintDefinition) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsRefOfConstraintDefinition(a.ConstraintDefinition, b.ConstraintDefinition)
+}
+
+// EqualsRefOfAddIndexDefinition does deep equals between the two objects.
+func EqualsRefOfAddIndexDefinition(a, b *AddIndexDefinition) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsRefOfIndexDefinition(a.IndexDefinition, b.IndexDefinition)
+}
+
+// EqualsRefOfAliasedExpr does deep equals between the two objects.
+func EqualsRefOfAliasedExpr(a, b *AliasedExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsExpr(a.Expr, b.Expr) &&
+ EqualsColIdent(a.As, b.As)
+}
+
+// EqualsRefOfAliasedTableExpr does deep equals between the two objects.
+func EqualsRefOfAliasedTableExpr(a, b *AliasedTableExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsSimpleTableExpr(a.Expr, b.Expr) &&
+ EqualsPartitions(a.Partitions, b.Partitions) &&
+ EqualsTableIdent(a.As, b.As) &&
+ EqualsRefOfIndexHints(a.Hints, b.Hints)
+}
+
+// EqualsRefOfAlterCharset does deep equals between the two objects.
+func EqualsRefOfAlterCharset(a, b *AlterCharset) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.CharacterSet == b.CharacterSet &&
+ a.Collate == b.Collate
+}
+
+// EqualsRefOfAlterColumn does deep equals between the two objects.
+func EqualsRefOfAlterColumn(a, b *AlterColumn) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.DropDefault == b.DropDefault &&
+ EqualsRefOfColName(a.Column, b.Column) &&
+ EqualsExpr(a.DefaultVal, b.DefaultVal)
+}
+
+// EqualsRefOfAlterDatabase does deep equals between the two objects.
+func EqualsRefOfAlterDatabase(a, b *AlterDatabase) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.UpdateDataDirectory == b.UpdateDataDirectory &&
+ a.FullyParsed == b.FullyParsed &&
+ EqualsTableIdent(a.DBName, b.DBName) &&
+ EqualsSliceOfCollateAndCharset(a.AlterOptions, b.AlterOptions)
+}
+
+// EqualsRefOfAlterMigration does deep equals between the two objects.
+func EqualsRefOfAlterMigration(a, b *AlterMigration) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.UUID == b.UUID &&
+ a.Type == b.Type
+}
+
+// EqualsRefOfAlterTable does deep equals between the two objects.
+func EqualsRefOfAlterTable(a, b *AlterTable) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.FullyParsed == b.FullyParsed &&
+ EqualsTableName(a.Table, b.Table) &&
+ EqualsSliceOfAlterOption(a.AlterOptions, b.AlterOptions) &&
+ EqualsRefOfPartitionSpec(a.PartitionSpec, b.PartitionSpec)
+}
+
+// EqualsRefOfAlterView does deep equals between the two objects.
+func EqualsRefOfAlterView(a, b *AlterView) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Algorithm == b.Algorithm &&
+ a.Definer == b.Definer &&
+ a.Security == b.Security &&
+ a.CheckOption == b.CheckOption &&
+ EqualsTableName(a.ViewName, b.ViewName) &&
+ EqualsColumns(a.Columns, b.Columns) &&
+ EqualsSelectStatement(a.Select, b.Select)
+}
+
+// EqualsRefOfAlterVschema does deep equals between the two objects.
+func EqualsRefOfAlterVschema(a, b *AlterVschema) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Action == b.Action &&
+ EqualsTableName(a.Table, b.Table) &&
+ EqualsRefOfVindexSpec(a.VindexSpec, b.VindexSpec) &&
+ EqualsSliceOfColIdent(a.VindexCols, b.VindexCols) &&
+ EqualsRefOfAutoIncSpec(a.AutoIncSpec, b.AutoIncSpec)
+}
+
+// EqualsRefOfAndExpr does deep equals between the two objects.
+func EqualsRefOfAndExpr(a, b *AndExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsExpr(a.Left, b.Left) &&
+ EqualsExpr(a.Right, b.Right)
+}
+
+// EqualsRefOfAutoIncSpec does deep equals between the two objects.
+func EqualsRefOfAutoIncSpec(a, b *AutoIncSpec) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsColIdent(a.Column, b.Column) &&
+ EqualsTableName(a.Sequence, b.Sequence)
+}
+
+// EqualsRefOfBegin does deep equals between the two objects.
+func EqualsRefOfBegin(a, b *Begin) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return true
+}
+
+// EqualsRefOfBinaryExpr does deep equals between the two objects.
+func EqualsRefOfBinaryExpr(a, b *BinaryExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Operator == b.Operator &&
+ EqualsExpr(a.Left, b.Left) &&
+ EqualsExpr(a.Right, b.Right)
+}
+
+// EqualsRefOfCallProc does deep equals between the two objects.
+func EqualsRefOfCallProc(a, b *CallProc) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsTableName(a.Name, b.Name) &&
+ EqualsExprs(a.Params, b.Params)
+}
+
+// EqualsRefOfCaseExpr does deep equals between the two objects.
+func EqualsRefOfCaseExpr(a, b *CaseExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsExpr(a.Expr, b.Expr) &&
+ EqualsSliceOfRefOfWhen(a.Whens, b.Whens) &&
+ EqualsExpr(a.Else, b.Else)
+}
+
+// EqualsRefOfChangeColumn does deep equals between the two objects.
+func EqualsRefOfChangeColumn(a, b *ChangeColumn) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsRefOfColName(a.OldColumn, b.OldColumn) &&
+ EqualsRefOfColumnDefinition(a.NewColDefinition, b.NewColDefinition) &&
+ EqualsRefOfColName(a.First, b.First) &&
+ EqualsRefOfColName(a.After, b.After)
+}
+
+// EqualsRefOfCheckConstraintDefinition does deep equals between the two objects.
+func EqualsRefOfCheckConstraintDefinition(a, b *CheckConstraintDefinition) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Enforced == b.Enforced &&
+ EqualsExpr(a.Expr, b.Expr)
+}
+
+// EqualsColIdent does deep equals between the two objects.
+func EqualsColIdent(a, b ColIdent) bool {
+ return a.val == b.val &&
+ a.lowered == b.lowered &&
+ a.at == b.at
+}
+
+// EqualsRefOfColName does deep equals between the two objects.
+func EqualsRefOfColName(a, b *ColName) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsColIdent(a.Name, b.Name) &&
+ EqualsTableName(a.Qualifier, b.Qualifier)
+}
+
+// EqualsRefOfCollateExpr does deep equals between the two objects.
+func EqualsRefOfCollateExpr(a, b *CollateExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Charset == b.Charset &&
+ EqualsExpr(a.Expr, b.Expr)
+}
+
+// EqualsRefOfColumnDefinition does deep equals between the two objects.
+func EqualsRefOfColumnDefinition(a, b *ColumnDefinition) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsColIdent(a.Name, b.Name) &&
+ EqualsColumnType(a.Type, b.Type)
+}
+
+// EqualsRefOfColumnType does deep equals between the two objects.
+func EqualsRefOfColumnType(a, b *ColumnType) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Type == b.Type &&
+ a.Unsigned == b.Unsigned &&
+ a.Zerofill == b.Zerofill &&
+ a.Charset == b.Charset &&
+ a.Collate == b.Collate &&
+ EqualsRefOfColumnTypeOptions(a.Options, b.Options) &&
+ EqualsRefOfLiteral(a.Length, b.Length) &&
+ EqualsRefOfLiteral(a.Scale, b.Scale) &&
+ EqualsSliceOfString(a.EnumValues, b.EnumValues)
+}
+
+// EqualsColumns does deep equals between the two objects.
+func EqualsColumns(a, b Columns) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsColIdent(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsComments does deep equals between the two objects.
+func EqualsComments(a, b Comments) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if a[i] != b[i] {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsRefOfCommit does deep equals between the two objects.
+func EqualsRefOfCommit(a, b *Commit) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return true
+}
+
+// EqualsRefOfComparisonExpr does deep equals between the two objects.
+func EqualsRefOfComparisonExpr(a, b *ComparisonExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Operator == b.Operator &&
+ EqualsExpr(a.Left, b.Left) &&
+ EqualsExpr(a.Right, b.Right) &&
+ EqualsExpr(a.Escape, b.Escape)
+}
+
+// EqualsRefOfConstraintDefinition does deep equals between the two objects.
+func EqualsRefOfConstraintDefinition(a, b *ConstraintDefinition) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsColIdent(a.Name, b.Name) &&
+ EqualsConstraintInfo(a.Details, b.Details)
+}
+
+// EqualsRefOfConvertExpr does deep equals between the two objects.
+func EqualsRefOfConvertExpr(a, b *ConvertExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsExpr(a.Expr, b.Expr) &&
+ EqualsRefOfConvertType(a.Type, b.Type)
+}
+
+// EqualsRefOfConvertType does deep equals between the two objects.
+func EqualsRefOfConvertType(a, b *ConvertType) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Type == b.Type &&
+ a.Charset == b.Charset &&
+ EqualsRefOfLiteral(a.Length, b.Length) &&
+ EqualsRefOfLiteral(a.Scale, b.Scale) &&
+ a.Operator == b.Operator
+}
+
+// EqualsRefOfConvertUsingExpr does deep equals between the two objects.
+func EqualsRefOfConvertUsingExpr(a, b *ConvertUsingExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Type == b.Type &&
+ EqualsExpr(a.Expr, b.Expr)
+}
+
+// EqualsRefOfCreateDatabase does deep equals between the two objects.
+func EqualsRefOfCreateDatabase(a, b *CreateDatabase) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.IfNotExists == b.IfNotExists &&
+ a.FullyParsed == b.FullyParsed &&
+ EqualsComments(a.Comments, b.Comments) &&
+ EqualsTableIdent(a.DBName, b.DBName) &&
+ EqualsSliceOfCollateAndCharset(a.CreateOptions, b.CreateOptions)
+}
+
+// EqualsRefOfCreateTable does deep equals between the two objects.
+func EqualsRefOfCreateTable(a, b *CreateTable) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Temp == b.Temp &&
+ a.IfNotExists == b.IfNotExists &&
+ a.FullyParsed == b.FullyParsed &&
+ EqualsTableName(a.Table, b.Table) &&
+ EqualsRefOfTableSpec(a.TableSpec, b.TableSpec) &&
+ EqualsRefOfOptLike(a.OptLike, b.OptLike)
+}
+
+// EqualsRefOfCreateView does deep equals between the two objects.
+func EqualsRefOfCreateView(a, b *CreateView) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Algorithm == b.Algorithm &&
+ a.Definer == b.Definer &&
+ a.Security == b.Security &&
+ a.CheckOption == b.CheckOption &&
+ a.IsReplace == b.IsReplace &&
+ EqualsTableName(a.ViewName, b.ViewName) &&
+ EqualsColumns(a.Columns, b.Columns) &&
+ EqualsSelectStatement(a.Select, b.Select)
+}
+
+// EqualsRefOfCurTimeFuncExpr does deep equals between the two objects.
+func EqualsRefOfCurTimeFuncExpr(a, b *CurTimeFuncExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsColIdent(a.Name, b.Name) &&
+ EqualsExpr(a.Fsp, b.Fsp)
+}
+
+// EqualsRefOfDefault does deep equals between the two objects.
+func EqualsRefOfDefault(a, b *Default) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.ColName == b.ColName
+}
+
+// EqualsRefOfDelete does deep equals between the two objects.
+func EqualsRefOfDelete(a, b *Delete) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Ignore == b.Ignore &&
+ EqualsComments(a.Comments, b.Comments) &&
+ EqualsTableNames(a.Targets, b.Targets) &&
+ EqualsTableExprs(a.TableExprs, b.TableExprs) &&
+ EqualsPartitions(a.Partitions, b.Partitions) &&
+ EqualsRefOfWhere(a.Where, b.Where) &&
+ EqualsOrderBy(a.OrderBy, b.OrderBy) &&
+ EqualsRefOfLimit(a.Limit, b.Limit)
+}
+
+// EqualsRefOfDerivedTable does deep equals between the two objects.
+func EqualsRefOfDerivedTable(a, b *DerivedTable) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsSelectStatement(a.Select, b.Select)
+}
+
+// EqualsRefOfDropColumn does deep equals between the two objects.
+func EqualsRefOfDropColumn(a, b *DropColumn) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsRefOfColName(a.Name, b.Name)
+}
+
+// EqualsRefOfDropDatabase does deep equals between the two objects.
+func EqualsRefOfDropDatabase(a, b *DropDatabase) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.IfExists == b.IfExists &&
+ EqualsComments(a.Comments, b.Comments) &&
+ EqualsTableIdent(a.DBName, b.DBName)
+}
+
+// EqualsRefOfDropKey does deep equals between the two objects.
+func EqualsRefOfDropKey(a, b *DropKey) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Type == b.Type &&
+ EqualsColIdent(a.Name, b.Name)
+}
+
+// EqualsRefOfDropTable does deep equals between the two objects.
+func EqualsRefOfDropTable(a, b *DropTable) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Temp == b.Temp &&
+ a.IfExists == b.IfExists &&
+ EqualsTableNames(a.FromTables, b.FromTables)
+}
+
+// EqualsRefOfDropView does deep equals between the two objects.
+func EqualsRefOfDropView(a, b *DropView) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.IfExists == b.IfExists &&
+ EqualsTableNames(a.FromTables, b.FromTables)
+}
+
+// EqualsRefOfExistsExpr does deep equals between the two objects.
+func EqualsRefOfExistsExpr(a, b *ExistsExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsRefOfSubquery(a.Subquery, b.Subquery)
+}
+
+// EqualsRefOfExplainStmt does deep equals between the two objects.
+func EqualsRefOfExplainStmt(a, b *ExplainStmt) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Type == b.Type &&
+ EqualsStatement(a.Statement, b.Statement)
+}
+
+// EqualsRefOfExplainTab does deep equals between the two objects.
+func EqualsRefOfExplainTab(a, b *ExplainTab) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Wild == b.Wild &&
+ EqualsTableName(a.Table, b.Table)
+}
+
+// EqualsExprs does deep equals between the two objects.
+func EqualsExprs(a, b Exprs) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsExpr(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsRefOfFlush does deep equals between the two objects.
+func EqualsRefOfFlush(a, b *Flush) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.IsLocal == b.IsLocal &&
+ a.WithLock == b.WithLock &&
+ a.ForExport == b.ForExport &&
+ EqualsSliceOfString(a.FlushOptions, b.FlushOptions) &&
+ EqualsTableNames(a.TableNames, b.TableNames)
+}
+
+// EqualsRefOfForce does deep equals between the two objects.
+func EqualsRefOfForce(a, b *Force) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return true
+}
+
+// EqualsRefOfForeignKeyDefinition does deep equals between the two objects.
+func EqualsRefOfForeignKeyDefinition(a, b *ForeignKeyDefinition) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsColumns(a.Source, b.Source) &&
+ EqualsTableName(a.ReferencedTable, b.ReferencedTable) &&
+ EqualsColumns(a.ReferencedColumns, b.ReferencedColumns) &&
+ a.OnDelete == b.OnDelete &&
+ a.OnUpdate == b.OnUpdate
+}
+
+// EqualsRefOfFuncExpr does deep equals between the two objects.
+func EqualsRefOfFuncExpr(a, b *FuncExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Distinct == b.Distinct &&
+ EqualsTableIdent(a.Qualifier, b.Qualifier) &&
+ EqualsColIdent(a.Name, b.Name) &&
+ EqualsSelectExprs(a.Exprs, b.Exprs)
+}
+
+// EqualsGroupBy does deep equals between the two objects.
+func EqualsGroupBy(a, b GroupBy) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsExpr(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsRefOfGroupConcatExpr does deep equals between the two objects.
+func EqualsRefOfGroupConcatExpr(a, b *GroupConcatExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Distinct == b.Distinct &&
+ a.Separator == b.Separator &&
+ EqualsSelectExprs(a.Exprs, b.Exprs) &&
+ EqualsOrderBy(a.OrderBy, b.OrderBy) &&
+ EqualsRefOfLimit(a.Limit, b.Limit)
+}
+
+// EqualsRefOfIndexDefinition does deep equals between the two objects.
+func EqualsRefOfIndexDefinition(a, b *IndexDefinition) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsRefOfIndexInfo(a.Info, b.Info) &&
+ EqualsSliceOfRefOfIndexColumn(a.Columns, b.Columns) &&
+ EqualsSliceOfRefOfIndexOption(a.Options, b.Options)
+}
+
+// EqualsRefOfIndexHints does deep equals between the two objects.
+func EqualsRefOfIndexHints(a, b *IndexHints) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Type == b.Type &&
+ EqualsSliceOfColIdent(a.Indexes, b.Indexes)
+}
+
+// EqualsRefOfIndexInfo does deep equals between the two objects.
+func EqualsRefOfIndexInfo(a, b *IndexInfo) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Type == b.Type &&
+ a.Primary == b.Primary &&
+ a.Spatial == b.Spatial &&
+ a.Fulltext == b.Fulltext &&
+ a.Unique == b.Unique &&
+ EqualsColIdent(a.Name, b.Name) &&
+ EqualsColIdent(a.ConstraintName, b.ConstraintName)
+}
+
+// EqualsRefOfInsert does deep equals between the two objects.
+func EqualsRefOfInsert(a, b *Insert) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Action == b.Action &&
+ EqualsComments(a.Comments, b.Comments) &&
+ a.Ignore == b.Ignore &&
+ EqualsTableName(a.Table, b.Table) &&
+ EqualsPartitions(a.Partitions, b.Partitions) &&
+ EqualsColumns(a.Columns, b.Columns) &&
+ EqualsInsertRows(a.Rows, b.Rows) &&
+ EqualsOnDup(a.OnDup, b.OnDup)
+}
+
+// EqualsRefOfIntervalExpr does deep equals between the two objects.
+func EqualsRefOfIntervalExpr(a, b *IntervalExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Unit == b.Unit &&
+ EqualsExpr(a.Expr, b.Expr)
+}
+
+// EqualsRefOfIsExpr does deep equals between the two objects.
+func EqualsRefOfIsExpr(a, b *IsExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Operator == b.Operator &&
+ EqualsExpr(a.Expr, b.Expr)
+}
+
+// EqualsJoinCondition does deep equals between the two objects.
+func EqualsJoinCondition(a, b JoinCondition) bool {
+ return EqualsExpr(a.On, b.On) &&
+ EqualsColumns(a.Using, b.Using)
+}
+
+// EqualsRefOfJoinTableExpr does deep equals between the two objects.
+func EqualsRefOfJoinTableExpr(a, b *JoinTableExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsTableExpr(a.LeftExpr, b.LeftExpr) &&
+ a.Join == b.Join &&
+ EqualsTableExpr(a.RightExpr, b.RightExpr) &&
+ EqualsJoinCondition(a.Condition, b.Condition)
+}
+
+// EqualsRefOfKeyState does deep equals between the two objects.
+func EqualsRefOfKeyState(a, b *KeyState) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Enable == b.Enable
+}
+
+// EqualsRefOfLimit does deep equals between the two objects.
+func EqualsRefOfLimit(a, b *Limit) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsExpr(a.Offset, b.Offset) &&
+ EqualsExpr(a.Rowcount, b.Rowcount)
+}
+
+// EqualsListArg does deep equals between the two objects.
+func EqualsListArg(a, b ListArg) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if a[i] != b[i] {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsRefOfLiteral does deep equals between the two objects.
+func EqualsRefOfLiteral(a, b *Literal) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Val == b.Val &&
+ a.Type == b.Type
+}
+
+// EqualsRefOfLoad does deep equals between the two objects.
+func EqualsRefOfLoad(a, b *Load) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return true
+}
+
+// EqualsRefOfLockOption does deep equals between the two objects.
+func EqualsRefOfLockOption(a, b *LockOption) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Type == b.Type
+}
+
+// EqualsRefOfLockTables does deep equals between the two objects.
+func EqualsRefOfLockTables(a, b *LockTables) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsTableAndLockTypes(a.Tables, b.Tables)
+}
+
+// EqualsRefOfMatchExpr does deep equals between the two objects.
+func EqualsRefOfMatchExpr(a, b *MatchExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsSelectExprs(a.Columns, b.Columns) &&
+ EqualsExpr(a.Expr, b.Expr) &&
+ a.Option == b.Option
+}
+
+// EqualsRefOfModifyColumn does deep equals between the two objects.
+func EqualsRefOfModifyColumn(a, b *ModifyColumn) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsRefOfColumnDefinition(a.NewColDefinition, b.NewColDefinition) &&
+ EqualsRefOfColName(a.First, b.First) &&
+ EqualsRefOfColName(a.After, b.After)
+}
+
+// EqualsRefOfNextval does deep equals between the two objects.
+func EqualsRefOfNextval(a, b *Nextval) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsExpr(a.Expr, b.Expr)
+}
+
+// EqualsRefOfNotExpr does deep equals between the two objects.
+func EqualsRefOfNotExpr(a, b *NotExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsExpr(a.Expr, b.Expr)
+}
+
+// EqualsRefOfNullVal does deep equals between the two objects.
+func EqualsRefOfNullVal(a, b *NullVal) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return true
+}
+
+// EqualsOnDup does deep equals between the two objects.
+func EqualsOnDup(a, b OnDup) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsRefOfUpdateExpr(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsRefOfOptLike does deep equals between the two objects.
+func EqualsRefOfOptLike(a, b *OptLike) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsTableName(a.LikeTable, b.LikeTable)
+}
+
+// EqualsRefOfOrExpr does deep equals between the two objects.
+func EqualsRefOfOrExpr(a, b *OrExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsExpr(a.Left, b.Left) &&
+ EqualsExpr(a.Right, b.Right)
+}
+
+// EqualsRefOfOrder does deep equals between the two objects.
+func EqualsRefOfOrder(a, b *Order) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsExpr(a.Expr, b.Expr) &&
+ a.Direction == b.Direction
+}
+
+// EqualsOrderBy does deep equals between the two objects.
+func EqualsOrderBy(a, b OrderBy) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsRefOfOrder(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsRefOfOrderByOption does deep equals between the two objects.
+func EqualsRefOfOrderByOption(a, b *OrderByOption) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsColumns(a.Cols, b.Cols)
+}
+
+// EqualsRefOfOtherAdmin does deep equals between the two objects.
+func EqualsRefOfOtherAdmin(a, b *OtherAdmin) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return true
+}
+
+// EqualsRefOfOtherRead does deep equals between the two objects.
+func EqualsRefOfOtherRead(a, b *OtherRead) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return true
+}
+
+// EqualsRefOfParenSelect does deep equals between the two objects.
+func EqualsRefOfParenSelect(a, b *ParenSelect) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsSelectStatement(a.Select, b.Select)
+}
+
+// EqualsRefOfParenTableExpr does deep equals between the two objects.
+func EqualsRefOfParenTableExpr(a, b *ParenTableExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsTableExprs(a.Exprs, b.Exprs)
+}
+
+// EqualsRefOfPartitionDefinition does deep equals between the two objects.
+func EqualsRefOfPartitionDefinition(a, b *PartitionDefinition) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Maxvalue == b.Maxvalue &&
+ EqualsColIdent(a.Name, b.Name) &&
+ EqualsExpr(a.Limit, b.Limit)
+}
+
+// EqualsRefOfPartitionSpec does deep equals between the two objects.
+func EqualsRefOfPartitionSpec(a, b *PartitionSpec) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.IsAll == b.IsAll &&
+ a.WithoutValidation == b.WithoutValidation &&
+ a.Action == b.Action &&
+ EqualsPartitions(a.Names, b.Names) &&
+ EqualsRefOfLiteral(a.Number, b.Number) &&
+ EqualsTableName(a.TableName, b.TableName) &&
+ EqualsSliceOfRefOfPartitionDefinition(a.Definitions, b.Definitions)
+}
+
+// EqualsPartitions does deep equals between the two objects.
+func EqualsPartitions(a, b Partitions) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsColIdent(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsRefOfRangeCond does deep equals between the two objects.
+func EqualsRefOfRangeCond(a, b *RangeCond) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Operator == b.Operator &&
+ EqualsExpr(a.Left, b.Left) &&
+ EqualsExpr(a.From, b.From) &&
+ EqualsExpr(a.To, b.To)
+}
+
+// EqualsRefOfRelease does deep equals between the two objects.
+func EqualsRefOfRelease(a, b *Release) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsColIdent(a.Name, b.Name)
+}
+
+// EqualsRefOfRenameIndex does deep equals between the two objects.
+func EqualsRefOfRenameIndex(a, b *RenameIndex) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsColIdent(a.OldName, b.OldName) &&
+ EqualsColIdent(a.NewName, b.NewName)
+}
+
+// EqualsRefOfRenameTable does deep equals between the two objects.
+func EqualsRefOfRenameTable(a, b *RenameTable) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsSliceOfRefOfRenameTablePair(a.TablePairs, b.TablePairs)
+}
+
+// EqualsRefOfRenameTableName does deep equals between the two objects.
+func EqualsRefOfRenameTableName(a, b *RenameTableName) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsTableName(a.Table, b.Table)
+}
+
+// EqualsRefOfRevertMigration does deep equals between the two objects.
+func EqualsRefOfRevertMigration(a, b *RevertMigration) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.UUID == b.UUID
+}
+
+// EqualsRefOfRollback does deep equals between the two objects.
+func EqualsRefOfRollback(a, b *Rollback) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return true
+}
+
+// EqualsRefOfSRollback does deep equals between the two objects.
+func EqualsRefOfSRollback(a, b *SRollback) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsColIdent(a.Name, b.Name)
+}
+
+// EqualsRefOfSavepoint does deep equals between the two objects.
+func EqualsRefOfSavepoint(a, b *Savepoint) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsColIdent(a.Name, b.Name)
+}
+
+// EqualsRefOfSelect does deep equals between the two objects.
+func EqualsRefOfSelect(a, b *Select) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Distinct == b.Distinct &&
+ a.StraightJoinHint == b.StraightJoinHint &&
+ a.SQLCalcFoundRows == b.SQLCalcFoundRows &&
+ EqualsRefOfBool(a.Cache, b.Cache) &&
+ EqualsComments(a.Comments, b.Comments) &&
+ EqualsSelectExprs(a.SelectExprs, b.SelectExprs) &&
+ EqualsTableExprs(a.From, b.From) &&
+ EqualsRefOfWhere(a.Where, b.Where) &&
+ EqualsGroupBy(a.GroupBy, b.GroupBy) &&
+ EqualsRefOfWhere(a.Having, b.Having) &&
+ EqualsOrderBy(a.OrderBy, b.OrderBy) &&
+ EqualsRefOfLimit(a.Limit, b.Limit) &&
+ a.Lock == b.Lock &&
+ EqualsRefOfSelectInto(a.Into, b.Into)
+}
+
+// EqualsSelectExprs does deep equals between the two objects.
+func EqualsSelectExprs(a, b SelectExprs) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsSelectExpr(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsRefOfSelectInto does deep equals between the two objects.
+func EqualsRefOfSelectInto(a, b *SelectInto) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.FileName == b.FileName &&
+ a.Charset == b.Charset &&
+ a.FormatOption == b.FormatOption &&
+ a.ExportOption == b.ExportOption &&
+ a.Manifest == b.Manifest &&
+ a.Overwrite == b.Overwrite &&
+ a.Type == b.Type
+}
+
+// EqualsRefOfSet does deep equals between the two objects.
+func EqualsRefOfSet(a, b *Set) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsComments(a.Comments, b.Comments) &&
+ EqualsSetExprs(a.Exprs, b.Exprs)
+}
+
+// EqualsRefOfSetExpr does deep equals between the two objects.
+func EqualsRefOfSetExpr(a, b *SetExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Scope == b.Scope &&
+ EqualsColIdent(a.Name, b.Name) &&
+ EqualsExpr(a.Expr, b.Expr)
+}
+
+// EqualsSetExprs does deep equals between the two objects.
+func EqualsSetExprs(a, b SetExprs) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsRefOfSetExpr(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsRefOfSetTransaction does deep equals between the two objects.
+func EqualsRefOfSetTransaction(a, b *SetTransaction) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsSQLNode(a.SQLNode, b.SQLNode) &&
+ EqualsComments(a.Comments, b.Comments) &&
+ a.Scope == b.Scope &&
+ EqualsSliceOfCharacteristic(a.Characteristics, b.Characteristics)
+}
+
+// EqualsRefOfShow does deep equals between the two objects.
+func EqualsRefOfShow(a, b *Show) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsShowInternal(a.Internal, b.Internal)
+}
+
+// EqualsRefOfShowBasic does deep equals between the two objects.
+func EqualsRefOfShowBasic(a, b *ShowBasic) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Full == b.Full &&
+ a.Command == b.Command &&
+ EqualsTableName(a.Tbl, b.Tbl) &&
+ EqualsTableIdent(a.DbName, b.DbName) &&
+ EqualsRefOfShowFilter(a.Filter, b.Filter)
+}
+
+// EqualsRefOfShowCreate does deep equals between the two objects.
+func EqualsRefOfShowCreate(a, b *ShowCreate) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Command == b.Command &&
+ EqualsTableName(a.Op, b.Op)
+}
+
+// EqualsRefOfShowFilter does deep equals between the two objects.
+func EqualsRefOfShowFilter(a, b *ShowFilter) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Like == b.Like &&
+ EqualsExpr(a.Filter, b.Filter)
+}
+
+// EqualsRefOfShowLegacy does deep equals between the two objects.
+func EqualsRefOfShowLegacy(a, b *ShowLegacy) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Extended == b.Extended &&
+ a.Type == b.Type &&
+ EqualsTableName(a.OnTable, b.OnTable) &&
+ EqualsTableName(a.Table, b.Table) &&
+ EqualsRefOfShowTablesOpt(a.ShowTablesOpt, b.ShowTablesOpt) &&
+ a.Scope == b.Scope &&
+ EqualsExpr(a.ShowCollationFilterOpt, b.ShowCollationFilterOpt)
+}
+
+// EqualsRefOfStarExpr does deep equals between the two objects.
+func EqualsRefOfStarExpr(a, b *StarExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsTableName(a.TableName, b.TableName)
+}
+
+// EqualsRefOfStream does deep equals between the two objects.
+func EqualsRefOfStream(a, b *Stream) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsComments(a.Comments, b.Comments) &&
+ EqualsSelectExpr(a.SelectExpr, b.SelectExpr) &&
+ EqualsTableName(a.Table, b.Table)
+}
+
+// EqualsRefOfSubquery does deep equals between the two objects.
+func EqualsRefOfSubquery(a, b *Subquery) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsSelectStatement(a.Select, b.Select)
+}
+
+// EqualsRefOfSubstrExpr does deep equals between the two objects.
+func EqualsRefOfSubstrExpr(a, b *SubstrExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsRefOfColName(a.Name, b.Name) &&
+ EqualsRefOfLiteral(a.StrVal, b.StrVal) &&
+ EqualsExpr(a.From, b.From) &&
+ EqualsExpr(a.To, b.To)
+}
+
+// EqualsTableExprs does deep equals between the two objects.
+func EqualsTableExprs(a, b TableExprs) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsTableExpr(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsTableIdent does deep equals between the two objects.
+func EqualsTableIdent(a, b TableIdent) bool {
+ return a.v == b.v
+}
+
+// EqualsTableName does deep equals between the two objects.
+func EqualsTableName(a, b TableName) bool {
+ return EqualsTableIdent(a.Name, b.Name) &&
+ EqualsTableIdent(a.Qualifier, b.Qualifier)
+}
+
+// EqualsTableNames does deep equals between the two objects.
+func EqualsTableNames(a, b TableNames) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsTableName(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsTableOptions does deep equals between the two objects.
+func EqualsTableOptions(a, b TableOptions) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsRefOfTableOption(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsRefOfTableSpec does deep equals between the two objects.
+func EqualsRefOfTableSpec(a, b *TableSpec) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsSliceOfRefOfColumnDefinition(a.Columns, b.Columns) &&
+ EqualsSliceOfRefOfIndexDefinition(a.Indexes, b.Indexes) &&
+ EqualsSliceOfRefOfConstraintDefinition(a.Constraints, b.Constraints) &&
+ EqualsTableOptions(a.Options, b.Options)
+}
+
+// EqualsRefOfTablespaceOperation does deep equals between the two objects.
+func EqualsRefOfTablespaceOperation(a, b *TablespaceOperation) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Import == b.Import
+}
+
+// EqualsRefOfTimestampFuncExpr does deep equals between the two objects.
+func EqualsRefOfTimestampFuncExpr(a, b *TimestampFuncExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Name == b.Name &&
+ a.Unit == b.Unit &&
+ EqualsExpr(a.Expr1, b.Expr1) &&
+ EqualsExpr(a.Expr2, b.Expr2)
+}
+
+// EqualsRefOfTruncateTable does deep equals between the two objects.
+func EqualsRefOfTruncateTable(a, b *TruncateTable) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsTableName(a.Table, b.Table)
+}
+
+// EqualsRefOfUnaryExpr does deep equals between the two objects.
+func EqualsRefOfUnaryExpr(a, b *UnaryExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Operator == b.Operator &&
+ EqualsExpr(a.Expr, b.Expr)
+}
+
+// EqualsRefOfUnion does deep equals between the two objects.
+func EqualsRefOfUnion(a, b *Union) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsSelectStatement(a.FirstStatement, b.FirstStatement) &&
+ EqualsSliceOfRefOfUnionSelect(a.UnionSelects, b.UnionSelects) &&
+ EqualsOrderBy(a.OrderBy, b.OrderBy) &&
+ EqualsRefOfLimit(a.Limit, b.Limit) &&
+ a.Lock == b.Lock
+}
+
+// EqualsRefOfUnionSelect does deep equals between the two objects.
+func EqualsRefOfUnionSelect(a, b *UnionSelect) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Distinct == b.Distinct &&
+ EqualsSelectStatement(a.Statement, b.Statement)
+}
+
+// EqualsRefOfUnlockTables does deep equals between the two objects.
+func EqualsRefOfUnlockTables(a, b *UnlockTables) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return true
+}
+
+// EqualsRefOfUpdate does deep equals between the two objects.
+func EqualsRefOfUpdate(a, b *Update) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsComments(a.Comments, b.Comments) &&
+ a.Ignore == b.Ignore &&
+ EqualsTableExprs(a.TableExprs, b.TableExprs) &&
+ EqualsUpdateExprs(a.Exprs, b.Exprs) &&
+ EqualsRefOfWhere(a.Where, b.Where) &&
+ EqualsOrderBy(a.OrderBy, b.OrderBy) &&
+ EqualsRefOfLimit(a.Limit, b.Limit)
+}
+
+// EqualsRefOfUpdateExpr does deep equals between the two objects.
+func EqualsRefOfUpdateExpr(a, b *UpdateExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsRefOfColName(a.Name, b.Name) &&
+ EqualsExpr(a.Expr, b.Expr)
+}
+
+// EqualsUpdateExprs does deep equals between the two objects.
+func EqualsUpdateExprs(a, b UpdateExprs) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsRefOfUpdateExpr(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsRefOfUse does deep equals between the two objects.
+func EqualsRefOfUse(a, b *Use) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsTableIdent(a.DBName, b.DBName)
+}
+
+// EqualsRefOfVStream does deep equals between the two objects.
+func EqualsRefOfVStream(a, b *VStream) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsComments(a.Comments, b.Comments) &&
+ EqualsSelectExpr(a.SelectExpr, b.SelectExpr) &&
+ EqualsTableName(a.Table, b.Table) &&
+ EqualsRefOfWhere(a.Where, b.Where) &&
+ EqualsRefOfLimit(a.Limit, b.Limit)
+}
+
+// EqualsValTuple does deep equals between the two objects.
+func EqualsValTuple(a, b ValTuple) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsExpr(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsRefOfValidation does deep equals between the two objects.
+func EqualsRefOfValidation(a, b *Validation) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.With == b.With
+}
+
+// EqualsValues does deep equals between the two objects.
+func EqualsValues(a, b Values) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsValTuple(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsRefOfValuesFuncExpr does deep equals between the two objects.
+func EqualsRefOfValuesFuncExpr(a, b *ValuesFuncExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsRefOfColName(a.Name, b.Name)
+}
+
+// EqualsVindexParam does deep equals between the two objects.
+func EqualsVindexParam(a, b VindexParam) bool {
+ return a.Val == b.Val &&
+ EqualsColIdent(a.Key, b.Key)
+}
+
+// EqualsRefOfVindexSpec does deep equals between the two objects.
+func EqualsRefOfVindexSpec(a, b *VindexSpec) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsColIdent(a.Name, b.Name) &&
+ EqualsColIdent(a.Type, b.Type) &&
+ EqualsSliceOfVindexParam(a.Params, b.Params)
+}
+
+// EqualsRefOfWhen does deep equals between the two objects.
+func EqualsRefOfWhen(a, b *When) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsExpr(a.Cond, b.Cond) &&
+ EqualsExpr(a.Val, b.Val)
+}
+
+// EqualsRefOfWhere does deep equals between the two objects.
+func EqualsRefOfWhere(a, b *Where) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Type == b.Type &&
+ EqualsExpr(a.Expr, b.Expr)
+}
+
+// EqualsRefOfXorExpr does deep equals between the two objects.
+func EqualsRefOfXorExpr(a, b *XorExpr) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsExpr(a.Left, b.Left) &&
+ EqualsExpr(a.Right, b.Right)
+}
+
+// EqualsAlterOption does deep equals between the two objects.
+func EqualsAlterOption(inA, inB AlterOption) bool {
+ if inA == nil && inB == nil {
+ return true
+ }
+ if inA == nil || inB == nil {
+ return false
+ }
+ switch a := inA.(type) {
+ case *AddColumns:
+ b, ok := inB.(*AddColumns)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAddColumns(a, b)
+ case *AddConstraintDefinition:
+ b, ok := inB.(*AddConstraintDefinition)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAddConstraintDefinition(a, b)
+ case *AddIndexDefinition:
+ b, ok := inB.(*AddIndexDefinition)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAddIndexDefinition(a, b)
+ case AlgorithmValue:
+ b, ok := inB.(AlgorithmValue)
+ if !ok {
+ return false
+ }
+ return a == b
+ case *AlterCharset:
+ b, ok := inB.(*AlterCharset)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAlterCharset(a, b)
+ case *AlterColumn:
+ b, ok := inB.(*AlterColumn)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAlterColumn(a, b)
+ case *ChangeColumn:
+ b, ok := inB.(*ChangeColumn)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfChangeColumn(a, b)
+ case *DropColumn:
+ b, ok := inB.(*DropColumn)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfDropColumn(a, b)
+ case *DropKey:
+ b, ok := inB.(*DropKey)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfDropKey(a, b)
+ case *Force:
+ b, ok := inB.(*Force)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfForce(a, b)
+ case *KeyState:
+ b, ok := inB.(*KeyState)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfKeyState(a, b)
+ case *LockOption:
+ b, ok := inB.(*LockOption)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfLockOption(a, b)
+ case *ModifyColumn:
+ b, ok := inB.(*ModifyColumn)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfModifyColumn(a, b)
+ case *OrderByOption:
+ b, ok := inB.(*OrderByOption)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfOrderByOption(a, b)
+ case *RenameIndex:
+ b, ok := inB.(*RenameIndex)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfRenameIndex(a, b)
+ case *RenameTableName:
+ b, ok := inB.(*RenameTableName)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfRenameTableName(a, b)
+ case TableOptions:
+ b, ok := inB.(TableOptions)
+ if !ok {
+ return false
+ }
+ return EqualsTableOptions(a, b)
+ case *TablespaceOperation:
+ b, ok := inB.(*TablespaceOperation)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfTablespaceOperation(a, b)
+ case *Validation:
+ b, ok := inB.(*Validation)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfValidation(a, b)
+ default:
+ // this should never happen
+ return false
+ }
+}
+
+// EqualsCharacteristic does deep equals between the two objects.
+func EqualsCharacteristic(inA, inB Characteristic) bool {
+ if inA == nil && inB == nil {
+ return true
+ }
+ if inA == nil || inB == nil {
+ return false
+ }
+ switch a := inA.(type) {
+ case AccessMode:
+ b, ok := inB.(AccessMode)
+ if !ok {
+ return false
+ }
+ return a == b
+ case IsolationLevel:
+ b, ok := inB.(IsolationLevel)
+ if !ok {
+ return false
+ }
+ return a == b
+ default:
+ // this should never happen
+ return false
+ }
+}
+
+// EqualsColTuple does deep equals between the two objects.
+func EqualsColTuple(inA, inB ColTuple) bool {
+ if inA == nil && inB == nil {
+ return true
+ }
+ if inA == nil || inB == nil {
+ return false
+ }
+ switch a := inA.(type) {
+ case ListArg:
+ b, ok := inB.(ListArg)
+ if !ok {
+ return false
+ }
+ return EqualsListArg(a, b)
+ case *Subquery:
+ b, ok := inB.(*Subquery)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfSubquery(a, b)
+ case ValTuple:
+ b, ok := inB.(ValTuple)
+ if !ok {
+ return false
+ }
+ return EqualsValTuple(a, b)
+ default:
+ // this should never happen
+ return false
+ }
+}
+
+// EqualsConstraintInfo does deep equals between the two objects.
+func EqualsConstraintInfo(inA, inB ConstraintInfo) bool {
+ if inA == nil && inB == nil {
+ return true
+ }
+ if inA == nil || inB == nil {
+ return false
+ }
+ switch a := inA.(type) {
+ case *CheckConstraintDefinition:
+ b, ok := inB.(*CheckConstraintDefinition)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfCheckConstraintDefinition(a, b)
+ case *ForeignKeyDefinition:
+ b, ok := inB.(*ForeignKeyDefinition)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfForeignKeyDefinition(a, b)
+ default:
+ // this should never happen
+ return false
+ }
+}
+
+// EqualsDBDDLStatement does deep equals between the two objects.
+func EqualsDBDDLStatement(inA, inB DBDDLStatement) bool {
+ if inA == nil && inB == nil {
+ return true
+ }
+ if inA == nil || inB == nil {
+ return false
+ }
+ switch a := inA.(type) {
+ case *AlterDatabase:
+ b, ok := inB.(*AlterDatabase)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAlterDatabase(a, b)
+ case *CreateDatabase:
+ b, ok := inB.(*CreateDatabase)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfCreateDatabase(a, b)
+ case *DropDatabase:
+ b, ok := inB.(*DropDatabase)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfDropDatabase(a, b)
+ default:
+ // this should never happen
+ return false
+ }
+}
+
+// EqualsDDLStatement does deep equals between the two objects.
+func EqualsDDLStatement(inA, inB DDLStatement) bool {
+ if inA == nil && inB == nil {
+ return true
+ }
+ if inA == nil || inB == nil {
+ return false
+ }
+ switch a := inA.(type) {
+ case *AlterTable:
+ b, ok := inB.(*AlterTable)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAlterTable(a, b)
+ case *AlterView:
+ b, ok := inB.(*AlterView)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAlterView(a, b)
+ case *CreateTable:
+ b, ok := inB.(*CreateTable)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfCreateTable(a, b)
+ case *CreateView:
+ b, ok := inB.(*CreateView)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfCreateView(a, b)
+ case *DropTable:
+ b, ok := inB.(*DropTable)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfDropTable(a, b)
+ case *DropView:
+ b, ok := inB.(*DropView)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfDropView(a, b)
+ case *RenameTable:
+ b, ok := inB.(*RenameTable)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfRenameTable(a, b)
+ case *TruncateTable:
+ b, ok := inB.(*TruncateTable)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfTruncateTable(a, b)
+ default:
+ // this should never happen
+ return false
+ }
+}
+
+// EqualsExplain does deep equals between the two objects.
+func EqualsExplain(inA, inB Explain) bool {
+ if inA == nil && inB == nil {
+ return true
+ }
+ if inA == nil || inB == nil {
+ return false
+ }
+ switch a := inA.(type) {
+ case *ExplainStmt:
+ b, ok := inB.(*ExplainStmt)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfExplainStmt(a, b)
+ case *ExplainTab:
+ b, ok := inB.(*ExplainTab)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfExplainTab(a, b)
+ default:
+ // this should never happen
+ return false
+ }
+}
+
+// EqualsExpr does deep equals between the two objects.
+func EqualsExpr(inA, inB Expr) bool {
+ if inA == nil && inB == nil {
+ return true
+ }
+ if inA == nil || inB == nil {
+ return false
+ }
+ switch a := inA.(type) {
+ case *AndExpr:
+ b, ok := inB.(*AndExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAndExpr(a, b)
+ case Argument:
+ b, ok := inB.(Argument)
+ if !ok {
+ return false
+ }
+ return a == b
+ case *BinaryExpr:
+ b, ok := inB.(*BinaryExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfBinaryExpr(a, b)
+ case BoolVal:
+ b, ok := inB.(BoolVal)
+ if !ok {
+ return false
+ }
+ return a == b
+ case *CaseExpr:
+ b, ok := inB.(*CaseExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfCaseExpr(a, b)
+ case *ColName:
+ b, ok := inB.(*ColName)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfColName(a, b)
+ case *CollateExpr:
+ b, ok := inB.(*CollateExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfCollateExpr(a, b)
+ case *ComparisonExpr:
+ b, ok := inB.(*ComparisonExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfComparisonExpr(a, b)
+ case *ConvertExpr:
+ b, ok := inB.(*ConvertExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfConvertExpr(a, b)
+ case *ConvertUsingExpr:
+ b, ok := inB.(*ConvertUsingExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfConvertUsingExpr(a, b)
+ case *CurTimeFuncExpr:
+ b, ok := inB.(*CurTimeFuncExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfCurTimeFuncExpr(a, b)
+ case *Default:
+ b, ok := inB.(*Default)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfDefault(a, b)
+ case *ExistsExpr:
+ b, ok := inB.(*ExistsExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfExistsExpr(a, b)
+ case *FuncExpr:
+ b, ok := inB.(*FuncExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfFuncExpr(a, b)
+ case *GroupConcatExpr:
+ b, ok := inB.(*GroupConcatExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfGroupConcatExpr(a, b)
+ case *IntervalExpr:
+ b, ok := inB.(*IntervalExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfIntervalExpr(a, b)
+ case *IsExpr:
+ b, ok := inB.(*IsExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfIsExpr(a, b)
+ case ListArg:
+ b, ok := inB.(ListArg)
+ if !ok {
+ return false
+ }
+ return EqualsListArg(a, b)
+ case *Literal:
+ b, ok := inB.(*Literal)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfLiteral(a, b)
+ case *MatchExpr:
+ b, ok := inB.(*MatchExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfMatchExpr(a, b)
+ case *NotExpr:
+ b, ok := inB.(*NotExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfNotExpr(a, b)
+ case *NullVal:
+ b, ok := inB.(*NullVal)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfNullVal(a, b)
+ case *OrExpr:
+ b, ok := inB.(*OrExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfOrExpr(a, b)
+ case *RangeCond:
+ b, ok := inB.(*RangeCond)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfRangeCond(a, b)
+ case *Subquery:
+ b, ok := inB.(*Subquery)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfSubquery(a, b)
+ case *SubstrExpr:
+ b, ok := inB.(*SubstrExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfSubstrExpr(a, b)
+ case *TimestampFuncExpr:
+ b, ok := inB.(*TimestampFuncExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfTimestampFuncExpr(a, b)
+ case *UnaryExpr:
+ b, ok := inB.(*UnaryExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfUnaryExpr(a, b)
+ case ValTuple:
+ b, ok := inB.(ValTuple)
+ if !ok {
+ return false
+ }
+ return EqualsValTuple(a, b)
+ case *ValuesFuncExpr:
+ b, ok := inB.(*ValuesFuncExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfValuesFuncExpr(a, b)
+ case *XorExpr:
+ b, ok := inB.(*XorExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfXorExpr(a, b)
+ default:
+ // this should never happen
+ return false
+ }
+}
+
+// EqualsInsertRows does deep equals between the two objects.
+func EqualsInsertRows(inA, inB InsertRows) bool {
+ if inA == nil && inB == nil {
+ return true
+ }
+ if inA == nil || inB == nil {
+ return false
+ }
+ switch a := inA.(type) {
+ case *ParenSelect:
+ b, ok := inB.(*ParenSelect)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfParenSelect(a, b)
+ case *Select:
+ b, ok := inB.(*Select)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfSelect(a, b)
+ case *Union:
+ b, ok := inB.(*Union)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfUnion(a, b)
+ case Values:
+ b, ok := inB.(Values)
+ if !ok {
+ return false
+ }
+ return EqualsValues(a, b)
+ default:
+ // this should never happen
+ return false
+ }
+}
+
+// EqualsSelectExpr does deep equals between the two objects.
+func EqualsSelectExpr(inA, inB SelectExpr) bool {
+ if inA == nil && inB == nil {
+ return true
+ }
+ if inA == nil || inB == nil {
+ return false
+ }
+ switch a := inA.(type) {
+ case *AliasedExpr:
+ b, ok := inB.(*AliasedExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAliasedExpr(a, b)
+ case *Nextval:
+ b, ok := inB.(*Nextval)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfNextval(a, b)
+ case *StarExpr:
+ b, ok := inB.(*StarExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfStarExpr(a, b)
+ default:
+ // this should never happen
+ return false
+ }
+}
+
+// EqualsSelectStatement does deep equals between the two objects.
+func EqualsSelectStatement(inA, inB SelectStatement) bool {
+ if inA == nil && inB == nil {
+ return true
+ }
+ if inA == nil || inB == nil {
+ return false
+ }
+ switch a := inA.(type) {
+ case *ParenSelect:
+ b, ok := inB.(*ParenSelect)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfParenSelect(a, b)
+ case *Select:
+ b, ok := inB.(*Select)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfSelect(a, b)
+ case *Union:
+ b, ok := inB.(*Union)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfUnion(a, b)
+ default:
+ // this should never happen
+ return false
+ }
+}
+
+// EqualsShowInternal does deep equals between the two objects.
+func EqualsShowInternal(inA, inB ShowInternal) bool {
+ if inA == nil && inB == nil {
+ return true
+ }
+ if inA == nil || inB == nil {
+ return false
+ }
+ switch a := inA.(type) {
+ case *ShowBasic:
+ b, ok := inB.(*ShowBasic)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfShowBasic(a, b)
+ case *ShowCreate:
+ b, ok := inB.(*ShowCreate)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfShowCreate(a, b)
+ case *ShowLegacy:
+ b, ok := inB.(*ShowLegacy)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfShowLegacy(a, b)
+ default:
+ // this should never happen
+ return false
+ }
+}
+
+// EqualsSimpleTableExpr does deep equals between the two objects.
+func EqualsSimpleTableExpr(inA, inB SimpleTableExpr) bool {
+ if inA == nil && inB == nil {
+ return true
+ }
+ if inA == nil || inB == nil {
+ return false
+ }
+ switch a := inA.(type) {
+ case *DerivedTable:
+ b, ok := inB.(*DerivedTable)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfDerivedTable(a, b)
+ case TableName:
+ b, ok := inB.(TableName)
+ if !ok {
+ return false
+ }
+ return EqualsTableName(a, b)
+ default:
+ // this should never happen
+ return false
+ }
+}
+
+// EqualsStatement does deep equals between the two objects.
+func EqualsStatement(inA, inB Statement) bool {
+ if inA == nil && inB == nil {
+ return true
+ }
+ if inA == nil || inB == nil {
+ return false
+ }
+ switch a := inA.(type) {
+ case *AlterDatabase:
+ b, ok := inB.(*AlterDatabase)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAlterDatabase(a, b)
+ case *AlterMigration:
+ b, ok := inB.(*AlterMigration)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAlterMigration(a, b)
+ case *AlterTable:
+ b, ok := inB.(*AlterTable)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAlterTable(a, b)
+ case *AlterView:
+ b, ok := inB.(*AlterView)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAlterView(a, b)
+ case *AlterVschema:
+ b, ok := inB.(*AlterVschema)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAlterVschema(a, b)
+ case *Begin:
+ b, ok := inB.(*Begin)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfBegin(a, b)
+ case *CallProc:
+ b, ok := inB.(*CallProc)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfCallProc(a, b)
+ case *Commit:
+ b, ok := inB.(*Commit)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfCommit(a, b)
+ case *CreateDatabase:
+ b, ok := inB.(*CreateDatabase)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfCreateDatabase(a, b)
+ case *CreateTable:
+ b, ok := inB.(*CreateTable)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfCreateTable(a, b)
+ case *CreateView:
+ b, ok := inB.(*CreateView)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfCreateView(a, b)
+ case *Delete:
+ b, ok := inB.(*Delete)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfDelete(a, b)
+ case *DropDatabase:
+ b, ok := inB.(*DropDatabase)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfDropDatabase(a, b)
+ case *DropTable:
+ b, ok := inB.(*DropTable)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfDropTable(a, b)
+ case *DropView:
+ b, ok := inB.(*DropView)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfDropView(a, b)
+ case *ExplainStmt:
+ b, ok := inB.(*ExplainStmt)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfExplainStmt(a, b)
+ case *ExplainTab:
+ b, ok := inB.(*ExplainTab)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfExplainTab(a, b)
+ case *Flush:
+ b, ok := inB.(*Flush)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfFlush(a, b)
+ case *Insert:
+ b, ok := inB.(*Insert)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfInsert(a, b)
+ case *Load:
+ b, ok := inB.(*Load)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfLoad(a, b)
+ case *LockTables:
+ b, ok := inB.(*LockTables)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfLockTables(a, b)
+ case *OtherAdmin:
+ b, ok := inB.(*OtherAdmin)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfOtherAdmin(a, b)
+ case *OtherRead:
+ b, ok := inB.(*OtherRead)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfOtherRead(a, b)
+ case *ParenSelect:
+ b, ok := inB.(*ParenSelect)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfParenSelect(a, b)
+ case *Release:
+ b, ok := inB.(*Release)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfRelease(a, b)
+ case *RenameTable:
+ b, ok := inB.(*RenameTable)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfRenameTable(a, b)
+ case *RevertMigration:
+ b, ok := inB.(*RevertMigration)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfRevertMigration(a, b)
+ case *Rollback:
+ b, ok := inB.(*Rollback)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfRollback(a, b)
+ case *SRollback:
+ b, ok := inB.(*SRollback)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfSRollback(a, b)
+ case *Savepoint:
+ b, ok := inB.(*Savepoint)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfSavepoint(a, b)
+ case *Select:
+ b, ok := inB.(*Select)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfSelect(a, b)
+ case *Set:
+ b, ok := inB.(*Set)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfSet(a, b)
+ case *SetTransaction:
+ b, ok := inB.(*SetTransaction)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfSetTransaction(a, b)
+ case *Show:
+ b, ok := inB.(*Show)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfShow(a, b)
+ case *Stream:
+ b, ok := inB.(*Stream)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfStream(a, b)
+ case *TruncateTable:
+ b, ok := inB.(*TruncateTable)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfTruncateTable(a, b)
+ case *Union:
+ b, ok := inB.(*Union)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfUnion(a, b)
+ case *UnlockTables:
+ b, ok := inB.(*UnlockTables)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfUnlockTables(a, b)
+ case *Update:
+ b, ok := inB.(*Update)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfUpdate(a, b)
+ case *Use:
+ b, ok := inB.(*Use)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfUse(a, b)
+ case *VStream:
+ b, ok := inB.(*VStream)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfVStream(a, b)
+ default:
+ // this should never happen
+ return false
+ }
+}
+
+// EqualsTableExpr does deep equals between the two objects.
+func EqualsTableExpr(inA, inB TableExpr) bool {
+ if inA == nil && inB == nil {
+ return true
+ }
+ if inA == nil || inB == nil {
+ return false
+ }
+ switch a := inA.(type) {
+ case *AliasedTableExpr:
+ b, ok := inB.(*AliasedTableExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfAliasedTableExpr(a, b)
+ case *JoinTableExpr:
+ b, ok := inB.(*JoinTableExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfJoinTableExpr(a, b)
+ case *ParenTableExpr:
+ b, ok := inB.(*ParenTableExpr)
+ if !ok {
+ return false
+ }
+ return EqualsRefOfParenTableExpr(a, b)
+ default:
+ // this should never happen
+ return false
+ }
+}
+
+// EqualsSliceOfRefOfColumnDefinition does deep equals between the two objects.
+func EqualsSliceOfRefOfColumnDefinition(a, b []*ColumnDefinition) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsRefOfColumnDefinition(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsSliceOfCollateAndCharset does deep equals between the two objects.
+func EqualsSliceOfCollateAndCharset(a, b []CollateAndCharset) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsCollateAndCharset(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsSliceOfAlterOption does deep equals between the two objects.
+func EqualsSliceOfAlterOption(a, b []AlterOption) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsAlterOption(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsSliceOfColIdent does deep equals between the two objects.
+func EqualsSliceOfColIdent(a, b []ColIdent) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsColIdent(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsSliceOfRefOfWhen does deep equals between the two objects.
+func EqualsSliceOfRefOfWhen(a, b []*When) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsRefOfWhen(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsRefOfColIdent does deep equals between the two objects.
+func EqualsRefOfColIdent(a, b *ColIdent) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.val == b.val &&
+ a.lowered == b.lowered &&
+ a.at == b.at
+}
+
+// EqualsColumnType does deep equals between the two objects.
+func EqualsColumnType(a, b ColumnType) bool {
+ return a.Type == b.Type &&
+ a.Unsigned == b.Unsigned &&
+ a.Zerofill == b.Zerofill &&
+ a.Charset == b.Charset &&
+ a.Collate == b.Collate &&
+ EqualsRefOfColumnTypeOptions(a.Options, b.Options) &&
+ EqualsRefOfLiteral(a.Length, b.Length) &&
+ EqualsRefOfLiteral(a.Scale, b.Scale) &&
+ EqualsSliceOfString(a.EnumValues, b.EnumValues)
+}
+
+// EqualsRefOfColumnTypeOptions does deep equals between the two objects.
+func EqualsRefOfColumnTypeOptions(a, b *ColumnTypeOptions) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Autoincrement == b.Autoincrement &&
+ EqualsRefOfBool(a.Null, b.Null) &&
+ EqualsExpr(a.Default, b.Default) &&
+ EqualsExpr(a.OnUpdate, b.OnUpdate) &&
+ EqualsRefOfLiteral(a.Comment, b.Comment) &&
+ a.KeyOpt == b.KeyOpt
+}
+
+// EqualsSliceOfString does deep equals between the two objects.
+func EqualsSliceOfString(a, b []string) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if a[i] != b[i] {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsSliceOfRefOfIndexColumn does deep equals between the two objects.
+func EqualsSliceOfRefOfIndexColumn(a, b []*IndexColumn) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsRefOfIndexColumn(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsSliceOfRefOfIndexOption does deep equals between the two objects.
+func EqualsSliceOfRefOfIndexOption(a, b []*IndexOption) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsRefOfIndexOption(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsRefOfJoinCondition does deep equals between the two objects.
+func EqualsRefOfJoinCondition(a, b *JoinCondition) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsExpr(a.On, b.On) &&
+ EqualsColumns(a.Using, b.Using)
+}
+
+// EqualsTableAndLockTypes does deep equals between the two objects.
+func EqualsTableAndLockTypes(a, b TableAndLockTypes) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsRefOfTableAndLockType(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsSliceOfRefOfPartitionDefinition does deep equals between the two objects.
+func EqualsSliceOfRefOfPartitionDefinition(a, b []*PartitionDefinition) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsRefOfPartitionDefinition(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsSliceOfRefOfRenameTablePair does deep equals between the two objects.
+func EqualsSliceOfRefOfRenameTablePair(a, b []*RenameTablePair) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsRefOfRenameTablePair(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsRefOfBool does deep equals between the two objects.
+func EqualsRefOfBool(a, b *bool) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return *a == *b
+}
+
+// EqualsSliceOfCharacteristic does deep equals between the two objects.
+func EqualsSliceOfCharacteristic(a, b []Characteristic) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsCharacteristic(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsRefOfShowTablesOpt does deep equals between the two objects.
+func EqualsRefOfShowTablesOpt(a, b *ShowTablesOpt) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Full == b.Full &&
+ a.DbName == b.DbName &&
+ EqualsRefOfShowFilter(a.Filter, b.Filter)
+}
+
+// EqualsRefOfTableIdent does deep equals between the two objects.
+func EqualsRefOfTableIdent(a, b *TableIdent) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.v == b.v
+}
+
+// EqualsRefOfTableName does deep equals between the two objects.
+func EqualsRefOfTableName(a, b *TableName) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsTableIdent(a.Name, b.Name) &&
+ EqualsTableIdent(a.Qualifier, b.Qualifier)
+}
+
+// EqualsRefOfTableOption does deep equals between the two objects.
+func EqualsRefOfTableOption(a, b *TableOption) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Name == b.Name &&
+ a.String == b.String &&
+ EqualsRefOfLiteral(a.Value, b.Value) &&
+ EqualsTableNames(a.Tables, b.Tables)
+}
+
+// EqualsSliceOfRefOfIndexDefinition does deep equals between the two objects.
+func EqualsSliceOfRefOfIndexDefinition(a, b []*IndexDefinition) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsRefOfIndexDefinition(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsSliceOfRefOfConstraintDefinition does deep equals between the two objects.
+func EqualsSliceOfRefOfConstraintDefinition(a, b []*ConstraintDefinition) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsRefOfConstraintDefinition(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsSliceOfRefOfUnionSelect does deep equals between the two objects.
+func EqualsSliceOfRefOfUnionSelect(a, b []*UnionSelect) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsRefOfUnionSelect(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsRefOfVindexParam does deep equals between the two objects.
+func EqualsRefOfVindexParam(a, b *VindexParam) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Val == b.Val &&
+ EqualsColIdent(a.Key, b.Key)
+}
+
+// EqualsSliceOfVindexParam does deep equals between the two objects.
+func EqualsSliceOfVindexParam(a, b []VindexParam) bool {
+ if len(a) != len(b) {
+ return false
+ }
+ for i := 0; i < len(a); i++ {
+ if !EqualsVindexParam(a[i], b[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// EqualsCollateAndCharset does deep equals between the two objects.
+func EqualsCollateAndCharset(a, b CollateAndCharset) bool {
+ return a.IsDefault == b.IsDefault &&
+ a.Value == b.Value &&
+ a.Type == b.Type
+}
+
+// EqualsRefOfIndexColumn does deep equals between the two objects.
+func EqualsRefOfIndexColumn(a, b *IndexColumn) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsColIdent(a.Column, b.Column) &&
+ EqualsRefOfLiteral(a.Length, b.Length) &&
+ a.Direction == b.Direction
+}
+
+// EqualsRefOfIndexOption does deep equals between the two objects.
+func EqualsRefOfIndexOption(a, b *IndexOption) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.Name == b.Name &&
+ a.String == b.String &&
+ EqualsRefOfLiteral(a.Value, b.Value)
+}
+
+// EqualsRefOfTableAndLockType does deep equals between the two objects.
+func EqualsRefOfTableAndLockType(a, b *TableAndLockType) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsTableExpr(a.Table, b.Table) &&
+ a.Lock == b.Lock
+}
+
+// EqualsRefOfRenameTablePair does deep equals between the two objects.
+func EqualsRefOfRenameTablePair(a, b *RenameTablePair) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return EqualsTableName(a.FromTable, b.FromTable) &&
+ EqualsTableName(a.ToTable, b.ToTable)
+}
+
+// EqualsRefOfCollateAndCharset does deep equals between the two objects.
+func EqualsRefOfCollateAndCharset(a, b *CollateAndCharset) bool {
+ if a == b {
+ return true
+ }
+ if a == nil || b == nil {
+ return false
+ }
+ return a.IsDefault == b.IsDefault &&
+ a.Value == b.Value &&
+ a.Type == b.Type
+}
diff --git a/go/vt/sqlparser/ast_format.go b/go/vt/sqlparser/ast_format.go
new file mode 100644
index 00000000000..6cfda1e4d06
--- /dev/null
+++ b/go/vt/sqlparser/ast_format.go
@@ -0,0 +1,1669 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package sqlparser
+
+import (
+ "strings"
+
+ "vitess.io/vitess/go/sqltypes"
+)
+
+// Format formats the node.
+func (node *Select) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "select %v", node.Comments)
+
+ if node.Distinct {
+ buf.WriteString(DistinctStr)
+ }
+ if node.Cache != nil {
+ if *node.Cache {
+ buf.WriteString(SQLCacheStr)
+ } else {
+ buf.WriteString(SQLNoCacheStr)
+ }
+ }
+ if node.StraightJoinHint {
+ buf.WriteString(StraightJoinHint)
+ }
+ if node.SQLCalcFoundRows {
+ buf.WriteString(SQLCalcFoundRowsStr)
+ }
+
+ buf.astPrintf(node, "%v from %v%v%v%v%v%v%s%v",
+ node.SelectExprs,
+ node.From, node.Where,
+ node.GroupBy, node.Having, node.OrderBy,
+ node.Limit, node.Lock.ToString(), node.Into)
+}
+
+// Format formats the node.
+func (node *ParenSelect) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "(%v)", node.Select)
+}
+
+// Format formats the node.
+func (node *Union) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "%v", node.FirstStatement)
+ for _, us := range node.UnionSelects {
+ buf.astPrintf(node, "%v", us)
+ }
+ buf.astPrintf(node, "%v%v%s", node.OrderBy, node.Limit, node.Lock.ToString())
+}
+
+// Format formats the node.
+func (node *UnionSelect) Format(buf *TrackedBuffer) {
+ if node.Distinct {
+ buf.astPrintf(node, " %s %v", UnionStr, node.Statement)
+ } else {
+ buf.astPrintf(node, " %s %v", UnionAllStr, node.Statement)
+ }
+}
+
+// Format formats the node.
+func (node *VStream) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "vstream %v%v from %v",
+ node.Comments, node.SelectExpr, node.Table)
+}
+
+// Format formats the node.
+func (node *Stream) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "stream %v%v from %v",
+ node.Comments, node.SelectExpr, node.Table)
+}
+
+// Format formats the node.
+func (node *Insert) Format(buf *TrackedBuffer) {
+ switch node.Action {
+ case InsertAct:
+ buf.astPrintf(node, "%s %v%sinto %v%v%v %v%v",
+ InsertStr,
+ node.Comments, node.Ignore.ToString(),
+ node.Table, node.Partitions, node.Columns, node.Rows, node.OnDup)
+ case ReplaceAct:
+ buf.astPrintf(node, "%s %v%sinto %v%v%v %v%v",
+ ReplaceStr,
+ node.Comments, node.Ignore.ToString(),
+ node.Table, node.Partitions, node.Columns, node.Rows, node.OnDup)
+ default:
+ buf.astPrintf(node, "%s %v%sinto %v%v%v %v%v",
+ "Unkown Insert Action",
+ node.Comments, node.Ignore.ToString(),
+ node.Table, node.Partitions, node.Columns, node.Rows, node.OnDup)
+ }
+
+}
+
+// Format formats the node.
+func (node *Update) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "update %v%s%v set %v%v%v%v",
+ node.Comments, node.Ignore.ToString(), node.TableExprs,
+ node.Exprs, node.Where, node.OrderBy, node.Limit)
+}
+
+// Format formats the node.
+func (node *Delete) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "delete %v", node.Comments)
+ if node.Ignore {
+ buf.WriteString("ignore ")
+ }
+ if node.Targets != nil {
+ buf.astPrintf(node, "%v ", node.Targets)
+ }
+ buf.astPrintf(node, "from %v%v%v%v%v", node.TableExprs, node.Partitions, node.Where, node.OrderBy, node.Limit)
+}
+
+// Format formats the node.
+func (node *Set) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "set %v%v", node.Comments, node.Exprs)
+}
+
+// Format formats the node.
+func (node *SetTransaction) Format(buf *TrackedBuffer) {
+ if node.Scope == ImplicitScope {
+ buf.astPrintf(node, "set %vtransaction ", node.Comments)
+ } else {
+ buf.astPrintf(node, "set %v%s transaction ", node.Comments, node.Scope.ToString())
+ }
+
+ for i, char := range node.Characteristics {
+ if i > 0 {
+ buf.WriteString(", ")
+ }
+ buf.astPrintf(node, "%v", char)
+ }
+}
+
+// Format formats the node.
+func (node *DropDatabase) Format(buf *TrackedBuffer) {
+ exists := ""
+ if node.IfExists {
+ exists = "if exists "
+ }
+ buf.astPrintf(node, "%s database %v%s%v", DropStr, node.Comments, exists, node.DBName)
+}
+
+// Format formats the node.
+func (node *Flush) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "%s", FlushStr)
+ if node.IsLocal {
+ buf.WriteString(" local")
+ }
+ if len(node.FlushOptions) != 0 {
+ prefix := " "
+ for _, option := range node.FlushOptions {
+ buf.astPrintf(node, "%s%s", prefix, option)
+ prefix = ", "
+ }
+ } else {
+ buf.WriteString(" tables")
+ if len(node.TableNames) != 0 {
+ buf.astPrintf(node, " %v", node.TableNames)
+ }
+ if node.ForExport {
+ buf.WriteString(" for export")
+ }
+ if node.WithLock {
+ buf.WriteString(" with read lock")
+ }
+ }
+}
+
+// Format formats the node.
+func (node *AlterVschema) Format(buf *TrackedBuffer) {
+ switch node.Action {
+ case CreateVindexDDLAction:
+ buf.astPrintf(node, "alter vschema create vindex %v %v", node.Table, node.VindexSpec)
+ case DropVindexDDLAction:
+ buf.astPrintf(node, "alter vschema drop vindex %v", node.Table)
+ case AddVschemaTableDDLAction:
+ buf.astPrintf(node, "alter vschema add table %v", node.Table)
+ case DropVschemaTableDDLAction:
+ buf.astPrintf(node, "alter vschema drop table %v", node.Table)
+ case AddColVindexDDLAction:
+ buf.astPrintf(node, "alter vschema on %v add vindex %v (", node.Table, node.VindexSpec.Name)
+ for i, col := range node.VindexCols {
+ if i != 0 {
+ buf.astPrintf(node, ", %v", col)
+ } else {
+ buf.astPrintf(node, "%v", col)
+ }
+ }
+ buf.astPrintf(node, ")")
+ if node.VindexSpec.Type.String() != "" {
+ buf.astPrintf(node, " %v", node.VindexSpec)
+ }
+ case DropColVindexDDLAction:
+ buf.astPrintf(node, "alter vschema on %v drop vindex %v", node.Table, node.VindexSpec.Name)
+ case AddSequenceDDLAction:
+ buf.astPrintf(node, "alter vschema add sequence %v", node.Table)
+ case AddAutoIncDDLAction:
+ buf.astPrintf(node, "alter vschema on %v add auto_increment %v", node.Table, node.AutoIncSpec)
+ default:
+ buf.astPrintf(node, "%s table %v", node.Action.ToString(), node.Table)
+ }
+}
+
+// Format formats the node.
+func (node *AlterMigration) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "alter vitess_migration")
+ if node.UUID != "" {
+ buf.astPrintf(node, " '%s'", node.UUID)
+ }
+ var alterType string
+ switch node.Type {
+ case RetryMigrationType:
+ alterType = "retry"
+ case CompleteMigrationType:
+ alterType = "complete"
+ case CancelMigrationType:
+ alterType = "cancel"
+ case CancelAllMigrationType:
+ alterType = "cancel all"
+ }
+ buf.astPrintf(node, " %s", alterType)
+}
+
+// Format formats the node.
+func (node *RevertMigration) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "revert vitess_migration '%s'", node.UUID)
+}
+
+// Format formats the node.
+func (node *OptLike) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "like %v", node.LikeTable)
+}
+
+// Format formats the node.
+func (node *PartitionSpec) Format(buf *TrackedBuffer) {
+ switch node.Action {
+ case ReorganizeAction:
+ buf.astPrintf(node, "%s ", ReorganizeStr)
+ for i, n := range node.Names {
+ if i != 0 {
+ buf.WriteString(", ")
+ }
+ buf.astPrintf(node, "%v", n)
+ }
+ buf.WriteString(" into (")
+ for i, pd := range node.Definitions {
+ if i != 0 {
+ buf.WriteString(", ")
+ }
+ buf.astPrintf(node, "%v", pd)
+ }
+ buf.astPrintf(node, ")")
+ case AddAction:
+ buf.astPrintf(node, "%s (%v)", AddStr, node.Definitions[0])
+ case DropAction:
+ buf.astPrintf(node, "%s ", DropPartitionStr)
+ for i, n := range node.Names {
+ if i != 0 {
+ buf.WriteString(", ")
+ }
+ buf.astPrintf(node, "%v", n)
+ }
+ case DiscardAction:
+ buf.astPrintf(node, "%s ", DiscardStr)
+ if node.IsAll {
+ buf.WriteString("all")
+ } else {
+ prefix := ""
+ for _, n := range node.Names {
+ buf.astPrintf(node, "%s%v", prefix, n)
+ prefix = ", "
+ }
+ }
+ buf.WriteString(" tablespace")
+ case ImportAction:
+ buf.astPrintf(node, "%s ", ImportStr)
+ if node.IsAll {
+ buf.WriteString("all")
+ } else {
+ prefix := ""
+ for _, n := range node.Names {
+ buf.astPrintf(node, "%s%v", prefix, n)
+ prefix = ", "
+ }
+ }
+ buf.WriteString(" tablespace")
+ case TruncateAction:
+ buf.astPrintf(node, "%s ", TruncatePartitionStr)
+ if node.IsAll {
+ buf.WriteString("all")
+ } else {
+ prefix := ""
+ for _, n := range node.Names {
+ buf.astPrintf(node, "%s%v", prefix, n)
+ prefix = ", "
+ }
+ }
+ case CoalesceAction:
+ buf.astPrintf(node, "%s %v", CoalesceStr, node.Number)
+ case ExchangeAction:
+ buf.astPrintf(node, "%s %v with table %v", ExchangeStr, node.Names[0], node.TableName)
+ if node.WithoutValidation {
+ buf.WriteString(" without validation")
+ }
+ case AnalyzeAction:
+ buf.astPrintf(node, "%s ", AnalyzePartitionStr)
+ if node.IsAll {
+ buf.WriteString("all")
+ } else {
+ prefix := ""
+ for _, n := range node.Names {
+ buf.astPrintf(node, "%s%v", prefix, n)
+ prefix = ", "
+ }
+ }
+ case CheckAction:
+ buf.astPrintf(node, "%s ", CheckStr)
+ if node.IsAll {
+ buf.WriteString("all")
+ } else {
+ prefix := ""
+ for _, n := range node.Names {
+ buf.astPrintf(node, "%s%v", prefix, n)
+ prefix = ", "
+ }
+ }
+ case OptimizeAction:
+ buf.astPrintf(node, "%s ", OptimizeStr)
+ if node.IsAll {
+ buf.WriteString("all")
+ } else {
+ prefix := ""
+ for _, n := range node.Names {
+ buf.astPrintf(node, "%s%v", prefix, n)
+ prefix = ", "
+ }
+ }
+ case RebuildAction:
+ buf.astPrintf(node, "%s ", RebuildStr)
+ if node.IsAll {
+ buf.WriteString("all")
+ } else {
+ prefix := ""
+ for _, n := range node.Names {
+ buf.astPrintf(node, "%s%v", prefix, n)
+ prefix = ", "
+ }
+ }
+ case RepairAction:
+ buf.astPrintf(node, "%s ", RepairStr)
+ if node.IsAll {
+ buf.WriteString("all")
+ } else {
+ prefix := ""
+ for _, n := range node.Names {
+ buf.astPrintf(node, "%s%v", prefix, n)
+ prefix = ", "
+ }
+ }
+ case RemoveAction:
+ buf.WriteString(RemoveStr)
+ case UpgradeAction:
+ buf.WriteString(UpgradeStr)
+ default:
+ panic("unimplemented")
+ }
+}
+
+// Format formats the node
+func (node *PartitionDefinition) Format(buf *TrackedBuffer) {
+ if !node.Maxvalue {
+ buf.astPrintf(node, "partition %v values less than (%v)", node.Name, node.Limit)
+ } else {
+ buf.astPrintf(node, "partition %v values less than (maxvalue)", node.Name)
+ }
+}
+
+// Format formats the node.
+func (ts *TableSpec) Format(buf *TrackedBuffer) {
+ buf.astPrintf(ts, "(\n")
+ for i, col := range ts.Columns {
+ if i == 0 {
+ buf.astPrintf(ts, "\t%v", col)
+ } else {
+ buf.astPrintf(ts, ",\n\t%v", col)
+ }
+ }
+ for _, idx := range ts.Indexes {
+ buf.astPrintf(ts, ",\n\t%v", idx)
+ }
+ for _, c := range ts.Constraints {
+ buf.astPrintf(ts, ",\n\t%v", c)
+ }
+
+ buf.astPrintf(ts, "\n)")
+ for i, opt := range ts.Options {
+ if i != 0 {
+ buf.WriteString(",\n ")
+ }
+ buf.astPrintf(ts, " %s", opt.Name)
+ if opt.String != "" {
+ buf.astPrintf(ts, " %s", opt.String)
+ } else if opt.Value != nil {
+ buf.astPrintf(ts, " %v", opt.Value)
+ } else {
+ buf.astPrintf(ts, " (%v)", opt.Tables)
+ }
+ }
+}
+
+// Format formats the node.
+func (col *ColumnDefinition) Format(buf *TrackedBuffer) {
+ buf.astPrintf(col, "%v %v", col.Name, &col.Type)
+}
+
+// Format returns a canonical string representation of the type and all relevant options
+func (ct *ColumnType) Format(buf *TrackedBuffer) {
+ buf.astPrintf(ct, "%s", ct.Type)
+
+ if ct.Length != nil && ct.Scale != nil {
+ buf.astPrintf(ct, "(%v,%v)", ct.Length, ct.Scale)
+
+ } else if ct.Length != nil {
+ buf.astPrintf(ct, "(%v)", ct.Length)
+ }
+
+ if ct.EnumValues != nil {
+ buf.astPrintf(ct, "(%s)", strings.Join(ct.EnumValues, ", "))
+ }
+
+ if ct.Unsigned {
+ buf.astPrintf(ct, " %s", keywordStrings[UNSIGNED])
+ }
+ if ct.Zerofill {
+ buf.astPrintf(ct, " %s", keywordStrings[ZEROFILL])
+ }
+ if ct.Charset != "" {
+ buf.astPrintf(ct, " %s %s %s", keywordStrings[CHARACTER], keywordStrings[SET], ct.Charset)
+ }
+ if ct.Collate != "" {
+ buf.astPrintf(ct, " %s %s", keywordStrings[COLLATE], ct.Collate)
+ }
+ if ct.Options.Null != nil {
+ if *ct.Options.Null {
+ buf.astPrintf(ct, " %s", keywordStrings[NULL])
+ } else {
+ buf.astPrintf(ct, " %s %s", keywordStrings[NOT], keywordStrings[NULL])
+ }
+ }
+ if ct.Options.Default != nil {
+ buf.astPrintf(ct, " %s %v", keywordStrings[DEFAULT], ct.Options.Default)
+ }
+ if ct.Options.OnUpdate != nil {
+ buf.astPrintf(ct, " %s %s %v", keywordStrings[ON], keywordStrings[UPDATE], ct.Options.OnUpdate)
+ }
+ if ct.Options.Autoincrement {
+ buf.astPrintf(ct, " %s", keywordStrings[AUTO_INCREMENT])
+ }
+ if ct.Options.Comment != nil {
+ buf.astPrintf(ct, " %s %v", keywordStrings[COMMENT_KEYWORD], ct.Options.Comment)
+ }
+ if ct.Options.KeyOpt == colKeyPrimary {
+ buf.astPrintf(ct, " %s %s", keywordStrings[PRIMARY], keywordStrings[KEY])
+ }
+ if ct.Options.KeyOpt == colKeyUnique {
+ buf.astPrintf(ct, " %s", keywordStrings[UNIQUE])
+ }
+ if ct.Options.KeyOpt == colKeyUniqueKey {
+ buf.astPrintf(ct, " %s %s", keywordStrings[UNIQUE], keywordStrings[KEY])
+ }
+ if ct.Options.KeyOpt == colKeySpatialKey {
+ buf.astPrintf(ct, " %s %s", keywordStrings[SPATIAL], keywordStrings[KEY])
+ }
+ if ct.Options.KeyOpt == colKeyFulltextKey {
+ buf.astPrintf(ct, " %s %s", keywordStrings[FULLTEXT], keywordStrings[KEY])
+ }
+ if ct.Options.KeyOpt == colKey {
+ buf.astPrintf(ct, " %s", keywordStrings[KEY])
+ }
+}
+
+// Format formats the node.
+func (idx *IndexDefinition) Format(buf *TrackedBuffer) {
+ buf.astPrintf(idx, "%v (", idx.Info)
+ for i, col := range idx.Columns {
+ if i != 0 {
+ buf.astPrintf(idx, ", %v", col.Column)
+ } else {
+ buf.astPrintf(idx, "%v", col.Column)
+ }
+ if col.Length != nil {
+ buf.astPrintf(idx, "(%v)", col.Length)
+ }
+ if col.Direction == DescOrder {
+ buf.astPrintf(idx, " desc")
+ }
+ }
+ buf.astPrintf(idx, ")")
+
+ for _, opt := range idx.Options {
+ buf.astPrintf(idx, " %s", opt.Name)
+ if opt.String != "" {
+ buf.astPrintf(idx, " %s", opt.String)
+ } else {
+ buf.astPrintf(idx, " %v", opt.Value)
+ }
+ }
+}
+
+// Format formats the node.
+func (ii *IndexInfo) Format(buf *TrackedBuffer) {
+ if !ii.ConstraintName.IsEmpty() {
+ buf.astPrintf(ii, "constraint %v ", ii.ConstraintName)
+ }
+ if ii.Primary {
+ buf.astPrintf(ii, "%s", ii.Type)
+ } else {
+ buf.astPrintf(ii, "%s", ii.Type)
+ if !ii.Name.IsEmpty() {
+ buf.astPrintf(ii, " %v", ii.Name)
+ }
+ }
+}
+
+// Format formats the node.
+func (node *AutoIncSpec) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "%v ", node.Column)
+ buf.astPrintf(node, "using %v", node.Sequence)
+}
+
+// Format formats the node. The "CREATE VINDEX" preamble was formatted in
+// the containing DDL node Format, so this just prints the type, any
+// parameters, and optionally the owner
+func (node *VindexSpec) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "using %v", node.Type)
+
+ numParams := len(node.Params)
+ if numParams != 0 {
+ buf.astPrintf(node, " with ")
+ for i, p := range node.Params {
+ if i != 0 {
+ buf.astPrintf(node, ", ")
+ }
+ buf.astPrintf(node, "%v", p)
+ }
+ }
+}
+
+// Format formats the node.
+func (node VindexParam) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "%s=%s", node.Key.String(), node.Val)
+}
+
+// Format formats the node.
+func (c *ConstraintDefinition) Format(buf *TrackedBuffer) {
+ if !c.Name.IsEmpty() {
+ buf.astPrintf(c, "constraint %v ", c.Name)
+ }
+ c.Details.Format(buf)
+}
+
+// Format formats the node.
+func (a ReferenceAction) Format(buf *TrackedBuffer) {
+ switch a {
+ case Restrict:
+ buf.WriteString("restrict")
+ case Cascade:
+ buf.WriteString("cascade")
+ case NoAction:
+ buf.WriteString("no action")
+ case SetNull:
+ buf.WriteString("set null")
+ case SetDefault:
+ buf.WriteString("set default")
+ }
+}
+
+// Format formats the node.
+func (f *ForeignKeyDefinition) Format(buf *TrackedBuffer) {
+ buf.astPrintf(f, "foreign key %v references %v %v", f.Source, f.ReferencedTable, f.ReferencedColumns)
+ if f.OnDelete != DefaultAction {
+ buf.astPrintf(f, " on delete %v", f.OnDelete)
+ }
+ if f.OnUpdate != DefaultAction {
+ buf.astPrintf(f, " on update %v", f.OnUpdate)
+ }
+}
+
+// Format formats the node.
+func (c *CheckConstraintDefinition) Format(buf *TrackedBuffer) {
+ buf.astPrintf(c, "check (%v)", c.Expr)
+ if !c.Enforced {
+ buf.astPrintf(c, " not enforced")
+ }
+}
+
+// Format formats the node.
+func (node *Show) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "%v", node.Internal)
+}
+
+// Format formats the node.
+func (node *ShowLegacy) Format(buf *TrackedBuffer) {
+ nodeType := strings.ToLower(node.Type)
+ if (nodeType == "tables" || nodeType == "columns" || nodeType == "fields" || nodeType == "index" || nodeType == "keys" || nodeType == "indexes" ||
+ nodeType == "databases" || nodeType == "schemas" || nodeType == "keyspaces" || nodeType == "vitess_keyspaces" || nodeType == "vitess_shards" || nodeType == "vitess_tablets") && node.ShowTablesOpt != nil {
+ opt := node.ShowTablesOpt
+ if node.Extended != "" {
+ buf.astPrintf(node, "show %s%s", node.Extended, nodeType)
+ } else {
+ buf.astPrintf(node, "show %s%s", opt.Full, nodeType)
+ }
+ if (nodeType == "columns" || nodeType == "fields") && node.HasOnTable() {
+ buf.astPrintf(node, " from %v", node.OnTable)
+ }
+ if (nodeType == "index" || nodeType == "keys" || nodeType == "indexes") && node.HasOnTable() {
+ buf.astPrintf(node, " from %v", node.OnTable)
+ }
+ if opt.DbName != "" {
+ buf.astPrintf(node, " from %s", opt.DbName)
+ }
+ buf.astPrintf(node, "%v", opt.Filter)
+ return
+ }
+ if node.Scope == ImplicitScope {
+ buf.astPrintf(node, "show %s", nodeType)
+ } else {
+ buf.astPrintf(node, "show %s %s", node.Scope.ToString(), nodeType)
+ }
+ if node.HasOnTable() {
+ buf.astPrintf(node, " on %v", node.OnTable)
+ }
+ if nodeType == "collation" && node.ShowCollationFilterOpt != nil {
+ buf.astPrintf(node, " where %v", node.ShowCollationFilterOpt)
+ }
+ if nodeType == "charset" && node.ShowTablesOpt != nil {
+ buf.astPrintf(node, "%v", node.ShowTablesOpt.Filter)
+ }
+ if node.HasTable() {
+ buf.astPrintf(node, " %v", node.Table)
+ }
+}
+
+// Format formats the node.
+func (node *ShowFilter) Format(buf *TrackedBuffer) {
+ if node == nil {
+ return
+ }
+ if node.Like != "" {
+ buf.astPrintf(node, " like ")
+ sqltypes.BufEncodeStringSQL(buf.Builder, node.Like)
+ } else {
+ buf.astPrintf(node, " where %v", node.Filter)
+ }
+}
+
+// Format formats the node.
+func (node *Use) Format(buf *TrackedBuffer) {
+ if node.DBName.v != "" {
+ buf.astPrintf(node, "use %v", node.DBName)
+ } else {
+ buf.astPrintf(node, "use")
+ }
+}
+
+// Format formats the node.
+func (node *Commit) Format(buf *TrackedBuffer) {
+ buf.WriteString("commit")
+}
+
+// Format formats the node.
+func (node *Begin) Format(buf *TrackedBuffer) {
+ buf.WriteString("begin")
+}
+
+// Format formats the node.
+func (node *Rollback) Format(buf *TrackedBuffer) {
+ buf.WriteString("rollback")
+}
+
+// Format formats the node.
+func (node *SRollback) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "rollback to %v", node.Name)
+}
+
+// Format formats the node.
+func (node *Savepoint) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "savepoint %v", node.Name)
+}
+
+// Format formats the node.
+func (node *Release) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "release savepoint %v", node.Name)
+}
+
+// Format formats the node.
+func (node *ExplainStmt) Format(buf *TrackedBuffer) {
+ format := ""
+ switch node.Type {
+ case EmptyType:
+ case AnalyzeType:
+ format = AnalyzeStr + " "
+ default:
+ format = "format = " + node.Type.ToString() + " "
+ }
+ buf.astPrintf(node, "explain %s%v", format, node.Statement)
+}
+
+// Format formats the node.
+func (node *ExplainTab) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "explain %v", node.Table)
+ if node.Wild != "" {
+ buf.astPrintf(node, " %s", node.Wild)
+ }
+}
+
+// Format formats the node.
+func (node *CallProc) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "call %v(%v)", node.Name, node.Params)
+}
+
+// Format formats the node.
+func (node *OtherRead) Format(buf *TrackedBuffer) {
+ buf.WriteString("otherread")
+}
+
+// Format formats the node.
+func (node *OtherAdmin) Format(buf *TrackedBuffer) {
+ buf.WriteString("otheradmin")
+}
+
+// Format formats the node.
+func (node Comments) Format(buf *TrackedBuffer) {
+ for _, c := range node {
+ buf.astPrintf(node, "%s ", c)
+ }
+}
+
+// Format formats the node.
+func (node SelectExprs) Format(buf *TrackedBuffer) {
+ var prefix string
+ for _, n := range node {
+ buf.astPrintf(node, "%s%v", prefix, n)
+ prefix = ", "
+ }
+}
+
+// Format formats the node.
+func (node *StarExpr) Format(buf *TrackedBuffer) {
+ if !node.TableName.IsEmpty() {
+ buf.astPrintf(node, "%v.", node.TableName)
+ }
+ buf.astPrintf(node, "*")
+}
+
+// Format formats the node.
+func (node *AliasedExpr) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "%v", node.Expr)
+ if !node.As.IsEmpty() {
+ buf.astPrintf(node, " as %v", node.As)
+ }
+}
+
+// Format formats the node.
+func (node *Nextval) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "next %v values", node.Expr)
+}
+
+// Format formats the node.
+func (node Columns) Format(buf *TrackedBuffer) {
+ if node == nil {
+ return
+ }
+ prefix := "("
+ for _, n := range node {
+ buf.astPrintf(node, "%s%v", prefix, n)
+ prefix = ", "
+ }
+ buf.WriteString(")")
+}
+
+// Format formats the node
+func (node Partitions) Format(buf *TrackedBuffer) {
+ if node == nil {
+ return
+ }
+ prefix := " partition ("
+ for _, n := range node {
+ buf.astPrintf(node, "%s%v", prefix, n)
+ prefix = ", "
+ }
+ buf.WriteString(")")
+}
+
+// Format formats the node.
+func (node TableExprs) Format(buf *TrackedBuffer) {
+ var prefix string
+ for _, n := range node {
+ buf.astPrintf(node, "%s%v", prefix, n)
+ prefix = ", "
+ }
+}
+
+// Format formats the node.
+func (node *AliasedTableExpr) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "%v%v", node.Expr, node.Partitions)
+ if !node.As.IsEmpty() {
+ buf.astPrintf(node, " as %v", node.As)
+ }
+ if node.Hints != nil {
+ // Hint node provides the space padding.
+ buf.astPrintf(node, "%v", node.Hints)
+ }
+}
+
+// Format formats the node.
+func (node TableNames) Format(buf *TrackedBuffer) {
+ var prefix string
+ for _, n := range node {
+ buf.astPrintf(node, "%s%v", prefix, n)
+ prefix = ", "
+ }
+}
+
+// Format formats the node.
+func (node TableName) Format(buf *TrackedBuffer) {
+ if node.IsEmpty() {
+ return
+ }
+ if !node.Qualifier.IsEmpty() {
+ buf.astPrintf(node, "%v.", node.Qualifier)
+ }
+ buf.astPrintf(node, "%v", node.Name)
+}
+
+// Format formats the node.
+func (node *ParenTableExpr) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "(%v)", node.Exprs)
+}
+
+// Format formats the node.
+func (node JoinCondition) Format(buf *TrackedBuffer) {
+ if node.On != nil {
+ buf.astPrintf(node, " on %v", node.On)
+ }
+ if node.Using != nil {
+ buf.astPrintf(node, " using %v", node.Using)
+ }
+}
+
+// Format formats the node.
+func (node *JoinTableExpr) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "%v %s %v%v", node.LeftExpr, node.Join.ToString(), node.RightExpr, node.Condition)
+}
+
+// Format formats the node.
+func (node *IndexHints) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, " %sindex ", node.Type.ToString())
+ if len(node.Indexes) == 0 {
+ buf.astPrintf(node, "()")
+ } else {
+ prefix := "("
+ for _, n := range node.Indexes {
+ buf.astPrintf(node, "%s%v", prefix, n)
+ prefix = ", "
+ }
+ buf.astPrintf(node, ")")
+ }
+}
+
+// Format formats the node.
+func (node *Where) Format(buf *TrackedBuffer) {
+ if node == nil || node.Expr == nil {
+ return
+ }
+ buf.astPrintf(node, " %s %v", node.Type.ToString(), node.Expr)
+}
+
+// Format formats the node.
+func (node Exprs) Format(buf *TrackedBuffer) {
+ var prefix string
+ for _, n := range node {
+ buf.astPrintf(node, "%s%v", prefix, n)
+ prefix = ", "
+ }
+}
+
+// Format formats the node.
+func (node *AndExpr) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "%l and %r", node.Left, node.Right)
+}
+
+// Format formats the node.
+func (node *OrExpr) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "%l or %r", node.Left, node.Right)
+}
+
+// Format formats the node.
+func (node *XorExpr) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "%l xor %r", node.Left, node.Right)
+}
+
+// Format formats the node.
+func (node *NotExpr) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "not %v", node.Expr)
+}
+
+// Format formats the node.
+func (node *ComparisonExpr) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "%l %s %r", node.Left, node.Operator.ToString(), node.Right)
+ if node.Escape != nil {
+ buf.astPrintf(node, " escape %v", node.Escape)
+ }
+}
+
+// Format formats the node.
+func (node *RangeCond) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "%v %s %l and %r", node.Left, node.Operator.ToString(), node.From, node.To)
+}
+
+// Format formats the node.
+func (node *IsExpr) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "%v %s", node.Expr, node.Operator.ToString())
+}
+
+// Format formats the node.
+func (node *ExistsExpr) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "exists %v", node.Subquery)
+}
+
+// Format formats the node.
+func (node *Literal) Format(buf *TrackedBuffer) {
+ switch node.Type {
+ case StrVal:
+ sqltypes.MakeTrusted(sqltypes.VarBinary, node.Bytes()).EncodeSQL(buf)
+ case IntVal, FloatVal, HexNum:
+ buf.astPrintf(node, "%s", node.Val)
+ case HexVal:
+ buf.astPrintf(node, "X'%s'", node.Val)
+ case BitVal:
+ buf.astPrintf(node, "B'%s'", node.Val)
+ default:
+ panic("unexpected")
+ }
+}
+
+// Format formats the node.
+func (node Argument) Format(buf *TrackedBuffer) {
+ buf.WriteArg(string(node))
+}
+
+// Format formats the node.
+func (node *NullVal) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "null")
+}
+
+// Format formats the node.
+func (node BoolVal) Format(buf *TrackedBuffer) {
+ if node {
+ buf.astPrintf(node, "true")
+ } else {
+ buf.astPrintf(node, "false")
+ }
+}
+
+// Format formats the node.
+func (node *ColName) Format(buf *TrackedBuffer) {
+ if !node.Qualifier.IsEmpty() {
+ buf.astPrintf(node, "%v.", node.Qualifier)
+ }
+ buf.astPrintf(node, "%v", node.Name)
+}
+
+// Format formats the node.
+func (node ValTuple) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "(%v)", Exprs(node))
+}
+
+// Format formats the node.
+func (node *Subquery) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "(%v)", node.Select)
+}
+
+// Format formats the node.
+func (node *DerivedTable) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "(%v)", node.Select)
+}
+
+// Format formats the node.
+func (node ListArg) Format(buf *TrackedBuffer) {
+ buf.WriteArg(string(node))
+}
+
+// Format formats the node.
+func (node *BinaryExpr) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "%l %s %r", node.Left, node.Operator.ToString(), node.Right)
+}
+
+// Format formats the node.
+func (node *UnaryExpr) Format(buf *TrackedBuffer) {
+ if _, unary := node.Expr.(*UnaryExpr); unary {
+ // They have same precedence so parenthesis is not required.
+ buf.astPrintf(node, "%s %v", node.Operator.ToString(), node.Expr)
+ return
+ }
+ buf.astPrintf(node, "%s%v", node.Operator.ToString(), node.Expr)
+}
+
+// Format formats the node.
+func (node *IntervalExpr) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "interval %v %s", node.Expr, node.Unit)
+}
+
+// Format formats the node.
+func (node *TimestampFuncExpr) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "%s(%s, %v, %v)", node.Name, node.Unit, node.Expr1, node.Expr2)
+}
+
+// Format formats the node.
+func (node *CurTimeFuncExpr) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "%s(%v)", node.Name.String(), node.Fsp)
+}
+
+// Format formats the node.
+func (node *CollateExpr) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "%v collate %s", node.Expr, node.Charset)
+}
+
+// Format formats the node.
+func (node *FuncExpr) Format(buf *TrackedBuffer) {
+ var distinct string
+ if node.Distinct {
+ distinct = "distinct "
+ }
+ if !node.Qualifier.IsEmpty() {
+ buf.astPrintf(node, "%v.", node.Qualifier)
+ }
+ // Function names should not be back-quoted even
+ // if they match a reserved word, only if they contain illegal characters
+ funcName := node.Name.String()
+
+ if containEscapableChars(funcName, NoAt) {
+ writeEscapedString(buf, funcName)
+ } else {
+ buf.WriteString(funcName)
+ }
+ buf.astPrintf(node, "(%s%v)", distinct, node.Exprs)
+}
+
+// Format formats the node
+func (node *GroupConcatExpr) Format(buf *TrackedBuffer) {
+ if node.Distinct {
+ buf.astPrintf(node, "group_concat(%s%v%v%s%v)", DistinctStr, node.Exprs, node.OrderBy, node.Separator, node.Limit)
+ } else {
+ buf.astPrintf(node, "group_concat(%v%v%s%v)", node.Exprs, node.OrderBy, node.Separator, node.Limit)
+ }
+}
+
+// Format formats the node.
+func (node *ValuesFuncExpr) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "values(%v)", node.Name)
+}
+
+// Format formats the node.
+func (node *SubstrExpr) Format(buf *TrackedBuffer) {
+ var val SQLNode
+ if node.Name != nil {
+ val = node.Name
+ } else {
+ val = node.StrVal
+ }
+
+ if node.To == nil {
+ buf.astPrintf(node, "substr(%v, %v)", val, node.From)
+ } else {
+ buf.astPrintf(node, "substr(%v, %v, %v)", val, node.From, node.To)
+ }
+}
+
+// Format formats the node.
+func (node *ConvertExpr) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "convert(%v, %v)", node.Expr, node.Type)
+}
+
+// Format formats the node.
+func (node *ConvertUsingExpr) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "convert(%v using %s)", node.Expr, node.Type)
+}
+
+// Format formats the node.
+func (node *ConvertType) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "%s", node.Type)
+ if node.Length != nil {
+ buf.astPrintf(node, "(%v", node.Length)
+ if node.Scale != nil {
+ buf.astPrintf(node, ", %v", node.Scale)
+ }
+ buf.astPrintf(node, ")")
+ }
+ if node.Charset != "" {
+ buf.astPrintf(node, "%s %s", node.Operator.ToString(), node.Charset)
+ }
+}
+
+// Format formats the node
+func (node *MatchExpr) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "match(%v) against (%v%s)", node.Columns, node.Expr, node.Option.ToString())
+}
+
+// Format formats the node.
+func (node *CaseExpr) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "case ")
+ if node.Expr != nil {
+ buf.astPrintf(node, "%v ", node.Expr)
+ }
+ for _, when := range node.Whens {
+ buf.astPrintf(node, "%v ", when)
+ }
+ if node.Else != nil {
+ buf.astPrintf(node, "else %v ", node.Else)
+ }
+ buf.astPrintf(node, "end")
+}
+
+// Format formats the node.
+func (node *Default) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "default")
+ if node.ColName != "" {
+ buf.WriteString("(")
+ formatID(buf, node.ColName, NoAt)
+ buf.WriteString(")")
+ }
+}
+
+// Format formats the node.
+func (node *When) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "when %v then %v", node.Cond, node.Val)
+}
+
+// Format formats the node.
+func (node GroupBy) Format(buf *TrackedBuffer) {
+ prefix := " group by "
+ for _, n := range node {
+ buf.astPrintf(node, "%s%v", prefix, n)
+ prefix = ", "
+ }
+}
+
+// Format formats the node.
+func (node OrderBy) Format(buf *TrackedBuffer) {
+ prefix := " order by "
+ for _, n := range node {
+ buf.astPrintf(node, "%s%v", prefix, n)
+ prefix = ", "
+ }
+}
+
+// Format formats the node.
+func (node *Order) Format(buf *TrackedBuffer) {
+ if node, ok := node.Expr.(*NullVal); ok {
+ buf.astPrintf(node, "%v", node)
+ return
+ }
+ if node, ok := node.Expr.(*FuncExpr); ok {
+ if node.Name.Lowered() == "rand" {
+ buf.astPrintf(node, "%v", node)
+ return
+ }
+ }
+
+ buf.astPrintf(node, "%v %s", node.Expr, node.Direction.ToString())
+}
+
+// Format formats the node.
+func (node *Limit) Format(buf *TrackedBuffer) {
+ if node == nil {
+ return
+ }
+ buf.astPrintf(node, " limit ")
+ if node.Offset != nil {
+ buf.astPrintf(node, "%v, ", node.Offset)
+ }
+ buf.astPrintf(node, "%v", node.Rowcount)
+}
+
+// Format formats the node.
+func (node Values) Format(buf *TrackedBuffer) {
+ prefix := "values "
+ for _, n := range node {
+ buf.astPrintf(node, "%s%v", prefix, n)
+ prefix = ", "
+ }
+}
+
+// Format formats the node.
+func (node UpdateExprs) Format(buf *TrackedBuffer) {
+ var prefix string
+ for _, n := range node {
+ buf.astPrintf(node, "%s%v", prefix, n)
+ prefix = ", "
+ }
+}
+
+// Format formats the node.
+func (node *UpdateExpr) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "%v = %v", node.Name, node.Expr)
+}
+
+// Format formats the node.
+func (node SetExprs) Format(buf *TrackedBuffer) {
+ var prefix string
+ for _, n := range node {
+ buf.astPrintf(node, "%s%v", prefix, n)
+ prefix = ", "
+ }
+}
+
+// Format formats the node.
+func (node *SetExpr) Format(buf *TrackedBuffer) {
+ if node.Scope != ImplicitScope {
+ buf.WriteString(node.Scope.ToString())
+ buf.WriteString(" ")
+ }
+ // We don't have to backtick set variable names.
+ switch {
+ case node.Name.EqualString("charset") || node.Name.EqualString("names"):
+ buf.astPrintf(node, "%s %v", node.Name.String(), node.Expr)
+ case node.Name.EqualString(TransactionStr):
+ literal := node.Expr.(*Literal)
+ buf.astPrintf(node, "%s %s", node.Name.String(), strings.ToLower(string(literal.Val)))
+ default:
+ buf.astPrintf(node, "%v = %v", node.Name, node.Expr)
+ }
+}
+
+// Format formats the node.
+func (node OnDup) Format(buf *TrackedBuffer) {
+ if node == nil {
+ return
+ }
+ buf.astPrintf(node, " on duplicate key update %v", UpdateExprs(node))
+}
+
+// Format formats the node.
+func (node ColIdent) Format(buf *TrackedBuffer) {
+ for i := NoAt; i < node.at; i++ {
+ buf.WriteByte('@')
+ }
+ formatID(buf, node.val, node.at)
+}
+
+// Format formats the node.
+func (node TableIdent) Format(buf *TrackedBuffer) {
+ formatID(buf, node.v, NoAt)
+}
+
+// Format formats the node.
+func (node IsolationLevel) Format(buf *TrackedBuffer) {
+ buf.WriteString("isolation level ")
+ switch node {
+ case ReadUncommitted:
+ buf.WriteString(ReadUncommittedStr)
+ case ReadCommitted:
+ buf.WriteString(ReadCommittedStr)
+ case RepeatableRead:
+ buf.WriteString(RepeatableReadStr)
+ case Serializable:
+ buf.WriteString(SerializableStr)
+ default:
+ buf.WriteString("Unknown Isolation level value")
+ }
+}
+
+// Format formats the node.
+func (node AccessMode) Format(buf *TrackedBuffer) {
+ if node == ReadOnly {
+ buf.WriteString(TxReadOnly)
+ } else {
+ buf.WriteString(TxReadWrite)
+ }
+}
+
+// Format formats the node.
+func (node *Load) Format(buf *TrackedBuffer) {
+ buf.WriteString("AST node missing for Load type")
+}
+
+// Format formats the node.
+func (node *ShowBasic) Format(buf *TrackedBuffer) {
+ buf.WriteString("show")
+ if node.Full {
+ buf.WriteString(" full")
+ }
+ buf.astPrintf(node, "%s", node.Command.ToString())
+ if !node.Tbl.IsEmpty() {
+ buf.astPrintf(node, " from %v", node.Tbl)
+ }
+ if !node.DbName.IsEmpty() {
+ buf.astPrintf(node, " from %v", node.DbName)
+ }
+ buf.astPrintf(node, "%v", node.Filter)
+}
+
+// Format formats the node.
+func (node *ShowCreate) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "show%s %v", node.Command.ToString(), node.Op)
+}
+
+// Format formats the node.
+func (node *SelectInto) Format(buf *TrackedBuffer) {
+ if node == nil {
+ return
+ }
+ buf.astPrintf(node, "%s%s", node.Type.ToString(), node.FileName)
+ if node.Charset != "" {
+ buf.astPrintf(node, " character set %s", node.Charset)
+ }
+ buf.astPrintf(node, "%s%s%s%s", node.FormatOption, node.ExportOption, node.Manifest, node.Overwrite)
+}
+
+// Format formats the node.
+func (node *CreateDatabase) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "create database %v", node.Comments)
+ if node.IfNotExists {
+ buf.WriteString("if not exists ")
+ }
+ buf.astPrintf(node, "%v", node.DBName)
+ if node.CreateOptions != nil {
+ for _, createOption := range node.CreateOptions {
+ if createOption.IsDefault {
+ buf.WriteString(" default")
+ }
+ buf.WriteString(createOption.Type.ToString())
+ buf.WriteString(" " + createOption.Value)
+ }
+ }
+}
+
+// Format formats the node.
+func (node *AlterDatabase) Format(buf *TrackedBuffer) {
+ buf.WriteString("alter database")
+ if !node.DBName.IsEmpty() {
+ buf.astPrintf(node, " %v", node.DBName)
+ }
+ if node.UpdateDataDirectory {
+ buf.WriteString(" upgrade data directory name")
+ }
+ if node.AlterOptions != nil {
+ for _, createOption := range node.AlterOptions {
+ if createOption.IsDefault {
+ buf.WriteString(" default")
+ }
+ buf.WriteString(createOption.Type.ToString())
+ buf.WriteString(" " + createOption.Value)
+ }
+ }
+}
+
+// Format formats the node.
+func (node *CreateTable) Format(buf *TrackedBuffer) {
+ buf.WriteString("create ")
+ if node.Temp {
+ buf.WriteString("temporary ")
+ }
+ buf.WriteString("table ")
+
+ if node.IfNotExists {
+ buf.WriteString("if not exists ")
+ }
+ buf.astPrintf(node, "%v", node.Table)
+
+ if node.OptLike != nil {
+ buf.astPrintf(node, " %v", node.OptLike)
+ }
+ if node.TableSpec != nil {
+ buf.astPrintf(node, " %v", node.TableSpec)
+ }
+}
+
+// Format formats the node.
+func (node *CreateView) Format(buf *TrackedBuffer) {
+ buf.WriteString("create")
+ if node.IsReplace {
+ buf.WriteString(" or replace")
+ }
+ if node.Algorithm != "" {
+ buf.astPrintf(node, " algorithm = %s", node.Algorithm)
+ }
+ if node.Definer != "" {
+ buf.astPrintf(node, " definer = %s", node.Definer)
+ }
+ if node.Security != "" {
+ buf.astPrintf(node, " sql security %s", node.Security)
+ }
+ buf.astPrintf(node, " view %v", node.ViewName)
+ buf.astPrintf(node, "%v as %v", node.Columns, node.Select)
+ if node.CheckOption != "" {
+ buf.astPrintf(node, " with %s check option", node.CheckOption)
+ }
+}
+
+// Format formats the LockTables node.
+func (node *LockTables) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "lock tables %v %s", node.Tables[0].Table, node.Tables[0].Lock.ToString())
+ for i := 1; i < len(node.Tables); i++ {
+ buf.astPrintf(node, ", %v %s", node.Tables[i].Table, node.Tables[i].Lock.ToString())
+ }
+}
+
+// Format formats the UnlockTables node.
+func (node *UnlockTables) Format(buf *TrackedBuffer) {
+ buf.WriteString("unlock tables")
+}
+
+// Format formats the node.
+func (node *AlterView) Format(buf *TrackedBuffer) {
+ buf.WriteString("alter")
+ if node.Algorithm != "" {
+ buf.astPrintf(node, " algorithm = %s", node.Algorithm)
+ }
+ if node.Definer != "" {
+ buf.astPrintf(node, " definer = %s", node.Definer)
+ }
+ if node.Security != "" {
+ buf.astPrintf(node, " sql security %s", node.Security)
+ }
+ buf.astPrintf(node, " view %v", node.ViewName)
+ buf.astPrintf(node, "%v as %v", node.Columns, node.Select)
+ if node.CheckOption != "" {
+ buf.astPrintf(node, " with %s check option", node.CheckOption)
+ }
+}
+
+// Format formats the node.
+func (node *DropTable) Format(buf *TrackedBuffer) {
+ temp := ""
+ if node.Temp {
+ temp = " temporary"
+ }
+ exists := ""
+ if node.IfExists {
+ exists = " if exists"
+ }
+ buf.astPrintf(node, "drop%s table%s %v", temp, exists, node.FromTables)
+}
+
+// Format formats the node.
+func (node *DropView) Format(buf *TrackedBuffer) {
+ exists := ""
+ if node.IfExists {
+ exists = " if exists"
+ }
+ buf.astPrintf(node, "drop view%s %v", exists, node.FromTables)
+}
+
+// Format formats the AlterTable node.
+func (node *AlterTable) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "alter table %v", node.Table)
+ prefix := ""
+ for i, option := range node.AlterOptions {
+ if i != 0 {
+ buf.WriteString(",")
+ }
+ buf.astPrintf(node, " %v", option)
+ if node.PartitionSpec != nil && node.PartitionSpec.Action != RemoveAction {
+ prefix = ","
+ }
+ }
+ if node.PartitionSpec != nil {
+ buf.astPrintf(node, "%s %v", prefix, node.PartitionSpec)
+ }
+}
+
+// Format formats the node.
+func (node *AddConstraintDefinition) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "add %v", node.ConstraintDefinition)
+}
+
+// Format formats the node.
+func (node *AddIndexDefinition) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "add %v", node.IndexDefinition)
+}
+
+// Format formats the node.
+func (node *AddColumns) Format(buf *TrackedBuffer) {
+
+ if len(node.Columns) == 1 {
+ buf.astPrintf(node, "add column %v", node.Columns[0])
+ if node.First != nil {
+ buf.astPrintf(node, " first %v", node.First)
+ }
+ if node.After != nil {
+ buf.astPrintf(node, " after %v", node.After)
+ }
+ } else {
+ for i, col := range node.Columns {
+ if i == 0 {
+ buf.astPrintf(node, "add column (%v", col)
+ } else {
+ buf.astPrintf(node, ", %v", col)
+ }
+ }
+ buf.WriteString(")")
+ }
+}
+
+// Format formats the node.
+func (node AlgorithmValue) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "algorithm = %s", string(node))
+}
+
+// Format formats the node
+func (node *AlterColumn) Format(buf *TrackedBuffer) {
+ if node.DropDefault {
+ buf.astPrintf(node, "alter column %v drop default", node.Column)
+ } else {
+ buf.astPrintf(node, "alter column %v set default", node.Column)
+ buf.astPrintf(node, " %v", node.DefaultVal)
+ }
+}
+
+// Format formats the node
+func (node *ChangeColumn) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "change column %v %v", node.OldColumn, node.NewColDefinition)
+ if node.First != nil {
+ buf.astPrintf(node, " first %v", node.First)
+ }
+ if node.After != nil {
+ buf.astPrintf(node, " after %v", node.After)
+ }
+}
+
+// Format formats the node
+func (node *ModifyColumn) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "modify column %v", node.NewColDefinition)
+ if node.First != nil {
+ buf.astPrintf(node, " first %v", node.First)
+ }
+ if node.After != nil {
+ buf.astPrintf(node, " after %v", node.After)
+ }
+}
+
+// Format formats the node
+func (node *AlterCharset) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "convert to character set %s", node.CharacterSet)
+ if node.Collate != "" {
+ buf.astPrintf(node, " collate %s", node.Collate)
+ }
+}
+
+// Format formats the node
+func (node *KeyState) Format(buf *TrackedBuffer) {
+ if node.Enable {
+ buf.WriteString("enable keys")
+ } else {
+ buf.WriteString("disable keys")
+ }
+
+}
+
+// Format formats the node
+func (node *TablespaceOperation) Format(buf *TrackedBuffer) {
+ if node.Import {
+ buf.WriteString("import tablespace")
+ } else {
+ buf.WriteString("discard tablespace")
+ }
+}
+
+// Format formats the node
+func (node *DropColumn) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "drop column %v", node.Name)
+}
+
+// Format formats the node
+func (node *DropKey) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "drop %s", node.Type.ToString())
+ if !node.Name.IsEmpty() {
+ buf.astPrintf(node, " %v", node.Name)
+ }
+}
+
+// Format formats the node
+func (node *Force) Format(buf *TrackedBuffer) {
+ buf.WriteString("force")
+}
+
+// Format formats the node
+func (node *LockOption) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "lock %s", node.Type.ToString())
+}
+
+// Format formats the node
+func (node *OrderByOption) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "order by ")
+ prefix := ""
+ for _, n := range node.Cols {
+ buf.astPrintf(node, "%s%v", prefix, n)
+ prefix = ", "
+ }
+}
+
+// Format formats the node
+func (node *RenameTableName) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "rename %v", node.Table)
+}
+
+// Format formats the node
+func (node *RenameIndex) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "rename index %v to %v", node.OldName, node.NewName)
+}
+
+// Format formats the node
+func (node *Validation) Format(buf *TrackedBuffer) {
+ if node.With {
+ buf.WriteString("with validation")
+ } else {
+ buf.WriteString("without validation")
+ }
+}
+
+// Format formats the node
+func (node TableOptions) Format(buf *TrackedBuffer) {
+ for i, option := range node {
+ if i != 0 {
+ buf.WriteString(" ")
+ }
+ buf.astPrintf(node, "%s", option.Name)
+ if option.String != "" {
+ buf.astPrintf(node, " %s", option.String)
+ } else if option.Value != nil {
+ buf.astPrintf(node, " %v", option.Value)
+ } else {
+ buf.astPrintf(node, " (%v)", option.Tables)
+ }
+ }
+}
+
+// Format formats the node
+func (node *TruncateTable) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "truncate table %v", node.Table)
+}
+
+// Format formats the node.
+func (node *RenameTable) Format(buf *TrackedBuffer) {
+ buf.astPrintf(node, "rename table")
+ prefix := " "
+ for _, pair := range node.TablePairs {
+ buf.astPrintf(node, "%s%v to %v", prefix, pair.FromTable, pair.ToTable)
+ prefix = ", "
+ }
+}
diff --git a/go/vt/sqlparser/ast_format_fast.go b/go/vt/sqlparser/ast_format_fast.go
new file mode 100644
index 00000000000..5746f5106c8
--- /dev/null
+++ b/go/vt/sqlparser/ast_format_fast.go
@@ -0,0 +1,2185 @@
+// Code generated by ASTFmtGen. DO NOT EDIT.
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package sqlparser
+
+import (
+ "strings"
+
+ "vitess.io/vitess/go/sqltypes"
+)
+
+// formatFast formats the node.
+func (node *Select) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("select ")
+ node.Comments.formatFast(buf)
+
+ if node.Distinct {
+ buf.WriteString(DistinctStr)
+ }
+ if node.Cache != nil {
+ if *node.Cache {
+ buf.WriteString(SQLCacheStr)
+ } else {
+ buf.WriteString(SQLNoCacheStr)
+ }
+ }
+ if node.StraightJoinHint {
+ buf.WriteString(StraightJoinHint)
+ }
+ if node.SQLCalcFoundRows {
+ buf.WriteString(SQLCalcFoundRowsStr)
+ }
+
+ node.SelectExprs.formatFast(buf)
+ buf.WriteString(" from ")
+
+ node.From.formatFast(buf)
+
+ node.Where.formatFast(buf)
+
+ node.GroupBy.formatFast(buf)
+
+ node.Having.formatFast(buf)
+
+ node.OrderBy.formatFast(buf)
+
+ node.Limit.formatFast(buf)
+ buf.WriteString(node.Lock.ToString())
+ node.Into.formatFast(buf)
+
+}
+
+// formatFast formats the node.
+func (node *ParenSelect) formatFast(buf *TrackedBuffer) {
+ buf.WriteByte('(')
+ node.Select.formatFast(buf)
+ buf.WriteByte(')')
+}
+
+// formatFast formats the node.
+func (node *Union) formatFast(buf *TrackedBuffer) {
+ node.FirstStatement.formatFast(buf)
+ for _, us := range node.UnionSelects {
+ us.formatFast(buf)
+ }
+ node.OrderBy.formatFast(buf)
+ node.Limit.formatFast(buf)
+ buf.WriteString(node.Lock.ToString())
+}
+
+// formatFast formats the node.
+func (node *UnionSelect) formatFast(buf *TrackedBuffer) {
+ if node.Distinct {
+ buf.WriteByte(' ')
+ buf.WriteString(UnionStr)
+ buf.WriteByte(' ')
+ node.Statement.formatFast(buf)
+ } else {
+ buf.WriteByte(' ')
+ buf.WriteString(UnionAllStr)
+ buf.WriteByte(' ')
+ node.Statement.formatFast(buf)
+ }
+}
+
+// formatFast formats the node.
+func (node *VStream) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("vstream ")
+ node.Comments.formatFast(buf)
+ node.SelectExpr.formatFast(buf)
+ buf.WriteString(" from ")
+ node.Table.formatFast(buf)
+
+}
+
+// formatFast formats the node.
+func (node *Stream) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("stream ")
+ node.Comments.formatFast(buf)
+ node.SelectExpr.formatFast(buf)
+ buf.WriteString(" from ")
+ node.Table.formatFast(buf)
+
+}
+
+// formatFast formats the node.
+func (node *Insert) formatFast(buf *TrackedBuffer) {
+ switch node.Action {
+ case InsertAct:
+ buf.WriteString(InsertStr)
+ buf.WriteByte(' ')
+
+ node.Comments.formatFast(buf)
+ buf.WriteString(node.Ignore.ToString())
+ buf.WriteString("into ")
+
+ node.Table.formatFast(buf)
+
+ node.Partitions.formatFast(buf)
+
+ node.Columns.formatFast(buf)
+ buf.WriteByte(' ')
+
+ node.Rows.formatFast(buf)
+
+ node.OnDup.formatFast(buf)
+
+ case ReplaceAct:
+ buf.WriteString(ReplaceStr)
+ buf.WriteByte(' ')
+
+ node.Comments.formatFast(buf)
+ buf.WriteString(node.Ignore.ToString())
+ buf.WriteString("into ")
+
+ node.Table.formatFast(buf)
+
+ node.Partitions.formatFast(buf)
+
+ node.Columns.formatFast(buf)
+ buf.WriteByte(' ')
+
+ node.Rows.formatFast(buf)
+
+ node.OnDup.formatFast(buf)
+
+ default:
+ buf.WriteString("Unkown Insert Action")
+ buf.WriteByte(' ')
+
+ node.Comments.formatFast(buf)
+ buf.WriteString(node.Ignore.ToString())
+ buf.WriteString("into ")
+
+ node.Table.formatFast(buf)
+
+ node.Partitions.formatFast(buf)
+
+ node.Columns.formatFast(buf)
+ buf.WriteByte(' ')
+
+ node.Rows.formatFast(buf)
+
+ node.OnDup.formatFast(buf)
+
+ }
+
+}
+
+// formatFast formats the node.
+func (node *Update) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("update ")
+ node.Comments.formatFast(buf)
+ buf.WriteString(node.Ignore.ToString())
+ node.TableExprs.formatFast(buf)
+ buf.WriteString(" set ")
+
+ node.Exprs.formatFast(buf)
+
+ node.Where.formatFast(buf)
+
+ node.OrderBy.formatFast(buf)
+
+ node.Limit.formatFast(buf)
+
+}
+
+// formatFast formats the node.
+func (node *Delete) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("delete ")
+ node.Comments.formatFast(buf)
+ if node.Ignore {
+ buf.WriteString("ignore ")
+ }
+ if node.Targets != nil {
+ node.Targets.formatFast(buf)
+ buf.WriteByte(' ')
+ }
+ buf.WriteString("from ")
+ node.TableExprs.formatFast(buf)
+ node.Partitions.formatFast(buf)
+ node.Where.formatFast(buf)
+ node.OrderBy.formatFast(buf)
+ node.Limit.formatFast(buf)
+}
+
+// formatFast formats the node.
+func (node *Set) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("set ")
+ node.Comments.formatFast(buf)
+ node.Exprs.formatFast(buf)
+}
+
+// formatFast formats the node.
+func (node *SetTransaction) formatFast(buf *TrackedBuffer) {
+ if node.Scope == ImplicitScope {
+ buf.WriteString("set ")
+ node.Comments.formatFast(buf)
+ buf.WriteString("transaction ")
+ } else {
+ buf.WriteString("set ")
+ node.Comments.formatFast(buf)
+ buf.WriteString(node.Scope.ToString())
+ buf.WriteString(" transaction ")
+ }
+
+ for i, char := range node.Characteristics {
+ if i > 0 {
+ buf.WriteString(", ")
+ }
+ char.formatFast(buf)
+ }
+}
+
+// formatFast formats the node.
+func (node *DropDatabase) formatFast(buf *TrackedBuffer) {
+ exists := ""
+ if node.IfExists {
+ exists = "if exists "
+ }
+ buf.WriteString(DropStr)
+ buf.WriteString(" database ")
+ node.Comments.formatFast(buf)
+ buf.WriteString(exists)
+ node.DBName.formatFast(buf)
+}
+
+// formatFast formats the node.
+func (node *Flush) formatFast(buf *TrackedBuffer) {
+ buf.WriteString(FlushStr)
+ if node.IsLocal {
+ buf.WriteString(" local")
+ }
+ if len(node.FlushOptions) != 0 {
+ prefix := " "
+ for _, option := range node.FlushOptions {
+ buf.WriteString(prefix)
+ buf.WriteString(option)
+ prefix = ", "
+ }
+ } else {
+ buf.WriteString(" tables")
+ if len(node.TableNames) != 0 {
+ buf.WriteByte(' ')
+ node.TableNames.formatFast(buf)
+ }
+ if node.ForExport {
+ buf.WriteString(" for export")
+ }
+ if node.WithLock {
+ buf.WriteString(" with read lock")
+ }
+ }
+}
+
+// formatFast formats the node.
+func (node *AlterVschema) formatFast(buf *TrackedBuffer) {
+ switch node.Action {
+ case CreateVindexDDLAction:
+ buf.WriteString("alter vschema create vindex ")
+ node.Table.formatFast(buf)
+ buf.WriteByte(' ')
+ node.VindexSpec.formatFast(buf)
+ case DropVindexDDLAction:
+ buf.WriteString("alter vschema drop vindex ")
+ node.Table.formatFast(buf)
+ case AddVschemaTableDDLAction:
+ buf.WriteString("alter vschema add table ")
+ node.Table.formatFast(buf)
+ case DropVschemaTableDDLAction:
+ buf.WriteString("alter vschema drop table ")
+ node.Table.formatFast(buf)
+ case AddColVindexDDLAction:
+ buf.WriteString("alter vschema on ")
+ node.Table.formatFast(buf)
+ buf.WriteString(" add vindex ")
+ node.VindexSpec.Name.formatFast(buf)
+ buf.WriteString(" (")
+ for i, col := range node.VindexCols {
+ if i != 0 {
+ buf.WriteString(", ")
+ col.formatFast(buf)
+ } else {
+ col.formatFast(buf)
+ }
+ }
+ buf.WriteByte(')')
+ if node.VindexSpec.Type.String() != "" {
+ buf.WriteByte(' ')
+ node.VindexSpec.formatFast(buf)
+ }
+ case DropColVindexDDLAction:
+ buf.WriteString("alter vschema on ")
+ node.Table.formatFast(buf)
+ buf.WriteString(" drop vindex ")
+ node.VindexSpec.Name.formatFast(buf)
+ case AddSequenceDDLAction:
+ buf.WriteString("alter vschema add sequence ")
+ node.Table.formatFast(buf)
+ case AddAutoIncDDLAction:
+ buf.WriteString("alter vschema on ")
+ node.Table.formatFast(buf)
+ buf.WriteString(" add auto_increment ")
+ node.AutoIncSpec.formatFast(buf)
+ default:
+ buf.WriteString(node.Action.ToString())
+ buf.WriteString(" table ")
+ node.Table.formatFast(buf)
+ }
+}
+
+// formatFast formats the node.
+func (node *AlterMigration) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("alter vitess_migration")
+ if node.UUID != "" {
+ buf.WriteString(" '")
+ buf.WriteString(node.UUID)
+ buf.WriteByte('\'')
+ }
+ var alterType string
+ switch node.Type {
+ case RetryMigrationType:
+ alterType = "retry"
+ case CompleteMigrationType:
+ alterType = "complete"
+ case CancelMigrationType:
+ alterType = "cancel"
+ case CancelAllMigrationType:
+ alterType = "cancel all"
+ }
+ buf.WriteByte(' ')
+ buf.WriteString(alterType)
+}
+
+// formatFast formats the node.
+func (node *RevertMigration) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("revert vitess_migration '")
+ buf.WriteString(node.UUID)
+ buf.WriteByte('\'')
+}
+
+// formatFast formats the node.
+func (node *OptLike) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("like ")
+ node.LikeTable.formatFast(buf)
+}
+
+// formatFast formats the node.
+func (node *PartitionSpec) formatFast(buf *TrackedBuffer) {
+ switch node.Action {
+ case ReorganizeAction:
+ buf.WriteString(ReorganizeStr)
+ buf.WriteByte(' ')
+ for i, n := range node.Names {
+ if i != 0 {
+ buf.WriteString(", ")
+ }
+ n.formatFast(buf)
+ }
+ buf.WriteString(" into (")
+ for i, pd := range node.Definitions {
+ if i != 0 {
+ buf.WriteString(", ")
+ }
+ pd.formatFast(buf)
+ }
+ buf.WriteByte(')')
+ case AddAction:
+ buf.WriteString(AddStr)
+ buf.WriteString(" (")
+ node.Definitions[0].formatFast(buf)
+ buf.WriteByte(')')
+ case DropAction:
+ buf.WriteString(DropPartitionStr)
+ buf.WriteByte(' ')
+ for i, n := range node.Names {
+ if i != 0 {
+ buf.WriteString(", ")
+ }
+ n.formatFast(buf)
+ }
+ case DiscardAction:
+ buf.WriteString(DiscardStr)
+ buf.WriteByte(' ')
+ if node.IsAll {
+ buf.WriteString("all")
+ } else {
+ prefix := ""
+ for _, n := range node.Names {
+ buf.WriteString(prefix)
+ n.formatFast(buf)
+ prefix = ", "
+ }
+ }
+ buf.WriteString(" tablespace")
+ case ImportAction:
+ buf.WriteString(ImportStr)
+ buf.WriteByte(' ')
+ if node.IsAll {
+ buf.WriteString("all")
+ } else {
+ prefix := ""
+ for _, n := range node.Names {
+ buf.WriteString(prefix)
+ n.formatFast(buf)
+ prefix = ", "
+ }
+ }
+ buf.WriteString(" tablespace")
+ case TruncateAction:
+ buf.WriteString(TruncatePartitionStr)
+ buf.WriteByte(' ')
+ if node.IsAll {
+ buf.WriteString("all")
+ } else {
+ prefix := ""
+ for _, n := range node.Names {
+ buf.WriteString(prefix)
+ n.formatFast(buf)
+ prefix = ", "
+ }
+ }
+ case CoalesceAction:
+ buf.WriteString(CoalesceStr)
+ buf.WriteByte(' ')
+ node.Number.formatFast(buf)
+ case ExchangeAction:
+ buf.WriteString(ExchangeStr)
+ buf.WriteByte(' ')
+ node.Names[0].formatFast(buf)
+ buf.WriteString(" with table ")
+ node.TableName.formatFast(buf)
+ if node.WithoutValidation {
+ buf.WriteString(" without validation")
+ }
+ case AnalyzeAction:
+ buf.WriteString(AnalyzePartitionStr)
+ buf.WriteByte(' ')
+ if node.IsAll {
+ buf.WriteString("all")
+ } else {
+ prefix := ""
+ for _, n := range node.Names {
+ buf.WriteString(prefix)
+ n.formatFast(buf)
+ prefix = ", "
+ }
+ }
+ case CheckAction:
+ buf.WriteString(CheckStr)
+ buf.WriteByte(' ')
+ if node.IsAll {
+ buf.WriteString("all")
+ } else {
+ prefix := ""
+ for _, n := range node.Names {
+ buf.WriteString(prefix)
+ n.formatFast(buf)
+ prefix = ", "
+ }
+ }
+ case OptimizeAction:
+ buf.WriteString(OptimizeStr)
+ buf.WriteByte(' ')
+ if node.IsAll {
+ buf.WriteString("all")
+ } else {
+ prefix := ""
+ for _, n := range node.Names {
+ buf.WriteString(prefix)
+ n.formatFast(buf)
+ prefix = ", "
+ }
+ }
+ case RebuildAction:
+ buf.WriteString(RebuildStr)
+ buf.WriteByte(' ')
+ if node.IsAll {
+ buf.WriteString("all")
+ } else {
+ prefix := ""
+ for _, n := range node.Names {
+ buf.WriteString(prefix)
+ n.formatFast(buf)
+ prefix = ", "
+ }
+ }
+ case RepairAction:
+ buf.WriteString(RepairStr)
+ buf.WriteByte(' ')
+ if node.IsAll {
+ buf.WriteString("all")
+ } else {
+ prefix := ""
+ for _, n := range node.Names {
+ buf.WriteString(prefix)
+ n.formatFast(buf)
+ prefix = ", "
+ }
+ }
+ case RemoveAction:
+ buf.WriteString(RemoveStr)
+ case UpgradeAction:
+ buf.WriteString(UpgradeStr)
+ default:
+ panic("unimplemented")
+ }
+}
+
+// formatFast formats the node
+func (node *PartitionDefinition) formatFast(buf *TrackedBuffer) {
+ if !node.Maxvalue {
+ buf.WriteString("partition ")
+ node.Name.formatFast(buf)
+ buf.WriteString(" values less than (")
+ node.Limit.formatFast(buf)
+ buf.WriteByte(')')
+ } else {
+ buf.WriteString("partition ")
+ node.Name.formatFast(buf)
+ buf.WriteString(" values less than (maxvalue)")
+ }
+}
+
+// formatFast formats the node.
+func (ts *TableSpec) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("(\n")
+ for i, col := range ts.Columns {
+ if i == 0 {
+ buf.WriteByte('\t')
+ col.formatFast(buf)
+ } else {
+ buf.WriteString(",\n\t")
+ col.formatFast(buf)
+ }
+ }
+ for _, idx := range ts.Indexes {
+ buf.WriteString(",\n\t")
+ idx.formatFast(buf)
+ }
+ for _, c := range ts.Constraints {
+ buf.WriteString(",\n\t")
+ c.formatFast(buf)
+ }
+
+ buf.WriteString("\n)")
+ for i, opt := range ts.Options {
+ if i != 0 {
+ buf.WriteString(",\n ")
+ }
+ buf.WriteByte(' ')
+ buf.WriteString(opt.Name)
+ if opt.String != "" {
+ buf.WriteByte(' ')
+ buf.WriteString(opt.String)
+ } else if opt.Value != nil {
+ buf.WriteByte(' ')
+ opt.Value.formatFast(buf)
+ } else {
+ buf.WriteString(" (")
+ opt.Tables.formatFast(buf)
+ buf.WriteByte(')')
+ }
+ }
+}
+
+// formatFast formats the node.
+func (col *ColumnDefinition) formatFast(buf *TrackedBuffer) {
+ col.Name.formatFast(buf)
+ buf.WriteByte(' ')
+ (&col.Type).formatFast(buf)
+}
+
+// formatFast returns a canonical string representation of the type and all relevant options
+func (ct *ColumnType) formatFast(buf *TrackedBuffer) {
+ buf.WriteString(ct.Type)
+
+ if ct.Length != nil && ct.Scale != nil {
+ buf.WriteByte('(')
+ ct.Length.formatFast(buf)
+ buf.WriteByte(',')
+ ct.Scale.formatFast(buf)
+ buf.WriteByte(')')
+
+ } else if ct.Length != nil {
+ buf.WriteByte('(')
+ ct.Length.formatFast(buf)
+ buf.WriteByte(')')
+ }
+
+ if ct.EnumValues != nil {
+ buf.WriteByte('(')
+ buf.WriteString(strings.Join(ct.EnumValues, ", "))
+ buf.WriteByte(')')
+ }
+
+ if ct.Unsigned {
+ buf.WriteByte(' ')
+ buf.WriteString(keywordStrings[UNSIGNED])
+ }
+ if ct.Zerofill {
+ buf.WriteByte(' ')
+ buf.WriteString(keywordStrings[ZEROFILL])
+ }
+ if ct.Charset != "" {
+ buf.WriteByte(' ')
+ buf.WriteString(keywordStrings[CHARACTER])
+ buf.WriteByte(' ')
+ buf.WriteString(keywordStrings[SET])
+ buf.WriteByte(' ')
+ buf.WriteString(ct.Charset)
+ }
+ if ct.Collate != "" {
+ buf.WriteByte(' ')
+ buf.WriteString(keywordStrings[COLLATE])
+ buf.WriteByte(' ')
+ buf.WriteString(ct.Collate)
+ }
+ if ct.Options.Null != nil {
+ if *ct.Options.Null {
+ buf.WriteByte(' ')
+ buf.WriteString(keywordStrings[NULL])
+ } else {
+ buf.WriteByte(' ')
+ buf.WriteString(keywordStrings[NOT])
+ buf.WriteByte(' ')
+ buf.WriteString(keywordStrings[NULL])
+ }
+ }
+ if ct.Options.Default != nil {
+ buf.WriteByte(' ')
+ buf.WriteString(keywordStrings[DEFAULT])
+ buf.WriteByte(' ')
+ ct.Options.Default.formatFast(buf)
+ }
+ if ct.Options.OnUpdate != nil {
+ buf.WriteByte(' ')
+ buf.WriteString(keywordStrings[ON])
+ buf.WriteByte(' ')
+ buf.WriteString(keywordStrings[UPDATE])
+ buf.WriteByte(' ')
+ ct.Options.OnUpdate.formatFast(buf)
+ }
+ if ct.Options.Autoincrement {
+ buf.WriteByte(' ')
+ buf.WriteString(keywordStrings[AUTO_INCREMENT])
+ }
+ if ct.Options.Comment != nil {
+ buf.WriteByte(' ')
+ buf.WriteString(keywordStrings[COMMENT_KEYWORD])
+ buf.WriteByte(' ')
+ ct.Options.Comment.formatFast(buf)
+ }
+ if ct.Options.KeyOpt == colKeyPrimary {
+ buf.WriteByte(' ')
+ buf.WriteString(keywordStrings[PRIMARY])
+ buf.WriteByte(' ')
+ buf.WriteString(keywordStrings[KEY])
+ }
+ if ct.Options.KeyOpt == colKeyUnique {
+ buf.WriteByte(' ')
+ buf.WriteString(keywordStrings[UNIQUE])
+ }
+ if ct.Options.KeyOpt == colKeyUniqueKey {
+ buf.WriteByte(' ')
+ buf.WriteString(keywordStrings[UNIQUE])
+ buf.WriteByte(' ')
+ buf.WriteString(keywordStrings[KEY])
+ }
+ if ct.Options.KeyOpt == colKeySpatialKey {
+ buf.WriteByte(' ')
+ buf.WriteString(keywordStrings[SPATIAL])
+ buf.WriteByte(' ')
+ buf.WriteString(keywordStrings[KEY])
+ }
+ if ct.Options.KeyOpt == colKeyFulltextKey {
+ buf.WriteByte(' ')
+ buf.WriteString(keywordStrings[FULLTEXT])
+ buf.WriteByte(' ')
+ buf.WriteString(keywordStrings[KEY])
+ }
+ if ct.Options.KeyOpt == colKey {
+ buf.WriteByte(' ')
+ buf.WriteString(keywordStrings[KEY])
+ }
+}
+
+// formatFast formats the node.
+func (idx *IndexDefinition) formatFast(buf *TrackedBuffer) {
+ idx.Info.formatFast(buf)
+ buf.WriteString(" (")
+ for i, col := range idx.Columns {
+ if i != 0 {
+ buf.WriteString(", ")
+ col.Column.formatFast(buf)
+ } else {
+ col.Column.formatFast(buf)
+ }
+ if col.Length != nil {
+ buf.WriteByte('(')
+ col.Length.formatFast(buf)
+ buf.WriteByte(')')
+ }
+ if col.Direction == DescOrder {
+ buf.WriteString(" desc")
+ }
+ }
+ buf.WriteByte(')')
+
+ for _, opt := range idx.Options {
+ buf.WriteByte(' ')
+ buf.WriteString(opt.Name)
+ if opt.String != "" {
+ buf.WriteByte(' ')
+ buf.WriteString(opt.String)
+ } else {
+ buf.WriteByte(' ')
+ opt.Value.formatFast(buf)
+ }
+ }
+}
+
+// formatFast formats the node.
+func (ii *IndexInfo) formatFast(buf *TrackedBuffer) {
+ if !ii.ConstraintName.IsEmpty() {
+ buf.WriteString("constraint ")
+ ii.ConstraintName.formatFast(buf)
+ buf.WriteByte(' ')
+ }
+ if ii.Primary {
+ buf.WriteString(ii.Type)
+ } else {
+ buf.WriteString(ii.Type)
+ if !ii.Name.IsEmpty() {
+ buf.WriteByte(' ')
+ ii.Name.formatFast(buf)
+ }
+ }
+}
+
+// formatFast formats the node.
+func (node *AutoIncSpec) formatFast(buf *TrackedBuffer) {
+ node.Column.formatFast(buf)
+ buf.WriteByte(' ')
+ buf.WriteString("using ")
+ node.Sequence.formatFast(buf)
+}
+
+// formatFast formats the node. The "CREATE VINDEX" preamble was formatted in
+// the containing DDL node Format, so this just prints the type, any
+// parameters, and optionally the owner
+func (node *VindexSpec) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("using ")
+ node.Type.formatFast(buf)
+
+ numParams := len(node.Params)
+ if numParams != 0 {
+ buf.WriteString(" with ")
+ for i, p := range node.Params {
+ if i != 0 {
+ buf.WriteString(", ")
+ }
+ p.formatFast(buf)
+ }
+ }
+}
+
+// formatFast formats the node.
+func (node VindexParam) formatFast(buf *TrackedBuffer) {
+ buf.WriteString(node.Key.String())
+ buf.WriteByte('=')
+ buf.WriteString(node.Val)
+}
+
+// formatFast formats the node.
+func (c *ConstraintDefinition) formatFast(buf *TrackedBuffer) {
+ if !c.Name.IsEmpty() {
+ buf.WriteString("constraint ")
+ c.Name.formatFast(buf)
+ buf.WriteByte(' ')
+ }
+ c.Details.Format(buf)
+}
+
+// formatFast formats the node.
+func (a ReferenceAction) formatFast(buf *TrackedBuffer) {
+ switch a {
+ case Restrict:
+ buf.WriteString("restrict")
+ case Cascade:
+ buf.WriteString("cascade")
+ case NoAction:
+ buf.WriteString("no action")
+ case SetNull:
+ buf.WriteString("set null")
+ case SetDefault:
+ buf.WriteString("set default")
+ }
+}
+
+// formatFast formats the node.
+func (f *ForeignKeyDefinition) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("foreign key ")
+ f.Source.formatFast(buf)
+ buf.WriteString(" references ")
+ f.ReferencedTable.formatFast(buf)
+ buf.WriteByte(' ')
+ f.ReferencedColumns.formatFast(buf)
+ if f.OnDelete != DefaultAction {
+ buf.WriteString(" on delete ")
+ f.OnDelete.formatFast(buf)
+ }
+ if f.OnUpdate != DefaultAction {
+ buf.WriteString(" on update ")
+ f.OnUpdate.formatFast(buf)
+ }
+}
+
+// formatFast formats the node.
+func (c *CheckConstraintDefinition) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("check (")
+ c.Expr.formatFast(buf)
+ buf.WriteByte(')')
+ if !c.Enforced {
+ buf.WriteString(" not enforced")
+ }
+}
+
+// formatFast formats the node.
+func (node *Show) formatFast(buf *TrackedBuffer) {
+ node.Internal.formatFast(buf)
+}
+
+// formatFast formats the node.
+func (node *ShowLegacy) formatFast(buf *TrackedBuffer) {
+ nodeType := strings.ToLower(node.Type)
+ if (nodeType == "tables" || nodeType == "columns" || nodeType == "fields" || nodeType == "index" || nodeType == "keys" || nodeType == "indexes" ||
+ nodeType == "databases" || nodeType == "schemas" || nodeType == "keyspaces" || nodeType == "vitess_keyspaces" || nodeType == "vitess_shards" || nodeType == "vitess_tablets") && node.ShowTablesOpt != nil {
+ opt := node.ShowTablesOpt
+ if node.Extended != "" {
+ buf.WriteString("show ")
+ buf.WriteString(node.Extended)
+ buf.WriteString(nodeType)
+ } else {
+ buf.WriteString("show ")
+ buf.WriteString(opt.Full)
+ buf.WriteString(nodeType)
+ }
+ if (nodeType == "columns" || nodeType == "fields") && node.HasOnTable() {
+ buf.WriteString(" from ")
+ node.OnTable.formatFast(buf)
+ }
+ if (nodeType == "index" || nodeType == "keys" || nodeType == "indexes") && node.HasOnTable() {
+ buf.WriteString(" from ")
+ node.OnTable.formatFast(buf)
+ }
+ if opt.DbName != "" {
+ buf.WriteString(" from ")
+ buf.WriteString(opt.DbName)
+ }
+ opt.Filter.formatFast(buf)
+ return
+ }
+ if node.Scope == ImplicitScope {
+ buf.WriteString("show ")
+ buf.WriteString(nodeType)
+ } else {
+ buf.WriteString("show ")
+ buf.WriteString(node.Scope.ToString())
+ buf.WriteByte(' ')
+ buf.WriteString(nodeType)
+ }
+ if node.HasOnTable() {
+ buf.WriteString(" on ")
+ node.OnTable.formatFast(buf)
+ }
+ if nodeType == "collation" && node.ShowCollationFilterOpt != nil {
+ buf.WriteString(" where ")
+ node.ShowCollationFilterOpt.formatFast(buf)
+ }
+ if nodeType == "charset" && node.ShowTablesOpt != nil {
+ node.ShowTablesOpt.Filter.formatFast(buf)
+ }
+ if node.HasTable() {
+ buf.WriteByte(' ')
+ node.Table.formatFast(buf)
+ }
+}
+
+// formatFast formats the node.
+func (node *ShowFilter) formatFast(buf *TrackedBuffer) {
+ if node == nil {
+ return
+ }
+ if node.Like != "" {
+ buf.WriteString(" like ")
+ sqltypes.BufEncodeStringSQL(buf.Builder, node.Like)
+ } else {
+ buf.WriteString(" where ")
+ node.Filter.formatFast(buf)
+ }
+}
+
+// formatFast formats the node.
+func (node *Use) formatFast(buf *TrackedBuffer) {
+ if node.DBName.v != "" {
+ buf.WriteString("use ")
+ node.DBName.formatFast(buf)
+ } else {
+ buf.WriteString("use")
+ }
+}
+
+// formatFast formats the node.
+func (node *Commit) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("commit")
+}
+
+// formatFast formats the node.
+func (node *Begin) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("begin")
+}
+
+// formatFast formats the node.
+func (node *Rollback) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("rollback")
+}
+
+// formatFast formats the node.
+func (node *SRollback) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("rollback to ")
+ node.Name.formatFast(buf)
+}
+
+// formatFast formats the node.
+func (node *Savepoint) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("savepoint ")
+ node.Name.formatFast(buf)
+}
+
+// formatFast formats the node.
+func (node *Release) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("release savepoint ")
+ node.Name.formatFast(buf)
+}
+
+// formatFast formats the node.
+func (node *ExplainStmt) formatFast(buf *TrackedBuffer) {
+ format := ""
+ switch node.Type {
+ case EmptyType:
+ case AnalyzeType:
+ format = AnalyzeStr + " "
+ default:
+ format = "format = " + node.Type.ToString() + " "
+ }
+ buf.WriteString("explain ")
+ buf.WriteString(format)
+ node.Statement.formatFast(buf)
+}
+
+// formatFast formats the node.
+func (node *ExplainTab) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("explain ")
+ node.Table.formatFast(buf)
+ if node.Wild != "" {
+ buf.WriteByte(' ')
+ buf.WriteString(node.Wild)
+ }
+}
+
+// formatFast formats the node.
+func (node *CallProc) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("call ")
+ node.Name.formatFast(buf)
+ buf.WriteByte('(')
+ node.Params.formatFast(buf)
+ buf.WriteByte(')')
+}
+
+// formatFast formats the node.
+func (node *OtherRead) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("otherread")
+}
+
+// formatFast formats the node.
+func (node *OtherAdmin) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("otheradmin")
+}
+
+// formatFast formats the node.
+func (node Comments) formatFast(buf *TrackedBuffer) {
+ for _, c := range node {
+ buf.WriteString(c)
+ buf.WriteByte(' ')
+ }
+}
+
+// formatFast formats the node.
+func (node SelectExprs) formatFast(buf *TrackedBuffer) {
+ var prefix string
+ for _, n := range node {
+ buf.WriteString(prefix)
+ n.formatFast(buf)
+ prefix = ", "
+ }
+}
+
+// formatFast formats the node.
+func (node *StarExpr) formatFast(buf *TrackedBuffer) {
+ if !node.TableName.IsEmpty() {
+ node.TableName.formatFast(buf)
+ buf.WriteByte('.')
+ }
+ buf.WriteByte('*')
+}
+
+// formatFast formats the node.
+func (node *AliasedExpr) formatFast(buf *TrackedBuffer) {
+ node.Expr.formatFast(buf)
+ if !node.As.IsEmpty() {
+ buf.WriteString(" as ")
+ node.As.formatFast(buf)
+ }
+}
+
+// formatFast formats the node.
+func (node *Nextval) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("next ")
+ node.Expr.formatFast(buf)
+ buf.WriteString(" values")
+}
+
+// formatFast formats the node.
+func (node Columns) formatFast(buf *TrackedBuffer) {
+ if node == nil {
+ return
+ }
+ prefix := "("
+ for _, n := range node {
+ buf.WriteString(prefix)
+ n.formatFast(buf)
+ prefix = ", "
+ }
+ buf.WriteString(")")
+}
+
+// formatFast formats the node
+func (node Partitions) formatFast(buf *TrackedBuffer) {
+ if node == nil {
+ return
+ }
+ prefix := " partition ("
+ for _, n := range node {
+ buf.WriteString(prefix)
+ n.formatFast(buf)
+ prefix = ", "
+ }
+ buf.WriteString(")")
+}
+
+// formatFast formats the node.
+func (node TableExprs) formatFast(buf *TrackedBuffer) {
+ var prefix string
+ for _, n := range node {
+ buf.WriteString(prefix)
+ n.formatFast(buf)
+ prefix = ", "
+ }
+}
+
+// formatFast formats the node.
+func (node *AliasedTableExpr) formatFast(buf *TrackedBuffer) {
+ node.Expr.formatFast(buf)
+ node.Partitions.formatFast(buf)
+ if !node.As.IsEmpty() {
+ buf.WriteString(" as ")
+ node.As.formatFast(buf)
+ }
+ if node.Hints != nil {
+ // Hint node provides the space padding.
+ node.Hints.formatFast(buf)
+ }
+}
+
+// formatFast formats the node.
+func (node TableNames) formatFast(buf *TrackedBuffer) {
+ var prefix string
+ for _, n := range node {
+ buf.WriteString(prefix)
+ n.formatFast(buf)
+ prefix = ", "
+ }
+}
+
+// formatFast formats the node.
+func (node TableName) formatFast(buf *TrackedBuffer) {
+ if node.IsEmpty() {
+ return
+ }
+ if !node.Qualifier.IsEmpty() {
+ node.Qualifier.formatFast(buf)
+ buf.WriteByte('.')
+ }
+ node.Name.formatFast(buf)
+}
+
+// formatFast formats the node.
+func (node *ParenTableExpr) formatFast(buf *TrackedBuffer) {
+ buf.WriteByte('(')
+ node.Exprs.formatFast(buf)
+ buf.WriteByte(')')
+}
+
+// formatFast formats the node.
+func (node JoinCondition) formatFast(buf *TrackedBuffer) {
+ if node.On != nil {
+ buf.WriteString(" on ")
+ node.On.formatFast(buf)
+ }
+ if node.Using != nil {
+ buf.WriteString(" using ")
+ node.Using.formatFast(buf)
+ }
+}
+
+// formatFast formats the node.
+func (node *JoinTableExpr) formatFast(buf *TrackedBuffer) {
+ node.LeftExpr.formatFast(buf)
+ buf.WriteByte(' ')
+ buf.WriteString(node.Join.ToString())
+ buf.WriteByte(' ')
+ node.RightExpr.formatFast(buf)
+ node.Condition.formatFast(buf)
+}
+
+// formatFast formats the node.
+func (node *IndexHints) formatFast(buf *TrackedBuffer) {
+ buf.WriteByte(' ')
+ buf.WriteString(node.Type.ToString())
+ buf.WriteString("index ")
+ if len(node.Indexes) == 0 {
+ buf.WriteString("()")
+ } else {
+ prefix := "("
+ for _, n := range node.Indexes {
+ buf.WriteString(prefix)
+ n.formatFast(buf)
+ prefix = ", "
+ }
+ buf.WriteByte(')')
+ }
+}
+
+// formatFast formats the node.
+func (node *Where) formatFast(buf *TrackedBuffer) {
+ if node == nil || node.Expr == nil {
+ return
+ }
+ buf.WriteByte(' ')
+ buf.WriteString(node.Type.ToString())
+ buf.WriteByte(' ')
+ node.Expr.formatFast(buf)
+}
+
+// formatFast formats the node.
+func (node Exprs) formatFast(buf *TrackedBuffer) {
+ var prefix string
+ for _, n := range node {
+ buf.WriteString(prefix)
+ n.formatFast(buf)
+ prefix = ", "
+ }
+}
+
+// formatFast formats the node.
+func (node *AndExpr) formatFast(buf *TrackedBuffer) {
+ buf.printExpr(node, node.Left, true)
+ buf.WriteString(" and ")
+ buf.printExpr(node, node.Right, false)
+}
+
+// formatFast formats the node.
+func (node *OrExpr) formatFast(buf *TrackedBuffer) {
+ buf.printExpr(node, node.Left, true)
+ buf.WriteString(" or ")
+ buf.printExpr(node, node.Right, false)
+}
+
+// formatFast formats the node.
+func (node *XorExpr) formatFast(buf *TrackedBuffer) {
+ buf.printExpr(node, node.Left, true)
+ buf.WriteString(" xor ")
+ buf.printExpr(node, node.Right, false)
+}
+
+// formatFast formats the node.
+func (node *NotExpr) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("not ")
+ buf.printExpr(node, node.Expr, true)
+}
+
+// formatFast formats the node.
+func (node *ComparisonExpr) formatFast(buf *TrackedBuffer) {
+ buf.printExpr(node, node.Left, true)
+ buf.WriteByte(' ')
+ buf.WriteString(node.Operator.ToString())
+ buf.WriteByte(' ')
+ buf.printExpr(node, node.Right, false)
+ if node.Escape != nil {
+ buf.WriteString(" escape ")
+ buf.printExpr(node, node.Escape, true)
+ }
+}
+
+// formatFast formats the node.
+func (node *RangeCond) formatFast(buf *TrackedBuffer) {
+ buf.printExpr(node, node.Left, true)
+ buf.WriteByte(' ')
+ buf.WriteString(node.Operator.ToString())
+ buf.WriteByte(' ')
+ buf.printExpr(node, node.From, true)
+ buf.WriteString(" and ")
+ buf.printExpr(node, node.To, false)
+}
+
+// formatFast formats the node.
+func (node *IsExpr) formatFast(buf *TrackedBuffer) {
+ buf.printExpr(node, node.Expr, true)
+ buf.WriteByte(' ')
+ buf.WriteString(node.Operator.ToString())
+}
+
+// formatFast formats the node.
+func (node *ExistsExpr) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("exists ")
+ buf.printExpr(node, node.Subquery, true)
+}
+
+// formatFast formats the node.
+func (node *Literal) formatFast(buf *TrackedBuffer) {
+ switch node.Type {
+ case StrVal:
+ sqltypes.MakeTrusted(sqltypes.VarBinary, node.Bytes()).EncodeSQL(buf)
+ case IntVal, FloatVal, HexNum:
+ buf.WriteString(node.Val)
+ case HexVal:
+ buf.WriteString("X'")
+ buf.WriteString(node.Val)
+ buf.WriteByte('\'')
+ case BitVal:
+ buf.WriteString("B'")
+ buf.WriteString(node.Val)
+ buf.WriteByte('\'')
+ default:
+ panic("unexpected")
+ }
+}
+
+// formatFast formats the node.
+func (node Argument) formatFast(buf *TrackedBuffer) {
+ buf.WriteArg(string(node))
+}
+
+// formatFast formats the node.
+func (node *NullVal) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("null")
+}
+
+// formatFast formats the node.
+func (node BoolVal) formatFast(buf *TrackedBuffer) {
+ if node {
+ buf.WriteString("true")
+ } else {
+ buf.WriteString("false")
+ }
+}
+
+// formatFast formats the node.
+func (node *ColName) formatFast(buf *TrackedBuffer) {
+ if !node.Qualifier.IsEmpty() {
+ node.Qualifier.formatFast(buf)
+ buf.WriteByte('.')
+ }
+ node.Name.formatFast(buf)
+}
+
+// formatFast formats the node.
+func (node ValTuple) formatFast(buf *TrackedBuffer) {
+ buf.WriteByte('(')
+ Exprs(node).formatFast(buf)
+ buf.WriteByte(')')
+}
+
+// formatFast formats the node.
+func (node *Subquery) formatFast(buf *TrackedBuffer) {
+ buf.WriteByte('(')
+ node.Select.formatFast(buf)
+ buf.WriteByte(')')
+}
+
+// formatFast formats the node.
+func (node *DerivedTable) formatFast(buf *TrackedBuffer) {
+ buf.WriteByte('(')
+ node.Select.formatFast(buf)
+ buf.WriteByte(')')
+}
+
+// formatFast formats the node.
+func (node ListArg) formatFast(buf *TrackedBuffer) {
+ buf.WriteArg(string(node))
+}
+
+// formatFast formats the node.
+func (node *BinaryExpr) formatFast(buf *TrackedBuffer) {
+ buf.printExpr(node, node.Left, true)
+ buf.WriteByte(' ')
+ buf.WriteString(node.Operator.ToString())
+ buf.WriteByte(' ')
+ buf.printExpr(node, node.Right, false)
+}
+
+// formatFast formats the node.
+func (node *UnaryExpr) formatFast(buf *TrackedBuffer) {
+ if _, unary := node.Expr.(*UnaryExpr); unary {
+ // They have same precedence so parenthesis is not required.
+ buf.WriteString(node.Operator.ToString())
+ buf.WriteByte(' ')
+ buf.printExpr(node, node.Expr, true)
+ return
+ }
+ buf.WriteString(node.Operator.ToString())
+ buf.printExpr(node, node.Expr, true)
+}
+
+// formatFast formats the node.
+func (node *IntervalExpr) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("interval ")
+ buf.printExpr(node, node.Expr, true)
+ buf.WriteByte(' ')
+ buf.WriteString(node.Unit)
+}
+
+// formatFast formats the node.
+func (node *TimestampFuncExpr) formatFast(buf *TrackedBuffer) {
+ buf.WriteString(node.Name)
+ buf.WriteByte('(')
+ buf.WriteString(node.Unit)
+ buf.WriteString(", ")
+ buf.printExpr(node, node.Expr1, true)
+ buf.WriteString(", ")
+ buf.printExpr(node, node.Expr2, true)
+ buf.WriteByte(')')
+}
+
+// formatFast formats the node.
+func (node *CurTimeFuncExpr) formatFast(buf *TrackedBuffer) {
+ buf.WriteString(node.Name.String())
+ buf.WriteByte('(')
+ buf.printExpr(node, node.Fsp, true)
+ buf.WriteByte(')')
+}
+
+// formatFast formats the node.
+func (node *CollateExpr) formatFast(buf *TrackedBuffer) {
+ buf.printExpr(node, node.Expr, true)
+ buf.WriteString(" collate ")
+ buf.WriteString(node.Charset)
+}
+
+// formatFast formats the node.
+func (node *FuncExpr) formatFast(buf *TrackedBuffer) {
+ var distinct string
+ if node.Distinct {
+ distinct = "distinct "
+ }
+ if !node.Qualifier.IsEmpty() {
+ node.Qualifier.formatFast(buf)
+ buf.WriteByte('.')
+ }
+ // Function names should not be back-quoted even
+ // if they match a reserved word, only if they contain illegal characters
+ funcName := node.Name.String()
+
+ if containEscapableChars(funcName, NoAt) {
+ writeEscapedString(buf, funcName)
+ } else {
+ buf.WriteString(funcName)
+ }
+ buf.WriteByte('(')
+ buf.WriteString(distinct)
+ node.Exprs.formatFast(buf)
+ buf.WriteByte(')')
+}
+
+// formatFast formats the node
+func (node *GroupConcatExpr) formatFast(buf *TrackedBuffer) {
+ if node.Distinct {
+ buf.WriteString("group_concat(")
+ buf.WriteString(DistinctStr)
+ node.Exprs.formatFast(buf)
+ node.OrderBy.formatFast(buf)
+ buf.WriteString(node.Separator)
+ node.Limit.formatFast(buf)
+ buf.WriteByte(')')
+ } else {
+ buf.WriteString("group_concat(")
+ node.Exprs.formatFast(buf)
+ node.OrderBy.formatFast(buf)
+ buf.WriteString(node.Separator)
+ node.Limit.formatFast(buf)
+ buf.WriteByte(')')
+ }
+}
+
+// formatFast formats the node.
+func (node *ValuesFuncExpr) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("values(")
+ buf.printExpr(node, node.Name, true)
+ buf.WriteByte(')')
+}
+
+// formatFast formats the node.
+func (node *SubstrExpr) formatFast(buf *TrackedBuffer) {
+ var val SQLNode
+ if node.Name != nil {
+ val = node.Name
+ } else {
+ val = node.StrVal
+ }
+
+ if node.To == nil {
+ buf.WriteString("substr(")
+ val.formatFast(buf)
+ buf.WriteString(", ")
+ buf.printExpr(node, node.From, true)
+ buf.WriteByte(')')
+ } else {
+ buf.WriteString("substr(")
+ val.formatFast(buf)
+ buf.WriteString(", ")
+ buf.printExpr(node, node.From, true)
+ buf.WriteString(", ")
+ buf.printExpr(node, node.To, true)
+ buf.WriteByte(')')
+ }
+}
+
+// formatFast formats the node.
+func (node *ConvertExpr) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("convert(")
+ buf.printExpr(node, node.Expr, true)
+ buf.WriteString(", ")
+ node.Type.formatFast(buf)
+ buf.WriteByte(')')
+}
+
+// formatFast formats the node.
+func (node *ConvertUsingExpr) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("convert(")
+ buf.printExpr(node, node.Expr, true)
+ buf.WriteString(" using ")
+ buf.WriteString(node.Type)
+ buf.WriteByte(')')
+}
+
+// formatFast formats the node.
+func (node *ConvertType) formatFast(buf *TrackedBuffer) {
+ buf.WriteString(node.Type)
+ if node.Length != nil {
+ buf.WriteByte('(')
+ node.Length.formatFast(buf)
+ if node.Scale != nil {
+ buf.WriteString(", ")
+ node.Scale.formatFast(buf)
+ }
+ buf.WriteByte(')')
+ }
+ if node.Charset != "" {
+ buf.WriteString(node.Operator.ToString())
+ buf.WriteByte(' ')
+ buf.WriteString(node.Charset)
+ }
+}
+
+// formatFast formats the node
+func (node *MatchExpr) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("match(")
+ node.Columns.formatFast(buf)
+ buf.WriteString(") against (")
+ buf.printExpr(node, node.Expr, true)
+ buf.WriteString(node.Option.ToString())
+ buf.WriteByte(')')
+}
+
+// formatFast formats the node.
+func (node *CaseExpr) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("case ")
+ if node.Expr != nil {
+ buf.printExpr(node, node.Expr, true)
+ buf.WriteByte(' ')
+ }
+ for _, when := range node.Whens {
+ when.formatFast(buf)
+ buf.WriteByte(' ')
+ }
+ if node.Else != nil {
+ buf.WriteString("else ")
+ buf.printExpr(node, node.Else, true)
+ buf.WriteByte(' ')
+ }
+ buf.WriteString("end")
+}
+
+// formatFast formats the node.
+func (node *Default) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("default")
+ if node.ColName != "" {
+ buf.WriteString("(")
+ formatID(buf, node.ColName, NoAt)
+ buf.WriteString(")")
+ }
+}
+
+// formatFast formats the node.
+func (node *When) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("when ")
+ node.Cond.formatFast(buf)
+ buf.WriteString(" then ")
+ node.Val.formatFast(buf)
+}
+
+// formatFast formats the node.
+func (node GroupBy) formatFast(buf *TrackedBuffer) {
+ prefix := " group by "
+ for _, n := range node {
+ buf.WriteString(prefix)
+ n.formatFast(buf)
+ prefix = ", "
+ }
+}
+
+// formatFast formats the node.
+func (node OrderBy) formatFast(buf *TrackedBuffer) {
+ prefix := " order by "
+ for _, n := range node {
+ buf.WriteString(prefix)
+ n.formatFast(buf)
+ prefix = ", "
+ }
+}
+
+// formatFast formats the node.
+func (node *Order) formatFast(buf *TrackedBuffer) {
+ if node, ok := node.Expr.(*NullVal); ok {
+ buf.printExpr(node, node, true)
+ return
+ }
+ if node, ok := node.Expr.(*FuncExpr); ok {
+ if node.Name.Lowered() == "rand" {
+ buf.printExpr(node, node, true)
+ return
+ }
+ }
+
+ node.Expr.formatFast(buf)
+ buf.WriteByte(' ')
+ buf.WriteString(node.Direction.ToString())
+}
+
+// formatFast formats the node.
+func (node *Limit) formatFast(buf *TrackedBuffer) {
+ if node == nil {
+ return
+ }
+ buf.WriteString(" limit ")
+ if node.Offset != nil {
+ node.Offset.formatFast(buf)
+ buf.WriteString(", ")
+ }
+ node.Rowcount.formatFast(buf)
+}
+
+// formatFast formats the node.
+func (node Values) formatFast(buf *TrackedBuffer) {
+ prefix := "values "
+ for _, n := range node {
+ buf.WriteString(prefix)
+ n.formatFast(buf)
+ prefix = ", "
+ }
+}
+
+// formatFast formats the node.
+func (node UpdateExprs) formatFast(buf *TrackedBuffer) {
+ var prefix string
+ for _, n := range node {
+ buf.WriteString(prefix)
+ n.formatFast(buf)
+ prefix = ", "
+ }
+}
+
+// formatFast formats the node.
+func (node *UpdateExpr) formatFast(buf *TrackedBuffer) {
+ node.Name.formatFast(buf)
+ buf.WriteString(" = ")
+ node.Expr.formatFast(buf)
+}
+
+// formatFast formats the node.
+func (node SetExprs) formatFast(buf *TrackedBuffer) {
+ var prefix string
+ for _, n := range node {
+ buf.WriteString(prefix)
+ n.formatFast(buf)
+ prefix = ", "
+ }
+}
+
+// formatFast formats the node.
+func (node *SetExpr) formatFast(buf *TrackedBuffer) {
+ if node.Scope != ImplicitScope {
+ buf.WriteString(node.Scope.ToString())
+ buf.WriteString(" ")
+ }
+ // We don't have to backtick set variable names.
+ switch {
+ case node.Name.EqualString("charset") || node.Name.EqualString("names"):
+ buf.WriteString(node.Name.String())
+ buf.WriteByte(' ')
+ node.Expr.formatFast(buf)
+ case node.Name.EqualString(TransactionStr):
+ literal := node.Expr.(*Literal)
+ buf.WriteString(node.Name.String())
+ buf.WriteByte(' ')
+ buf.WriteString(strings.ToLower(string(literal.Val)))
+ default:
+ node.Name.formatFast(buf)
+ buf.WriteString(" = ")
+ node.Expr.formatFast(buf)
+ }
+}
+
+// formatFast formats the node.
+func (node OnDup) formatFast(buf *TrackedBuffer) {
+ if node == nil {
+ return
+ }
+ buf.WriteString(" on duplicate key update ")
+ UpdateExprs(node).formatFast(buf)
+}
+
+// formatFast formats the node.
+func (node ColIdent) formatFast(buf *TrackedBuffer) {
+ for i := NoAt; i < node.at; i++ {
+ buf.WriteByte('@')
+ }
+ formatID(buf, node.val, node.at)
+}
+
+// formatFast formats the node.
+func (node TableIdent) formatFast(buf *TrackedBuffer) {
+ formatID(buf, node.v, NoAt)
+}
+
+// formatFast formats the node.
+func (node IsolationLevel) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("isolation level ")
+ switch node {
+ case ReadUncommitted:
+ buf.WriteString(ReadUncommittedStr)
+ case ReadCommitted:
+ buf.WriteString(ReadCommittedStr)
+ case RepeatableRead:
+ buf.WriteString(RepeatableReadStr)
+ case Serializable:
+ buf.WriteString(SerializableStr)
+ default:
+ buf.WriteString("Unknown Isolation level value")
+ }
+}
+
+// formatFast formats the node.
+func (node AccessMode) formatFast(buf *TrackedBuffer) {
+ if node == ReadOnly {
+ buf.WriteString(TxReadOnly)
+ } else {
+ buf.WriteString(TxReadWrite)
+ }
+}
+
+// formatFast formats the node.
+func (node *Load) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("AST node missing for Load type")
+}
+
+// formatFast formats the node.
+func (node *ShowBasic) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("show")
+ if node.Full {
+ buf.WriteString(" full")
+ }
+ buf.WriteString(node.Command.ToString())
+ if !node.Tbl.IsEmpty() {
+ buf.WriteString(" from ")
+ node.Tbl.formatFast(buf)
+ }
+ if !node.DbName.IsEmpty() {
+ buf.WriteString(" from ")
+ node.DbName.formatFast(buf)
+ }
+ node.Filter.formatFast(buf)
+}
+
+// formatFast formats the node.
+func (node *ShowCreate) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("show")
+ buf.WriteString(node.Command.ToString())
+ buf.WriteByte(' ')
+ node.Op.formatFast(buf)
+}
+
+// formatFast formats the node.
+func (node *SelectInto) formatFast(buf *TrackedBuffer) {
+ if node == nil {
+ return
+ }
+ buf.WriteString(node.Type.ToString())
+ buf.WriteString(node.FileName)
+ if node.Charset != "" {
+ buf.WriteString(" character set ")
+ buf.WriteString(node.Charset)
+ }
+ buf.WriteString(node.FormatOption)
+ buf.WriteString(node.ExportOption)
+ buf.WriteString(node.Manifest)
+ buf.WriteString(node.Overwrite)
+}
+
+// formatFast formats the node.
+func (node *CreateDatabase) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("create database ")
+ node.Comments.formatFast(buf)
+ if node.IfNotExists {
+ buf.WriteString("if not exists ")
+ }
+ node.DBName.formatFast(buf)
+ if node.CreateOptions != nil {
+ for _, createOption := range node.CreateOptions {
+ if createOption.IsDefault {
+ buf.WriteString(" default")
+ }
+ buf.WriteString(createOption.Type.ToString())
+ buf.WriteString(" " + createOption.Value)
+ }
+ }
+}
+
+// formatFast formats the node.
+func (node *AlterDatabase) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("alter database")
+ if !node.DBName.IsEmpty() {
+ buf.WriteByte(' ')
+ node.DBName.formatFast(buf)
+ }
+ if node.UpdateDataDirectory {
+ buf.WriteString(" upgrade data directory name")
+ }
+ if node.AlterOptions != nil {
+ for _, createOption := range node.AlterOptions {
+ if createOption.IsDefault {
+ buf.WriteString(" default")
+ }
+ buf.WriteString(createOption.Type.ToString())
+ buf.WriteString(" " + createOption.Value)
+ }
+ }
+}
+
+// formatFast formats the node.
+func (node *CreateTable) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("create ")
+ if node.Temp {
+ buf.WriteString("temporary ")
+ }
+ buf.WriteString("table ")
+
+ if node.IfNotExists {
+ buf.WriteString("if not exists ")
+ }
+ node.Table.formatFast(buf)
+
+ if node.OptLike != nil {
+ buf.WriteByte(' ')
+ node.OptLike.formatFast(buf)
+ }
+ if node.TableSpec != nil {
+ buf.WriteByte(' ')
+ node.TableSpec.formatFast(buf)
+ }
+}
+
+// formatFast formats the node.
+func (node *CreateView) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("create")
+ if node.IsReplace {
+ buf.WriteString(" or replace")
+ }
+ if node.Algorithm != "" {
+ buf.WriteString(" algorithm = ")
+ buf.WriteString(node.Algorithm)
+ }
+ if node.Definer != "" {
+ buf.WriteString(" definer = ")
+ buf.WriteString(node.Definer)
+ }
+ if node.Security != "" {
+ buf.WriteString(" sql security ")
+ buf.WriteString(node.Security)
+ }
+ buf.WriteString(" view ")
+ node.ViewName.formatFast(buf)
+ node.Columns.formatFast(buf)
+ buf.WriteString(" as ")
+ node.Select.formatFast(buf)
+ if node.CheckOption != "" {
+ buf.WriteString(" with ")
+ buf.WriteString(node.CheckOption)
+ buf.WriteString(" check option")
+ }
+}
+
+// formatFast formats the LockTables node.
+func (node *LockTables) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("lock tables ")
+ node.Tables[0].Table.formatFast(buf)
+ buf.WriteByte(' ')
+ buf.WriteString(node.Tables[0].Lock.ToString())
+ for i := 1; i < len(node.Tables); i++ {
+ buf.WriteString(", ")
+ node.Tables[i].Table.formatFast(buf)
+ buf.WriteByte(' ')
+ buf.WriteString(node.Tables[i].Lock.ToString())
+ }
+}
+
+// formatFast formats the UnlockTables node.
+func (node *UnlockTables) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("unlock tables")
+}
+
+// formatFast formats the node.
+func (node *AlterView) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("alter")
+ if node.Algorithm != "" {
+ buf.WriteString(" algorithm = ")
+ buf.WriteString(node.Algorithm)
+ }
+ if node.Definer != "" {
+ buf.WriteString(" definer = ")
+ buf.WriteString(node.Definer)
+ }
+ if node.Security != "" {
+ buf.WriteString(" sql security ")
+ buf.WriteString(node.Security)
+ }
+ buf.WriteString(" view ")
+ node.ViewName.formatFast(buf)
+ node.Columns.formatFast(buf)
+ buf.WriteString(" as ")
+ node.Select.formatFast(buf)
+ if node.CheckOption != "" {
+ buf.WriteString(" with ")
+ buf.WriteString(node.CheckOption)
+ buf.WriteString(" check option")
+ }
+}
+
+// formatFast formats the node.
+func (node *DropTable) formatFast(buf *TrackedBuffer) {
+ temp := ""
+ if node.Temp {
+ temp = " temporary"
+ }
+ exists := ""
+ if node.IfExists {
+ exists = " if exists"
+ }
+ buf.WriteString("drop")
+ buf.WriteString(temp)
+ buf.WriteString(" table")
+ buf.WriteString(exists)
+ buf.WriteByte(' ')
+ node.FromTables.formatFast(buf)
+}
+
+// formatFast formats the node.
+func (node *DropView) formatFast(buf *TrackedBuffer) {
+ exists := ""
+ if node.IfExists {
+ exists = " if exists"
+ }
+ buf.WriteString("drop view")
+ buf.WriteString(exists)
+ buf.WriteByte(' ')
+ node.FromTables.formatFast(buf)
+}
+
+// formatFast formats the AlterTable node.
+func (node *AlterTable) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("alter table ")
+ node.Table.formatFast(buf)
+ prefix := ""
+ for i, option := range node.AlterOptions {
+ if i != 0 {
+ buf.WriteString(",")
+ }
+ buf.WriteByte(' ')
+ option.formatFast(buf)
+ if node.PartitionSpec != nil && node.PartitionSpec.Action != RemoveAction {
+ prefix = ","
+ }
+ }
+ if node.PartitionSpec != nil {
+ buf.WriteString(prefix)
+ buf.WriteByte(' ')
+ node.PartitionSpec.formatFast(buf)
+ }
+}
+
+// formatFast formats the node.
+func (node *AddConstraintDefinition) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("add ")
+ node.ConstraintDefinition.formatFast(buf)
+}
+
+// formatFast formats the node.
+func (node *AddIndexDefinition) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("add ")
+ node.IndexDefinition.formatFast(buf)
+}
+
+// formatFast formats the node.
+func (node *AddColumns) formatFast(buf *TrackedBuffer) {
+
+ if len(node.Columns) == 1 {
+ buf.WriteString("add column ")
+ node.Columns[0].formatFast(buf)
+ if node.First != nil {
+ buf.WriteString(" first ")
+ node.First.formatFast(buf)
+ }
+ if node.After != nil {
+ buf.WriteString(" after ")
+ node.After.formatFast(buf)
+ }
+ } else {
+ for i, col := range node.Columns {
+ if i == 0 {
+ buf.WriteString("add column (")
+ col.formatFast(buf)
+ } else {
+ buf.WriteString(", ")
+ col.formatFast(buf)
+ }
+ }
+ buf.WriteString(")")
+ }
+}
+
+// formatFast formats the node.
+func (node AlgorithmValue) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("algorithm = ")
+ buf.WriteString(string(node))
+}
+
+// formatFast formats the node
+func (node *AlterColumn) formatFast(buf *TrackedBuffer) {
+ if node.DropDefault {
+ buf.WriteString("alter column ")
+ node.Column.formatFast(buf)
+ buf.WriteString(" drop default")
+ } else {
+ buf.WriteString("alter column ")
+ node.Column.formatFast(buf)
+ buf.WriteString(" set default")
+ buf.WriteByte(' ')
+ node.DefaultVal.formatFast(buf)
+ }
+}
+
+// formatFast formats the node
+func (node *ChangeColumn) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("change column ")
+ node.OldColumn.formatFast(buf)
+ buf.WriteByte(' ')
+ node.NewColDefinition.formatFast(buf)
+ if node.First != nil {
+ buf.WriteString(" first ")
+ node.First.formatFast(buf)
+ }
+ if node.After != nil {
+ buf.WriteString(" after ")
+ node.After.formatFast(buf)
+ }
+}
+
+// formatFast formats the node
+func (node *ModifyColumn) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("modify column ")
+ node.NewColDefinition.formatFast(buf)
+ if node.First != nil {
+ buf.WriteString(" first ")
+ node.First.formatFast(buf)
+ }
+ if node.After != nil {
+ buf.WriteString(" after ")
+ node.After.formatFast(buf)
+ }
+}
+
+// formatFast formats the node
+func (node *AlterCharset) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("convert to character set ")
+ buf.WriteString(node.CharacterSet)
+ if node.Collate != "" {
+ buf.WriteString(" collate ")
+ buf.WriteString(node.Collate)
+ }
+}
+
+// formatFast formats the node
+func (node *KeyState) formatFast(buf *TrackedBuffer) {
+ if node.Enable {
+ buf.WriteString("enable keys")
+ } else {
+ buf.WriteString("disable keys")
+ }
+
+}
+
+// formatFast formats the node
+func (node *TablespaceOperation) formatFast(buf *TrackedBuffer) {
+ if node.Import {
+ buf.WriteString("import tablespace")
+ } else {
+ buf.WriteString("discard tablespace")
+ }
+}
+
+// formatFast formats the node
+func (node *DropColumn) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("drop column ")
+ node.Name.formatFast(buf)
+}
+
+// formatFast formats the node
+func (node *DropKey) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("drop ")
+ buf.WriteString(node.Type.ToString())
+ if !node.Name.IsEmpty() {
+ buf.WriteByte(' ')
+ node.Name.formatFast(buf)
+ }
+}
+
+// formatFast formats the node
+func (node *Force) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("force")
+}
+
+// formatFast formats the node
+func (node *LockOption) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("lock ")
+ buf.WriteString(node.Type.ToString())
+}
+
+// formatFast formats the node
+func (node *OrderByOption) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("order by ")
+ prefix := ""
+ for _, n := range node.Cols {
+ buf.WriteString(prefix)
+ n.formatFast(buf)
+ prefix = ", "
+ }
+}
+
+// formatFast formats the node
+func (node *RenameTableName) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("rename ")
+ node.Table.formatFast(buf)
+}
+
+// formatFast formats the node
+func (node *RenameIndex) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("rename index ")
+ node.OldName.formatFast(buf)
+ buf.WriteString(" to ")
+ node.NewName.formatFast(buf)
+}
+
+// formatFast formats the node
+func (node *Validation) formatFast(buf *TrackedBuffer) {
+ if node.With {
+ buf.WriteString("with validation")
+ } else {
+ buf.WriteString("without validation")
+ }
+}
+
+// formatFast formats the node
+func (node TableOptions) formatFast(buf *TrackedBuffer) {
+ for i, option := range node {
+ if i != 0 {
+ buf.WriteString(" ")
+ }
+ buf.WriteString(option.Name)
+ if option.String != "" {
+ buf.WriteByte(' ')
+ buf.WriteString(option.String)
+ } else if option.Value != nil {
+ buf.WriteByte(' ')
+ option.Value.formatFast(buf)
+ } else {
+ buf.WriteString(" (")
+ option.Tables.formatFast(buf)
+ buf.WriteByte(')')
+ }
+ }
+}
+
+// formatFast formats the node
+func (node *TruncateTable) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("truncate table ")
+ node.Table.formatFast(buf)
+}
+
+// formatFast formats the node.
+func (node *RenameTable) formatFast(buf *TrackedBuffer) {
+ buf.WriteString("rename table")
+ prefix := " "
+ for _, pair := range node.TablePairs {
+ buf.WriteString(prefix)
+ pair.FromTable.formatFast(buf)
+ buf.WriteString(" to ")
+ pair.ToTable.formatFast(buf)
+ prefix = ", "
+ }
+}
diff --git a/go/vt/sqlparser/ast_funcs.go b/go/vt/sqlparser/ast_funcs.go
index ec2493d494b..f59d4804a3a 100644
--- a/go/vt/sqlparser/ast_funcs.go
+++ b/go/vt/sqlparser/ast_funcs.go
@@ -36,27 +36,7 @@ import (
// is interrupted, and the error is returned.
func Walk(visit Visit, nodes ...SQLNode) error {
for _, node := range nodes {
- if node == nil {
- continue
- }
- var err error
- var kontinue bool
- pre := func(cursor *Cursor) bool {
- // If we already have found an error, don't visit these nodes, just exit early
- if err != nil {
- return false
- }
- kontinue, err = visit(cursor.Node())
- if err != nil {
- return true // we have to return true here so that post gets called
- }
- return kontinue
- }
- post := func(cursor *Cursor) bool {
- return err == nil // now we can abort the traversal if an error was found
- }
-
- Rewrite(node, pre, post)
+ err := VisitSQLNode(node, visit)
if err != nil {
return err
}
@@ -66,6 +46,8 @@ func Walk(visit Visit, nodes ...SQLNode) error {
// Visit defines the signature of a function that
// can be used to visit all nodes of a parse tree.
+// returning false on kontinue means that children will not be visited
+// returning an error will abort the visitation and return the error
type Visit func(node SQLNode) (kontinue bool, err error)
// Append appends the SQLNode to the buffer.
@@ -392,9 +374,10 @@ func NewWhere(typ WhereType, expr Expr) *Where {
// then to is returned.
func ReplaceExpr(root, from, to Expr) Expr {
tmp := Rewrite(root, replaceExpr(from, to), nil)
+
expr, success := tmp.(Expr)
if !success {
- log.Errorf("Failed to rewrite expression. Rewriter returned a non-expression: " + String(tmp))
+ log.Errorf("Failed to rewrite expression. Rewriter returned a non-expression: %s", String(tmp))
return from
}
@@ -442,48 +425,48 @@ func (node *ComparisonExpr) IsImpossible() bool {
}
// NewStrLiteral builds a new StrVal.
-func NewStrLiteral(in []byte) *Literal {
+func NewStrLiteral(in string) *Literal {
return &Literal{Type: StrVal, Val: in}
}
// NewIntLiteral builds a new IntVal.
-func NewIntLiteral(in []byte) *Literal {
+func NewIntLiteral(in string) *Literal {
return &Literal{Type: IntVal, Val: in}
}
// NewFloatLiteral builds a new FloatVal.
-func NewFloatLiteral(in []byte) *Literal {
+func NewFloatLiteral(in string) *Literal {
return &Literal{Type: FloatVal, Val: in}
}
// NewHexNumLiteral builds a new HexNum.
-func NewHexNumLiteral(in []byte) *Literal {
+func NewHexNumLiteral(in string) *Literal {
return &Literal{Type: HexNum, Val: in}
}
// NewHexLiteral builds a new HexVal.
-func NewHexLiteral(in []byte) *Literal {
+func NewHexLiteral(in string) *Literal {
return &Literal{Type: HexVal, Val: in}
}
// NewBitLiteral builds a new BitVal containing a bit literal.
-func NewBitLiteral(in []byte) *Literal {
+func NewBitLiteral(in string) *Literal {
return &Literal{Type: BitVal, Val: in}
}
// NewArgument builds a new ValArg.
-func NewArgument(in []byte) Argument {
- return in
+func NewArgument(in string) Argument {
+ return Argument(in)
+}
+
+// Bytes return the []byte
+func (node *Literal) Bytes() []byte {
+ return []byte(node.Val)
}
// HexDecode decodes the hexval into bytes.
func (node *Literal) HexDecode() ([]byte, error) {
- dst := make([]byte, hex.DecodedLen(len([]byte(node.Val))))
- _, err := hex.Decode(dst, []byte(node.Val))
- if err != nil {
- return nil, err
- }
- return dst, err
+ return hex.DecodeString(node.Val)
}
// Equal returns true if the column names match.
@@ -693,11 +676,12 @@ func (node *TableIdent) UnmarshalJSON(b []byte) error {
func containEscapableChars(s string, at AtCount) bool {
isDbSystemVariable := at != NoAt
- for i, c := range s {
- letter := isLetter(uint16(c))
- systemVarChar := isDbSystemVariable && isCarat(uint16(c))
+ for i := range s {
+ c := uint16(s[i])
+ letter := isLetter(c)
+ systemVarChar := isDbSystemVariable && isCarat(c)
if !(letter || systemVarChar) {
- if i == 0 || !isDigit(uint16(c)) {
+ if i == 0 || !isDigit(c) {
return true
}
}
@@ -706,16 +690,12 @@ func containEscapableChars(s string, at AtCount) bool {
return false
}
-func isKeyword(s string) bool {
- _, isKeyword := keywords[s]
- return isKeyword
-}
-
-func formatID(buf *TrackedBuffer, original, lowered string, at AtCount) {
- if containEscapableChars(original, at) || isKeyword(lowered) {
+func formatID(buf *TrackedBuffer, original string, at AtCount) {
+ _, isKeyword := keywordLookupTable.LookupString(original)
+ if isKeyword || containEscapableChars(original, at) {
writeEscapedString(buf, original)
} else {
- buf.Myprintf("%s", original)
+ buf.WriteString(original)
}
}
@@ -816,6 +796,22 @@ func (node *ParenSelect) MakeDistinct() {
node.Select.MakeDistinct()
}
+// AddWhere adds the boolean expression to the
+// WHERE clause as an AND condition.
+func (node *Update) AddWhere(expr Expr) {
+ if node.Where == nil {
+ node.Where = &Where{
+ Type: WhereClause,
+ Expr: expr,
+ }
+ return
+ }
+ node.Where.Expr = &AndExpr{
+ Left: node.Where.Expr,
+ Right: expr,
+ }
+}
+
// AddOrder adds an order by element
func (node *Union) AddOrder(order *Order) {
node.OrderBy = append(node.OrderBy, order)
@@ -863,8 +859,6 @@ func (action DDLAction) ToString() string {
return RenameStr
case TruncateDDLAction:
return TruncateStr
- case FlushDDLAction:
- return FlushStr
case CreateVindexDDLAction:
return CreateVindexStr
case DropVindexDDLAction:
@@ -1213,24 +1207,59 @@ func (ty ShowCommandType) ToString() string {
return CharsetStr
case Collation:
return CollationStr
+ case Column:
+ return ColumnStr
+ case CreateDb:
+ return CreateDbStr
+ case CreateE:
+ return CreateEStr
+ case CreateF:
+ return CreateFStr
+ case CreateProc:
+ return CreateProcStr
+ case CreateTbl:
+ return CreateTblStr
+ case CreateTr:
+ return CreateTrStr
+ case CreateV:
+ return CreateVStr
case Database:
return DatabaseStr
+ case FunctionC:
+ return FunctionCStr
case Function:
return FunctionStr
+ case Index:
+ return IndexStr
+ case OpenTable:
+ return OpenTableStr
case Privilege:
return PrivilegeStr
+ case ProcedureC:
+ return ProcedureCStr
case Procedure:
return ProcedureStr
case StatusGlobal:
return StatusGlobalStr
case StatusSession:
return StatusSessionStr
+ case Table:
+ return TableStr
+ case TableStatus:
+ return TableStatusStr
+ case Trigger:
+ return TriggerStr
case VariableGlobal:
return VariableGlobalStr
case VariableSession:
return VariableSessionStr
+ case VitessMigrations:
+ return VitessMigrationsStr
+ case Keyspace:
+ return KeyspaceStr
default:
- return "Unknown ShowCommandType"
+ return "" +
+ "Unknown ShowCommandType"
}
}
@@ -1264,6 +1293,14 @@ func (lock LockOptionType) ToString() string {
}
}
+// CompliantName is used to get the name of the bind variable to use for this column name
+func (node *ColName) CompliantName(suffix string) string {
+ if !node.Qualifier.IsEmpty() {
+ return node.Qualifier.Name.CompliantName() + "_" + node.Name.CompliantName() + suffix
+ }
+ return node.Name.CompliantName() + suffix
+}
+
// AtCount represents the '@' count in ColIdent
type AtCount int
@@ -1275,3 +1312,24 @@ const (
// DoubleAt represnts @@
DoubleAt
)
+
+// handleUnaryMinus handles the case when a unary minus operator is seen in the parser. It takes 1 argument which is the expr to which the unary minus has been added to.
+func handleUnaryMinus(expr Expr) Expr {
+ if num, ok := expr.(*Literal); ok && num.Type == IntVal {
+ // Handle double negative
+ if num.Val[0] == '-' {
+ num.Val = num.Val[1:]
+ return num
+ }
+ return NewIntLiteral("-" + num.Val)
+ }
+ if unaryExpr, ok := expr.(*UnaryExpr); ok && unaryExpr.Operator == UMinusOp {
+ return unaryExpr.Expr
+ }
+ return &UnaryExpr{Operator: UMinusOp, Expr: expr}
+}
+
+// encodeSQLString encodes the string as a SQL string.
+func encodeSQLString(val string) string {
+ return sqltypes.EncodeStringSQL(val)
+}
diff --git a/go/vt/sqlparser/ast_rewrite.go b/go/vt/sqlparser/ast_rewrite.go
new file mode 100644
index 00000000000..68cbc4b27be
--- /dev/null
+++ b/go/vt/sqlparser/ast_rewrite.go
@@ -0,0 +1,5356 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+// Code generated by ASTHelperGen. DO NOT EDIT.
+
+package sqlparser
+
+func (a *application) rewriteSQLNode(parent SQLNode, node SQLNode, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ switch node := node.(type) {
+ case AccessMode:
+ return a.rewriteAccessMode(parent, node, replacer)
+ case *AddColumns:
+ return a.rewriteRefOfAddColumns(parent, node, replacer)
+ case *AddConstraintDefinition:
+ return a.rewriteRefOfAddConstraintDefinition(parent, node, replacer)
+ case *AddIndexDefinition:
+ return a.rewriteRefOfAddIndexDefinition(parent, node, replacer)
+ case AlgorithmValue:
+ return a.rewriteAlgorithmValue(parent, node, replacer)
+ case *AliasedExpr:
+ return a.rewriteRefOfAliasedExpr(parent, node, replacer)
+ case *AliasedTableExpr:
+ return a.rewriteRefOfAliasedTableExpr(parent, node, replacer)
+ case *AlterCharset:
+ return a.rewriteRefOfAlterCharset(parent, node, replacer)
+ case *AlterColumn:
+ return a.rewriteRefOfAlterColumn(parent, node, replacer)
+ case *AlterDatabase:
+ return a.rewriteRefOfAlterDatabase(parent, node, replacer)
+ case *AlterMigration:
+ return a.rewriteRefOfAlterMigration(parent, node, replacer)
+ case *AlterTable:
+ return a.rewriteRefOfAlterTable(parent, node, replacer)
+ case *AlterView:
+ return a.rewriteRefOfAlterView(parent, node, replacer)
+ case *AlterVschema:
+ return a.rewriteRefOfAlterVschema(parent, node, replacer)
+ case *AndExpr:
+ return a.rewriteRefOfAndExpr(parent, node, replacer)
+ case Argument:
+ return a.rewriteArgument(parent, node, replacer)
+ case *AutoIncSpec:
+ return a.rewriteRefOfAutoIncSpec(parent, node, replacer)
+ case *Begin:
+ return a.rewriteRefOfBegin(parent, node, replacer)
+ case *BinaryExpr:
+ return a.rewriteRefOfBinaryExpr(parent, node, replacer)
+ case BoolVal:
+ return a.rewriteBoolVal(parent, node, replacer)
+ case *CallProc:
+ return a.rewriteRefOfCallProc(parent, node, replacer)
+ case *CaseExpr:
+ return a.rewriteRefOfCaseExpr(parent, node, replacer)
+ case *ChangeColumn:
+ return a.rewriteRefOfChangeColumn(parent, node, replacer)
+ case *CheckConstraintDefinition:
+ return a.rewriteRefOfCheckConstraintDefinition(parent, node, replacer)
+ case ColIdent:
+ return a.rewriteColIdent(parent, node, replacer)
+ case *ColName:
+ return a.rewriteRefOfColName(parent, node, replacer)
+ case *CollateExpr:
+ return a.rewriteRefOfCollateExpr(parent, node, replacer)
+ case *ColumnDefinition:
+ return a.rewriteRefOfColumnDefinition(parent, node, replacer)
+ case *ColumnType:
+ return a.rewriteRefOfColumnType(parent, node, replacer)
+ case Columns:
+ return a.rewriteColumns(parent, node, replacer)
+ case Comments:
+ return a.rewriteComments(parent, node, replacer)
+ case *Commit:
+ return a.rewriteRefOfCommit(parent, node, replacer)
+ case *ComparisonExpr:
+ return a.rewriteRefOfComparisonExpr(parent, node, replacer)
+ case *ConstraintDefinition:
+ return a.rewriteRefOfConstraintDefinition(parent, node, replacer)
+ case *ConvertExpr:
+ return a.rewriteRefOfConvertExpr(parent, node, replacer)
+ case *ConvertType:
+ return a.rewriteRefOfConvertType(parent, node, replacer)
+ case *ConvertUsingExpr:
+ return a.rewriteRefOfConvertUsingExpr(parent, node, replacer)
+ case *CreateDatabase:
+ return a.rewriteRefOfCreateDatabase(parent, node, replacer)
+ case *CreateTable:
+ return a.rewriteRefOfCreateTable(parent, node, replacer)
+ case *CreateView:
+ return a.rewriteRefOfCreateView(parent, node, replacer)
+ case *CurTimeFuncExpr:
+ return a.rewriteRefOfCurTimeFuncExpr(parent, node, replacer)
+ case *Default:
+ return a.rewriteRefOfDefault(parent, node, replacer)
+ case *Delete:
+ return a.rewriteRefOfDelete(parent, node, replacer)
+ case *DerivedTable:
+ return a.rewriteRefOfDerivedTable(parent, node, replacer)
+ case *DropColumn:
+ return a.rewriteRefOfDropColumn(parent, node, replacer)
+ case *DropDatabase:
+ return a.rewriteRefOfDropDatabase(parent, node, replacer)
+ case *DropKey:
+ return a.rewriteRefOfDropKey(parent, node, replacer)
+ case *DropTable:
+ return a.rewriteRefOfDropTable(parent, node, replacer)
+ case *DropView:
+ return a.rewriteRefOfDropView(parent, node, replacer)
+ case *ExistsExpr:
+ return a.rewriteRefOfExistsExpr(parent, node, replacer)
+ case *ExplainStmt:
+ return a.rewriteRefOfExplainStmt(parent, node, replacer)
+ case *ExplainTab:
+ return a.rewriteRefOfExplainTab(parent, node, replacer)
+ case Exprs:
+ return a.rewriteExprs(parent, node, replacer)
+ case *Flush:
+ return a.rewriteRefOfFlush(parent, node, replacer)
+ case *Force:
+ return a.rewriteRefOfForce(parent, node, replacer)
+ case *ForeignKeyDefinition:
+ return a.rewriteRefOfForeignKeyDefinition(parent, node, replacer)
+ case *FuncExpr:
+ return a.rewriteRefOfFuncExpr(parent, node, replacer)
+ case GroupBy:
+ return a.rewriteGroupBy(parent, node, replacer)
+ case *GroupConcatExpr:
+ return a.rewriteRefOfGroupConcatExpr(parent, node, replacer)
+ case *IndexDefinition:
+ return a.rewriteRefOfIndexDefinition(parent, node, replacer)
+ case *IndexHints:
+ return a.rewriteRefOfIndexHints(parent, node, replacer)
+ case *IndexInfo:
+ return a.rewriteRefOfIndexInfo(parent, node, replacer)
+ case *Insert:
+ return a.rewriteRefOfInsert(parent, node, replacer)
+ case *IntervalExpr:
+ return a.rewriteRefOfIntervalExpr(parent, node, replacer)
+ case *IsExpr:
+ return a.rewriteRefOfIsExpr(parent, node, replacer)
+ case IsolationLevel:
+ return a.rewriteIsolationLevel(parent, node, replacer)
+ case JoinCondition:
+ return a.rewriteJoinCondition(parent, node, replacer)
+ case *JoinTableExpr:
+ return a.rewriteRefOfJoinTableExpr(parent, node, replacer)
+ case *KeyState:
+ return a.rewriteRefOfKeyState(parent, node, replacer)
+ case *Limit:
+ return a.rewriteRefOfLimit(parent, node, replacer)
+ case ListArg:
+ return a.rewriteListArg(parent, node, replacer)
+ case *Literal:
+ return a.rewriteRefOfLiteral(parent, node, replacer)
+ case *Load:
+ return a.rewriteRefOfLoad(parent, node, replacer)
+ case *LockOption:
+ return a.rewriteRefOfLockOption(parent, node, replacer)
+ case *LockTables:
+ return a.rewriteRefOfLockTables(parent, node, replacer)
+ case *MatchExpr:
+ return a.rewriteRefOfMatchExpr(parent, node, replacer)
+ case *ModifyColumn:
+ return a.rewriteRefOfModifyColumn(parent, node, replacer)
+ case *Nextval:
+ return a.rewriteRefOfNextval(parent, node, replacer)
+ case *NotExpr:
+ return a.rewriteRefOfNotExpr(parent, node, replacer)
+ case *NullVal:
+ return a.rewriteRefOfNullVal(parent, node, replacer)
+ case OnDup:
+ return a.rewriteOnDup(parent, node, replacer)
+ case *OptLike:
+ return a.rewriteRefOfOptLike(parent, node, replacer)
+ case *OrExpr:
+ return a.rewriteRefOfOrExpr(parent, node, replacer)
+ case *Order:
+ return a.rewriteRefOfOrder(parent, node, replacer)
+ case OrderBy:
+ return a.rewriteOrderBy(parent, node, replacer)
+ case *OrderByOption:
+ return a.rewriteRefOfOrderByOption(parent, node, replacer)
+ case *OtherAdmin:
+ return a.rewriteRefOfOtherAdmin(parent, node, replacer)
+ case *OtherRead:
+ return a.rewriteRefOfOtherRead(parent, node, replacer)
+ case *ParenSelect:
+ return a.rewriteRefOfParenSelect(parent, node, replacer)
+ case *ParenTableExpr:
+ return a.rewriteRefOfParenTableExpr(parent, node, replacer)
+ case *PartitionDefinition:
+ return a.rewriteRefOfPartitionDefinition(parent, node, replacer)
+ case *PartitionSpec:
+ return a.rewriteRefOfPartitionSpec(parent, node, replacer)
+ case Partitions:
+ return a.rewritePartitions(parent, node, replacer)
+ case *RangeCond:
+ return a.rewriteRefOfRangeCond(parent, node, replacer)
+ case ReferenceAction:
+ return a.rewriteReferenceAction(parent, node, replacer)
+ case *Release:
+ return a.rewriteRefOfRelease(parent, node, replacer)
+ case *RenameIndex:
+ return a.rewriteRefOfRenameIndex(parent, node, replacer)
+ case *RenameTable:
+ return a.rewriteRefOfRenameTable(parent, node, replacer)
+ case *RenameTableName:
+ return a.rewriteRefOfRenameTableName(parent, node, replacer)
+ case *RevertMigration:
+ return a.rewriteRefOfRevertMigration(parent, node, replacer)
+ case *Rollback:
+ return a.rewriteRefOfRollback(parent, node, replacer)
+ case *SRollback:
+ return a.rewriteRefOfSRollback(parent, node, replacer)
+ case *Savepoint:
+ return a.rewriteRefOfSavepoint(parent, node, replacer)
+ case *Select:
+ return a.rewriteRefOfSelect(parent, node, replacer)
+ case SelectExprs:
+ return a.rewriteSelectExprs(parent, node, replacer)
+ case *SelectInto:
+ return a.rewriteRefOfSelectInto(parent, node, replacer)
+ case *Set:
+ return a.rewriteRefOfSet(parent, node, replacer)
+ case *SetExpr:
+ return a.rewriteRefOfSetExpr(parent, node, replacer)
+ case SetExprs:
+ return a.rewriteSetExprs(parent, node, replacer)
+ case *SetTransaction:
+ return a.rewriteRefOfSetTransaction(parent, node, replacer)
+ case *Show:
+ return a.rewriteRefOfShow(parent, node, replacer)
+ case *ShowBasic:
+ return a.rewriteRefOfShowBasic(parent, node, replacer)
+ case *ShowCreate:
+ return a.rewriteRefOfShowCreate(parent, node, replacer)
+ case *ShowFilter:
+ return a.rewriteRefOfShowFilter(parent, node, replacer)
+ case *ShowLegacy:
+ return a.rewriteRefOfShowLegacy(parent, node, replacer)
+ case *StarExpr:
+ return a.rewriteRefOfStarExpr(parent, node, replacer)
+ case *Stream:
+ return a.rewriteRefOfStream(parent, node, replacer)
+ case *Subquery:
+ return a.rewriteRefOfSubquery(parent, node, replacer)
+ case *SubstrExpr:
+ return a.rewriteRefOfSubstrExpr(parent, node, replacer)
+ case TableExprs:
+ return a.rewriteTableExprs(parent, node, replacer)
+ case TableIdent:
+ return a.rewriteTableIdent(parent, node, replacer)
+ case TableName:
+ return a.rewriteTableName(parent, node, replacer)
+ case TableNames:
+ return a.rewriteTableNames(parent, node, replacer)
+ case TableOptions:
+ return a.rewriteTableOptions(parent, node, replacer)
+ case *TableSpec:
+ return a.rewriteRefOfTableSpec(parent, node, replacer)
+ case *TablespaceOperation:
+ return a.rewriteRefOfTablespaceOperation(parent, node, replacer)
+ case *TimestampFuncExpr:
+ return a.rewriteRefOfTimestampFuncExpr(parent, node, replacer)
+ case *TruncateTable:
+ return a.rewriteRefOfTruncateTable(parent, node, replacer)
+ case *UnaryExpr:
+ return a.rewriteRefOfUnaryExpr(parent, node, replacer)
+ case *Union:
+ return a.rewriteRefOfUnion(parent, node, replacer)
+ case *UnionSelect:
+ return a.rewriteRefOfUnionSelect(parent, node, replacer)
+ case *UnlockTables:
+ return a.rewriteRefOfUnlockTables(parent, node, replacer)
+ case *Update:
+ return a.rewriteRefOfUpdate(parent, node, replacer)
+ case *UpdateExpr:
+ return a.rewriteRefOfUpdateExpr(parent, node, replacer)
+ case UpdateExprs:
+ return a.rewriteUpdateExprs(parent, node, replacer)
+ case *Use:
+ return a.rewriteRefOfUse(parent, node, replacer)
+ case *VStream:
+ return a.rewriteRefOfVStream(parent, node, replacer)
+ case ValTuple:
+ return a.rewriteValTuple(parent, node, replacer)
+ case *Validation:
+ return a.rewriteRefOfValidation(parent, node, replacer)
+ case Values:
+ return a.rewriteValues(parent, node, replacer)
+ case *ValuesFuncExpr:
+ return a.rewriteRefOfValuesFuncExpr(parent, node, replacer)
+ case VindexParam:
+ return a.rewriteVindexParam(parent, node, replacer)
+ case *VindexSpec:
+ return a.rewriteRefOfVindexSpec(parent, node, replacer)
+ case *When:
+ return a.rewriteRefOfWhen(parent, node, replacer)
+ case *Where:
+ return a.rewriteRefOfWhere(parent, node, replacer)
+ case *XorExpr:
+ return a.rewriteRefOfXorExpr(parent, node, replacer)
+ default:
+ // this should never happen
+ return true
+ }
+}
+func (a *application) rewriteRefOfAddColumns(parent SQLNode, node *AddColumns, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ for x, el := range node.Columns {
+ if !a.rewriteRefOfColumnDefinition(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent SQLNode) {
+ parent.(*AddColumns).Columns[idx] = newNode.(*ColumnDefinition)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ if !a.rewriteRefOfColName(node, node.First, func(newNode, parent SQLNode) {
+ parent.(*AddColumns).First = newNode.(*ColName)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfColName(node, node.After, func(newNode, parent SQLNode) {
+ parent.(*AddColumns).After = newNode.(*ColName)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfAddConstraintDefinition(parent SQLNode, node *AddConstraintDefinition, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteRefOfConstraintDefinition(node, node.ConstraintDefinition, func(newNode, parent SQLNode) {
+ parent.(*AddConstraintDefinition).ConstraintDefinition = newNode.(*ConstraintDefinition)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfAddIndexDefinition(parent SQLNode, node *AddIndexDefinition, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteRefOfIndexDefinition(node, node.IndexDefinition, func(newNode, parent SQLNode) {
+ parent.(*AddIndexDefinition).IndexDefinition = newNode.(*IndexDefinition)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfAliasedExpr(parent SQLNode, node *AliasedExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteExpr(node, node.Expr, func(newNode, parent SQLNode) {
+ parent.(*AliasedExpr).Expr = newNode.(Expr)
+ }) {
+ return false
+ }
+ if !a.rewriteColIdent(node, node.As, func(newNode, parent SQLNode) {
+ parent.(*AliasedExpr).As = newNode.(ColIdent)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfAliasedTableExpr(parent SQLNode, node *AliasedTableExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteSimpleTableExpr(node, node.Expr, func(newNode, parent SQLNode) {
+ parent.(*AliasedTableExpr).Expr = newNode.(SimpleTableExpr)
+ }) {
+ return false
+ }
+ if !a.rewritePartitions(node, node.Partitions, func(newNode, parent SQLNode) {
+ parent.(*AliasedTableExpr).Partitions = newNode.(Partitions)
+ }) {
+ return false
+ }
+ if !a.rewriteTableIdent(node, node.As, func(newNode, parent SQLNode) {
+ parent.(*AliasedTableExpr).As = newNode.(TableIdent)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfIndexHints(node, node.Hints, func(newNode, parent SQLNode) {
+ parent.(*AliasedTableExpr).Hints = newNode.(*IndexHints)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfAlterCharset(parent SQLNode, node *AlterCharset, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfAlterColumn(parent SQLNode, node *AlterColumn, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteRefOfColName(node, node.Column, func(newNode, parent SQLNode) {
+ parent.(*AlterColumn).Column = newNode.(*ColName)
+ }) {
+ return false
+ }
+ if !a.rewriteExpr(node, node.DefaultVal, func(newNode, parent SQLNode) {
+ parent.(*AlterColumn).DefaultVal = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfAlterDatabase(parent SQLNode, node *AlterDatabase, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteTableIdent(node, node.DBName, func(newNode, parent SQLNode) {
+ parent.(*AlterDatabase).DBName = newNode.(TableIdent)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfAlterMigration(parent SQLNode, node *AlterMigration, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfAlterTable(parent SQLNode, node *AlterTable, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteTableName(node, node.Table, func(newNode, parent SQLNode) {
+ parent.(*AlterTable).Table = newNode.(TableName)
+ }) {
+ return false
+ }
+ for x, el := range node.AlterOptions {
+ if !a.rewriteAlterOption(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent SQLNode) {
+ parent.(*AlterTable).AlterOptions[idx] = newNode.(AlterOption)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ if !a.rewriteRefOfPartitionSpec(node, node.PartitionSpec, func(newNode, parent SQLNode) {
+ parent.(*AlterTable).PartitionSpec = newNode.(*PartitionSpec)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfAlterView(parent SQLNode, node *AlterView, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteTableName(node, node.ViewName, func(newNode, parent SQLNode) {
+ parent.(*AlterView).ViewName = newNode.(TableName)
+ }) {
+ return false
+ }
+ if !a.rewriteColumns(node, node.Columns, func(newNode, parent SQLNode) {
+ parent.(*AlterView).Columns = newNode.(Columns)
+ }) {
+ return false
+ }
+ if !a.rewriteSelectStatement(node, node.Select, func(newNode, parent SQLNode) {
+ parent.(*AlterView).Select = newNode.(SelectStatement)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfAlterVschema(parent SQLNode, node *AlterVschema, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteTableName(node, node.Table, func(newNode, parent SQLNode) {
+ parent.(*AlterVschema).Table = newNode.(TableName)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfVindexSpec(node, node.VindexSpec, func(newNode, parent SQLNode) {
+ parent.(*AlterVschema).VindexSpec = newNode.(*VindexSpec)
+ }) {
+ return false
+ }
+ for x, el := range node.VindexCols {
+ if !a.rewriteColIdent(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent SQLNode) {
+ parent.(*AlterVschema).VindexCols[idx] = newNode.(ColIdent)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ if !a.rewriteRefOfAutoIncSpec(node, node.AutoIncSpec, func(newNode, parent SQLNode) {
+ parent.(*AlterVschema).AutoIncSpec = newNode.(*AutoIncSpec)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfAndExpr(parent SQLNode, node *AndExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteExpr(node, node.Left, func(newNode, parent SQLNode) {
+ parent.(*AndExpr).Left = newNode.(Expr)
+ }) {
+ return false
+ }
+ if !a.rewriteExpr(node, node.Right, func(newNode, parent SQLNode) {
+ parent.(*AndExpr).Right = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfAutoIncSpec(parent SQLNode, node *AutoIncSpec, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteColIdent(node, node.Column, func(newNode, parent SQLNode) {
+ parent.(*AutoIncSpec).Column = newNode.(ColIdent)
+ }) {
+ return false
+ }
+ if !a.rewriteTableName(node, node.Sequence, func(newNode, parent SQLNode) {
+ parent.(*AutoIncSpec).Sequence = newNode.(TableName)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfBegin(parent SQLNode, node *Begin, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfBinaryExpr(parent SQLNode, node *BinaryExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteExpr(node, node.Left, func(newNode, parent SQLNode) {
+ parent.(*BinaryExpr).Left = newNode.(Expr)
+ }) {
+ return false
+ }
+ if !a.rewriteExpr(node, node.Right, func(newNode, parent SQLNode) {
+ parent.(*BinaryExpr).Right = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfCallProc(parent SQLNode, node *CallProc, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteTableName(node, node.Name, func(newNode, parent SQLNode) {
+ parent.(*CallProc).Name = newNode.(TableName)
+ }) {
+ return false
+ }
+ if !a.rewriteExprs(node, node.Params, func(newNode, parent SQLNode) {
+ parent.(*CallProc).Params = newNode.(Exprs)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfCaseExpr(parent SQLNode, node *CaseExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteExpr(node, node.Expr, func(newNode, parent SQLNode) {
+ parent.(*CaseExpr).Expr = newNode.(Expr)
+ }) {
+ return false
+ }
+ for x, el := range node.Whens {
+ if !a.rewriteRefOfWhen(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent SQLNode) {
+ parent.(*CaseExpr).Whens[idx] = newNode.(*When)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ if !a.rewriteExpr(node, node.Else, func(newNode, parent SQLNode) {
+ parent.(*CaseExpr).Else = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfChangeColumn(parent SQLNode, node *ChangeColumn, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteRefOfColName(node, node.OldColumn, func(newNode, parent SQLNode) {
+ parent.(*ChangeColumn).OldColumn = newNode.(*ColName)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfColumnDefinition(node, node.NewColDefinition, func(newNode, parent SQLNode) {
+ parent.(*ChangeColumn).NewColDefinition = newNode.(*ColumnDefinition)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfColName(node, node.First, func(newNode, parent SQLNode) {
+ parent.(*ChangeColumn).First = newNode.(*ColName)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfColName(node, node.After, func(newNode, parent SQLNode) {
+ parent.(*ChangeColumn).After = newNode.(*ColName)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfCheckConstraintDefinition(parent SQLNode, node *CheckConstraintDefinition, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteExpr(node, node.Expr, func(newNode, parent SQLNode) {
+ parent.(*CheckConstraintDefinition).Expr = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteColIdent(parent SQLNode, node ColIdent, replacer replacerFunc) bool {
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfColName(parent SQLNode, node *ColName, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteColIdent(node, node.Name, func(newNode, parent SQLNode) {
+ parent.(*ColName).Name = newNode.(ColIdent)
+ }) {
+ return false
+ }
+ if !a.rewriteTableName(node, node.Qualifier, func(newNode, parent SQLNode) {
+ parent.(*ColName).Qualifier = newNode.(TableName)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfCollateExpr(parent SQLNode, node *CollateExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteExpr(node, node.Expr, func(newNode, parent SQLNode) {
+ parent.(*CollateExpr).Expr = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfColumnDefinition(parent SQLNode, node *ColumnDefinition, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteColIdent(node, node.Name, func(newNode, parent SQLNode) {
+ parent.(*ColumnDefinition).Name = newNode.(ColIdent)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfColumnType(parent SQLNode, node *ColumnType, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteRefOfLiteral(node, node.Length, func(newNode, parent SQLNode) {
+ parent.(*ColumnType).Length = newNode.(*Literal)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfLiteral(node, node.Scale, func(newNode, parent SQLNode) {
+ parent.(*ColumnType).Scale = newNode.(*Literal)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteColumns(parent SQLNode, node Columns, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ for x, el := range node {
+ if !a.rewriteColIdent(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent SQLNode) {
+ parent.(Columns)[idx] = newNode.(ColIdent)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteComments(parent SQLNode, node Comments, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfCommit(parent SQLNode, node *Commit, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfComparisonExpr(parent SQLNode, node *ComparisonExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteExpr(node, node.Left, func(newNode, parent SQLNode) {
+ parent.(*ComparisonExpr).Left = newNode.(Expr)
+ }) {
+ return false
+ }
+ if !a.rewriteExpr(node, node.Right, func(newNode, parent SQLNode) {
+ parent.(*ComparisonExpr).Right = newNode.(Expr)
+ }) {
+ return false
+ }
+ if !a.rewriteExpr(node, node.Escape, func(newNode, parent SQLNode) {
+ parent.(*ComparisonExpr).Escape = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfConstraintDefinition(parent SQLNode, node *ConstraintDefinition, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteColIdent(node, node.Name, func(newNode, parent SQLNode) {
+ parent.(*ConstraintDefinition).Name = newNode.(ColIdent)
+ }) {
+ return false
+ }
+ if !a.rewriteConstraintInfo(node, node.Details, func(newNode, parent SQLNode) {
+ parent.(*ConstraintDefinition).Details = newNode.(ConstraintInfo)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfConvertExpr(parent SQLNode, node *ConvertExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteExpr(node, node.Expr, func(newNode, parent SQLNode) {
+ parent.(*ConvertExpr).Expr = newNode.(Expr)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfConvertType(node, node.Type, func(newNode, parent SQLNode) {
+ parent.(*ConvertExpr).Type = newNode.(*ConvertType)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfConvertType(parent SQLNode, node *ConvertType, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteRefOfLiteral(node, node.Length, func(newNode, parent SQLNode) {
+ parent.(*ConvertType).Length = newNode.(*Literal)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfLiteral(node, node.Scale, func(newNode, parent SQLNode) {
+ parent.(*ConvertType).Scale = newNode.(*Literal)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfConvertUsingExpr(parent SQLNode, node *ConvertUsingExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteExpr(node, node.Expr, func(newNode, parent SQLNode) {
+ parent.(*ConvertUsingExpr).Expr = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfCreateDatabase(parent SQLNode, node *CreateDatabase, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteComments(node, node.Comments, func(newNode, parent SQLNode) {
+ parent.(*CreateDatabase).Comments = newNode.(Comments)
+ }) {
+ return false
+ }
+ if !a.rewriteTableIdent(node, node.DBName, func(newNode, parent SQLNode) {
+ parent.(*CreateDatabase).DBName = newNode.(TableIdent)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfCreateTable(parent SQLNode, node *CreateTable, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteTableName(node, node.Table, func(newNode, parent SQLNode) {
+ parent.(*CreateTable).Table = newNode.(TableName)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfTableSpec(node, node.TableSpec, func(newNode, parent SQLNode) {
+ parent.(*CreateTable).TableSpec = newNode.(*TableSpec)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfOptLike(node, node.OptLike, func(newNode, parent SQLNode) {
+ parent.(*CreateTable).OptLike = newNode.(*OptLike)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfCreateView(parent SQLNode, node *CreateView, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteTableName(node, node.ViewName, func(newNode, parent SQLNode) {
+ parent.(*CreateView).ViewName = newNode.(TableName)
+ }) {
+ return false
+ }
+ if !a.rewriteColumns(node, node.Columns, func(newNode, parent SQLNode) {
+ parent.(*CreateView).Columns = newNode.(Columns)
+ }) {
+ return false
+ }
+ if !a.rewriteSelectStatement(node, node.Select, func(newNode, parent SQLNode) {
+ parent.(*CreateView).Select = newNode.(SelectStatement)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfCurTimeFuncExpr(parent SQLNode, node *CurTimeFuncExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteColIdent(node, node.Name, func(newNode, parent SQLNode) {
+ parent.(*CurTimeFuncExpr).Name = newNode.(ColIdent)
+ }) {
+ return false
+ }
+ if !a.rewriteExpr(node, node.Fsp, func(newNode, parent SQLNode) {
+ parent.(*CurTimeFuncExpr).Fsp = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfDefault(parent SQLNode, node *Default, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfDelete(parent SQLNode, node *Delete, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteComments(node, node.Comments, func(newNode, parent SQLNode) {
+ parent.(*Delete).Comments = newNode.(Comments)
+ }) {
+ return false
+ }
+ if !a.rewriteTableNames(node, node.Targets, func(newNode, parent SQLNode) {
+ parent.(*Delete).Targets = newNode.(TableNames)
+ }) {
+ return false
+ }
+ if !a.rewriteTableExprs(node, node.TableExprs, func(newNode, parent SQLNode) {
+ parent.(*Delete).TableExprs = newNode.(TableExprs)
+ }) {
+ return false
+ }
+ if !a.rewritePartitions(node, node.Partitions, func(newNode, parent SQLNode) {
+ parent.(*Delete).Partitions = newNode.(Partitions)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfWhere(node, node.Where, func(newNode, parent SQLNode) {
+ parent.(*Delete).Where = newNode.(*Where)
+ }) {
+ return false
+ }
+ if !a.rewriteOrderBy(node, node.OrderBy, func(newNode, parent SQLNode) {
+ parent.(*Delete).OrderBy = newNode.(OrderBy)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfLimit(node, node.Limit, func(newNode, parent SQLNode) {
+ parent.(*Delete).Limit = newNode.(*Limit)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfDerivedTable(parent SQLNode, node *DerivedTable, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteSelectStatement(node, node.Select, func(newNode, parent SQLNode) {
+ parent.(*DerivedTable).Select = newNode.(SelectStatement)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfDropColumn(parent SQLNode, node *DropColumn, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteRefOfColName(node, node.Name, func(newNode, parent SQLNode) {
+ parent.(*DropColumn).Name = newNode.(*ColName)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfDropDatabase(parent SQLNode, node *DropDatabase, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteComments(node, node.Comments, func(newNode, parent SQLNode) {
+ parent.(*DropDatabase).Comments = newNode.(Comments)
+ }) {
+ return false
+ }
+ if !a.rewriteTableIdent(node, node.DBName, func(newNode, parent SQLNode) {
+ parent.(*DropDatabase).DBName = newNode.(TableIdent)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfDropKey(parent SQLNode, node *DropKey, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteColIdent(node, node.Name, func(newNode, parent SQLNode) {
+ parent.(*DropKey).Name = newNode.(ColIdent)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfDropTable(parent SQLNode, node *DropTable, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteTableNames(node, node.FromTables, func(newNode, parent SQLNode) {
+ parent.(*DropTable).FromTables = newNode.(TableNames)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfDropView(parent SQLNode, node *DropView, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteTableNames(node, node.FromTables, func(newNode, parent SQLNode) {
+ parent.(*DropView).FromTables = newNode.(TableNames)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfExistsExpr(parent SQLNode, node *ExistsExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteRefOfSubquery(node, node.Subquery, func(newNode, parent SQLNode) {
+ parent.(*ExistsExpr).Subquery = newNode.(*Subquery)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfExplainStmt(parent SQLNode, node *ExplainStmt, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteStatement(node, node.Statement, func(newNode, parent SQLNode) {
+ parent.(*ExplainStmt).Statement = newNode.(Statement)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfExplainTab(parent SQLNode, node *ExplainTab, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteTableName(node, node.Table, func(newNode, parent SQLNode) {
+ parent.(*ExplainTab).Table = newNode.(TableName)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteExprs(parent SQLNode, node Exprs, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ for x, el := range node {
+ if !a.rewriteExpr(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent SQLNode) {
+ parent.(Exprs)[idx] = newNode.(Expr)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfFlush(parent SQLNode, node *Flush, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteTableNames(node, node.TableNames, func(newNode, parent SQLNode) {
+ parent.(*Flush).TableNames = newNode.(TableNames)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfForce(parent SQLNode, node *Force, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfForeignKeyDefinition(parent SQLNode, node *ForeignKeyDefinition, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteColumns(node, node.Source, func(newNode, parent SQLNode) {
+ parent.(*ForeignKeyDefinition).Source = newNode.(Columns)
+ }) {
+ return false
+ }
+ if !a.rewriteTableName(node, node.ReferencedTable, func(newNode, parent SQLNode) {
+ parent.(*ForeignKeyDefinition).ReferencedTable = newNode.(TableName)
+ }) {
+ return false
+ }
+ if !a.rewriteColumns(node, node.ReferencedColumns, func(newNode, parent SQLNode) {
+ parent.(*ForeignKeyDefinition).ReferencedColumns = newNode.(Columns)
+ }) {
+ return false
+ }
+ if !a.rewriteReferenceAction(node, node.OnDelete, func(newNode, parent SQLNode) {
+ parent.(*ForeignKeyDefinition).OnDelete = newNode.(ReferenceAction)
+ }) {
+ return false
+ }
+ if !a.rewriteReferenceAction(node, node.OnUpdate, func(newNode, parent SQLNode) {
+ parent.(*ForeignKeyDefinition).OnUpdate = newNode.(ReferenceAction)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfFuncExpr(parent SQLNode, node *FuncExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteTableIdent(node, node.Qualifier, func(newNode, parent SQLNode) {
+ parent.(*FuncExpr).Qualifier = newNode.(TableIdent)
+ }) {
+ return false
+ }
+ if !a.rewriteColIdent(node, node.Name, func(newNode, parent SQLNode) {
+ parent.(*FuncExpr).Name = newNode.(ColIdent)
+ }) {
+ return false
+ }
+ if !a.rewriteSelectExprs(node, node.Exprs, func(newNode, parent SQLNode) {
+ parent.(*FuncExpr).Exprs = newNode.(SelectExprs)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteGroupBy(parent SQLNode, node GroupBy, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ for x, el := range node {
+ if !a.rewriteExpr(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent SQLNode) {
+ parent.(GroupBy)[idx] = newNode.(Expr)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfGroupConcatExpr(parent SQLNode, node *GroupConcatExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteSelectExprs(node, node.Exprs, func(newNode, parent SQLNode) {
+ parent.(*GroupConcatExpr).Exprs = newNode.(SelectExprs)
+ }) {
+ return false
+ }
+ if !a.rewriteOrderBy(node, node.OrderBy, func(newNode, parent SQLNode) {
+ parent.(*GroupConcatExpr).OrderBy = newNode.(OrderBy)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfLimit(node, node.Limit, func(newNode, parent SQLNode) {
+ parent.(*GroupConcatExpr).Limit = newNode.(*Limit)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfIndexDefinition(parent SQLNode, node *IndexDefinition, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteRefOfIndexInfo(node, node.Info, func(newNode, parent SQLNode) {
+ parent.(*IndexDefinition).Info = newNode.(*IndexInfo)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfIndexHints(parent SQLNode, node *IndexHints, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ for x, el := range node.Indexes {
+ if !a.rewriteColIdent(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent SQLNode) {
+ parent.(*IndexHints).Indexes[idx] = newNode.(ColIdent)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfIndexInfo(parent SQLNode, node *IndexInfo, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteColIdent(node, node.Name, func(newNode, parent SQLNode) {
+ parent.(*IndexInfo).Name = newNode.(ColIdent)
+ }) {
+ return false
+ }
+ if !a.rewriteColIdent(node, node.ConstraintName, func(newNode, parent SQLNode) {
+ parent.(*IndexInfo).ConstraintName = newNode.(ColIdent)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfInsert(parent SQLNode, node *Insert, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteComments(node, node.Comments, func(newNode, parent SQLNode) {
+ parent.(*Insert).Comments = newNode.(Comments)
+ }) {
+ return false
+ }
+ if !a.rewriteTableName(node, node.Table, func(newNode, parent SQLNode) {
+ parent.(*Insert).Table = newNode.(TableName)
+ }) {
+ return false
+ }
+ if !a.rewritePartitions(node, node.Partitions, func(newNode, parent SQLNode) {
+ parent.(*Insert).Partitions = newNode.(Partitions)
+ }) {
+ return false
+ }
+ if !a.rewriteColumns(node, node.Columns, func(newNode, parent SQLNode) {
+ parent.(*Insert).Columns = newNode.(Columns)
+ }) {
+ return false
+ }
+ if !a.rewriteInsertRows(node, node.Rows, func(newNode, parent SQLNode) {
+ parent.(*Insert).Rows = newNode.(InsertRows)
+ }) {
+ return false
+ }
+ if !a.rewriteOnDup(node, node.OnDup, func(newNode, parent SQLNode) {
+ parent.(*Insert).OnDup = newNode.(OnDup)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfIntervalExpr(parent SQLNode, node *IntervalExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteExpr(node, node.Expr, func(newNode, parent SQLNode) {
+ parent.(*IntervalExpr).Expr = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfIsExpr(parent SQLNode, node *IsExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteExpr(node, node.Expr, func(newNode, parent SQLNode) {
+ parent.(*IsExpr).Expr = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteJoinCondition(parent SQLNode, node JoinCondition, replacer replacerFunc) bool {
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteExpr(node, node.On, func(newNode, parent SQLNode) {
+ panic("[BUG] tried to replace 'On' on 'JoinCondition'")
+ }) {
+ return false
+ }
+ if !a.rewriteColumns(node, node.Using, func(newNode, parent SQLNode) {
+ panic("[BUG] tried to replace 'Using' on 'JoinCondition'")
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfJoinTableExpr(parent SQLNode, node *JoinTableExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteTableExpr(node, node.LeftExpr, func(newNode, parent SQLNode) {
+ parent.(*JoinTableExpr).LeftExpr = newNode.(TableExpr)
+ }) {
+ return false
+ }
+ if !a.rewriteTableExpr(node, node.RightExpr, func(newNode, parent SQLNode) {
+ parent.(*JoinTableExpr).RightExpr = newNode.(TableExpr)
+ }) {
+ return false
+ }
+ if !a.rewriteJoinCondition(node, node.Condition, func(newNode, parent SQLNode) {
+ parent.(*JoinTableExpr).Condition = newNode.(JoinCondition)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfKeyState(parent SQLNode, node *KeyState, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfLimit(parent SQLNode, node *Limit, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteExpr(node, node.Offset, func(newNode, parent SQLNode) {
+ parent.(*Limit).Offset = newNode.(Expr)
+ }) {
+ return false
+ }
+ if !a.rewriteExpr(node, node.Rowcount, func(newNode, parent SQLNode) {
+ parent.(*Limit).Rowcount = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteListArg(parent SQLNode, node ListArg, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfLiteral(parent SQLNode, node *Literal, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfLoad(parent SQLNode, node *Load, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfLockOption(parent SQLNode, node *LockOption, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfLockTables(parent SQLNode, node *LockTables, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfMatchExpr(parent SQLNode, node *MatchExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteSelectExprs(node, node.Columns, func(newNode, parent SQLNode) {
+ parent.(*MatchExpr).Columns = newNode.(SelectExprs)
+ }) {
+ return false
+ }
+ if !a.rewriteExpr(node, node.Expr, func(newNode, parent SQLNode) {
+ parent.(*MatchExpr).Expr = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfModifyColumn(parent SQLNode, node *ModifyColumn, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteRefOfColumnDefinition(node, node.NewColDefinition, func(newNode, parent SQLNode) {
+ parent.(*ModifyColumn).NewColDefinition = newNode.(*ColumnDefinition)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfColName(node, node.First, func(newNode, parent SQLNode) {
+ parent.(*ModifyColumn).First = newNode.(*ColName)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfColName(node, node.After, func(newNode, parent SQLNode) {
+ parent.(*ModifyColumn).After = newNode.(*ColName)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfNextval(parent SQLNode, node *Nextval, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteExpr(node, node.Expr, func(newNode, parent SQLNode) {
+ parent.(*Nextval).Expr = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfNotExpr(parent SQLNode, node *NotExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteExpr(node, node.Expr, func(newNode, parent SQLNode) {
+ parent.(*NotExpr).Expr = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfNullVal(parent SQLNode, node *NullVal, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteOnDup(parent SQLNode, node OnDup, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ for x, el := range node {
+ if !a.rewriteRefOfUpdateExpr(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent SQLNode) {
+ parent.(OnDup)[idx] = newNode.(*UpdateExpr)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfOptLike(parent SQLNode, node *OptLike, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteTableName(node, node.LikeTable, func(newNode, parent SQLNode) {
+ parent.(*OptLike).LikeTable = newNode.(TableName)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfOrExpr(parent SQLNode, node *OrExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteExpr(node, node.Left, func(newNode, parent SQLNode) {
+ parent.(*OrExpr).Left = newNode.(Expr)
+ }) {
+ return false
+ }
+ if !a.rewriteExpr(node, node.Right, func(newNode, parent SQLNode) {
+ parent.(*OrExpr).Right = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfOrder(parent SQLNode, node *Order, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteExpr(node, node.Expr, func(newNode, parent SQLNode) {
+ parent.(*Order).Expr = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteOrderBy(parent SQLNode, node OrderBy, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ for x, el := range node {
+ if !a.rewriteRefOfOrder(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent SQLNode) {
+ parent.(OrderBy)[idx] = newNode.(*Order)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfOrderByOption(parent SQLNode, node *OrderByOption, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteColumns(node, node.Cols, func(newNode, parent SQLNode) {
+ parent.(*OrderByOption).Cols = newNode.(Columns)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfOtherAdmin(parent SQLNode, node *OtherAdmin, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfOtherRead(parent SQLNode, node *OtherRead, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfParenSelect(parent SQLNode, node *ParenSelect, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteSelectStatement(node, node.Select, func(newNode, parent SQLNode) {
+ parent.(*ParenSelect).Select = newNode.(SelectStatement)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfParenTableExpr(parent SQLNode, node *ParenTableExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteTableExprs(node, node.Exprs, func(newNode, parent SQLNode) {
+ parent.(*ParenTableExpr).Exprs = newNode.(TableExprs)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfPartitionDefinition(parent SQLNode, node *PartitionDefinition, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteColIdent(node, node.Name, func(newNode, parent SQLNode) {
+ parent.(*PartitionDefinition).Name = newNode.(ColIdent)
+ }) {
+ return false
+ }
+ if !a.rewriteExpr(node, node.Limit, func(newNode, parent SQLNode) {
+ parent.(*PartitionDefinition).Limit = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfPartitionSpec(parent SQLNode, node *PartitionSpec, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewritePartitions(node, node.Names, func(newNode, parent SQLNode) {
+ parent.(*PartitionSpec).Names = newNode.(Partitions)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfLiteral(node, node.Number, func(newNode, parent SQLNode) {
+ parent.(*PartitionSpec).Number = newNode.(*Literal)
+ }) {
+ return false
+ }
+ if !a.rewriteTableName(node, node.TableName, func(newNode, parent SQLNode) {
+ parent.(*PartitionSpec).TableName = newNode.(TableName)
+ }) {
+ return false
+ }
+ for x, el := range node.Definitions {
+ if !a.rewriteRefOfPartitionDefinition(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent SQLNode) {
+ parent.(*PartitionSpec).Definitions[idx] = newNode.(*PartitionDefinition)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewritePartitions(parent SQLNode, node Partitions, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ for x, el := range node {
+ if !a.rewriteColIdent(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent SQLNode) {
+ parent.(Partitions)[idx] = newNode.(ColIdent)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfRangeCond(parent SQLNode, node *RangeCond, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteExpr(node, node.Left, func(newNode, parent SQLNode) {
+ parent.(*RangeCond).Left = newNode.(Expr)
+ }) {
+ return false
+ }
+ if !a.rewriteExpr(node, node.From, func(newNode, parent SQLNode) {
+ parent.(*RangeCond).From = newNode.(Expr)
+ }) {
+ return false
+ }
+ if !a.rewriteExpr(node, node.To, func(newNode, parent SQLNode) {
+ parent.(*RangeCond).To = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfRelease(parent SQLNode, node *Release, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteColIdent(node, node.Name, func(newNode, parent SQLNode) {
+ parent.(*Release).Name = newNode.(ColIdent)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfRenameIndex(parent SQLNode, node *RenameIndex, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteColIdent(node, node.OldName, func(newNode, parent SQLNode) {
+ parent.(*RenameIndex).OldName = newNode.(ColIdent)
+ }) {
+ return false
+ }
+ if !a.rewriteColIdent(node, node.NewName, func(newNode, parent SQLNode) {
+ parent.(*RenameIndex).NewName = newNode.(ColIdent)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfRenameTable(parent SQLNode, node *RenameTable, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfRenameTableName(parent SQLNode, node *RenameTableName, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteTableName(node, node.Table, func(newNode, parent SQLNode) {
+ parent.(*RenameTableName).Table = newNode.(TableName)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfRevertMigration(parent SQLNode, node *RevertMigration, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfRollback(parent SQLNode, node *Rollback, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfSRollback(parent SQLNode, node *SRollback, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteColIdent(node, node.Name, func(newNode, parent SQLNode) {
+ parent.(*SRollback).Name = newNode.(ColIdent)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfSavepoint(parent SQLNode, node *Savepoint, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteColIdent(node, node.Name, func(newNode, parent SQLNode) {
+ parent.(*Savepoint).Name = newNode.(ColIdent)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfSelect(parent SQLNode, node *Select, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteComments(node, node.Comments, func(newNode, parent SQLNode) {
+ parent.(*Select).Comments = newNode.(Comments)
+ }) {
+ return false
+ }
+ if !a.rewriteSelectExprs(node, node.SelectExprs, func(newNode, parent SQLNode) {
+ parent.(*Select).SelectExprs = newNode.(SelectExprs)
+ }) {
+ return false
+ }
+ if !a.rewriteTableExprs(node, node.From, func(newNode, parent SQLNode) {
+ parent.(*Select).From = newNode.(TableExprs)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfWhere(node, node.Where, func(newNode, parent SQLNode) {
+ parent.(*Select).Where = newNode.(*Where)
+ }) {
+ return false
+ }
+ if !a.rewriteGroupBy(node, node.GroupBy, func(newNode, parent SQLNode) {
+ parent.(*Select).GroupBy = newNode.(GroupBy)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfWhere(node, node.Having, func(newNode, parent SQLNode) {
+ parent.(*Select).Having = newNode.(*Where)
+ }) {
+ return false
+ }
+ if !a.rewriteOrderBy(node, node.OrderBy, func(newNode, parent SQLNode) {
+ parent.(*Select).OrderBy = newNode.(OrderBy)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfLimit(node, node.Limit, func(newNode, parent SQLNode) {
+ parent.(*Select).Limit = newNode.(*Limit)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfSelectInto(node, node.Into, func(newNode, parent SQLNode) {
+ parent.(*Select).Into = newNode.(*SelectInto)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteSelectExprs(parent SQLNode, node SelectExprs, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ for x, el := range node {
+ if !a.rewriteSelectExpr(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent SQLNode) {
+ parent.(SelectExprs)[idx] = newNode.(SelectExpr)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfSelectInto(parent SQLNode, node *SelectInto, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfSet(parent SQLNode, node *Set, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteComments(node, node.Comments, func(newNode, parent SQLNode) {
+ parent.(*Set).Comments = newNode.(Comments)
+ }) {
+ return false
+ }
+ if !a.rewriteSetExprs(node, node.Exprs, func(newNode, parent SQLNode) {
+ parent.(*Set).Exprs = newNode.(SetExprs)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfSetExpr(parent SQLNode, node *SetExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteColIdent(node, node.Name, func(newNode, parent SQLNode) {
+ parent.(*SetExpr).Name = newNode.(ColIdent)
+ }) {
+ return false
+ }
+ if !a.rewriteExpr(node, node.Expr, func(newNode, parent SQLNode) {
+ parent.(*SetExpr).Expr = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteSetExprs(parent SQLNode, node SetExprs, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ for x, el := range node {
+ if !a.rewriteRefOfSetExpr(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent SQLNode) {
+ parent.(SetExprs)[idx] = newNode.(*SetExpr)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfSetTransaction(parent SQLNode, node *SetTransaction, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteSQLNode(node, node.SQLNode, func(newNode, parent SQLNode) {
+ parent.(*SetTransaction).SQLNode = newNode.(SQLNode)
+ }) {
+ return false
+ }
+ if !a.rewriteComments(node, node.Comments, func(newNode, parent SQLNode) {
+ parent.(*SetTransaction).Comments = newNode.(Comments)
+ }) {
+ return false
+ }
+ for x, el := range node.Characteristics {
+ if !a.rewriteCharacteristic(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent SQLNode) {
+ parent.(*SetTransaction).Characteristics[idx] = newNode.(Characteristic)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfShow(parent SQLNode, node *Show, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteShowInternal(node, node.Internal, func(newNode, parent SQLNode) {
+ parent.(*Show).Internal = newNode.(ShowInternal)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfShowBasic(parent SQLNode, node *ShowBasic, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteTableName(node, node.Tbl, func(newNode, parent SQLNode) {
+ parent.(*ShowBasic).Tbl = newNode.(TableName)
+ }) {
+ return false
+ }
+ if !a.rewriteTableIdent(node, node.DbName, func(newNode, parent SQLNode) {
+ parent.(*ShowBasic).DbName = newNode.(TableIdent)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfShowFilter(node, node.Filter, func(newNode, parent SQLNode) {
+ parent.(*ShowBasic).Filter = newNode.(*ShowFilter)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfShowCreate(parent SQLNode, node *ShowCreate, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteTableName(node, node.Op, func(newNode, parent SQLNode) {
+ parent.(*ShowCreate).Op = newNode.(TableName)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfShowFilter(parent SQLNode, node *ShowFilter, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteExpr(node, node.Filter, func(newNode, parent SQLNode) {
+ parent.(*ShowFilter).Filter = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfShowLegacy(parent SQLNode, node *ShowLegacy, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteTableName(node, node.OnTable, func(newNode, parent SQLNode) {
+ parent.(*ShowLegacy).OnTable = newNode.(TableName)
+ }) {
+ return false
+ }
+ if !a.rewriteTableName(node, node.Table, func(newNode, parent SQLNode) {
+ parent.(*ShowLegacy).Table = newNode.(TableName)
+ }) {
+ return false
+ }
+ if !a.rewriteExpr(node, node.ShowCollationFilterOpt, func(newNode, parent SQLNode) {
+ parent.(*ShowLegacy).ShowCollationFilterOpt = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfStarExpr(parent SQLNode, node *StarExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteTableName(node, node.TableName, func(newNode, parent SQLNode) {
+ parent.(*StarExpr).TableName = newNode.(TableName)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfStream(parent SQLNode, node *Stream, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteComments(node, node.Comments, func(newNode, parent SQLNode) {
+ parent.(*Stream).Comments = newNode.(Comments)
+ }) {
+ return false
+ }
+ if !a.rewriteSelectExpr(node, node.SelectExpr, func(newNode, parent SQLNode) {
+ parent.(*Stream).SelectExpr = newNode.(SelectExpr)
+ }) {
+ return false
+ }
+ if !a.rewriteTableName(node, node.Table, func(newNode, parent SQLNode) {
+ parent.(*Stream).Table = newNode.(TableName)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfSubquery(parent SQLNode, node *Subquery, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteSelectStatement(node, node.Select, func(newNode, parent SQLNode) {
+ parent.(*Subquery).Select = newNode.(SelectStatement)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfSubstrExpr(parent SQLNode, node *SubstrExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteRefOfColName(node, node.Name, func(newNode, parent SQLNode) {
+ parent.(*SubstrExpr).Name = newNode.(*ColName)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfLiteral(node, node.StrVal, func(newNode, parent SQLNode) {
+ parent.(*SubstrExpr).StrVal = newNode.(*Literal)
+ }) {
+ return false
+ }
+ if !a.rewriteExpr(node, node.From, func(newNode, parent SQLNode) {
+ parent.(*SubstrExpr).From = newNode.(Expr)
+ }) {
+ return false
+ }
+ if !a.rewriteExpr(node, node.To, func(newNode, parent SQLNode) {
+ parent.(*SubstrExpr).To = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteTableExprs(parent SQLNode, node TableExprs, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ for x, el := range node {
+ if !a.rewriteTableExpr(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent SQLNode) {
+ parent.(TableExprs)[idx] = newNode.(TableExpr)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteTableIdent(parent SQLNode, node TableIdent, replacer replacerFunc) bool {
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteTableName(parent SQLNode, node TableName, replacer replacerFunc) bool {
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteTableIdent(node, node.Name, func(newNode, parent SQLNode) {
+ panic("[BUG] tried to replace 'Name' on 'TableName'")
+ }) {
+ return false
+ }
+ if !a.rewriteTableIdent(node, node.Qualifier, func(newNode, parent SQLNode) {
+ panic("[BUG] tried to replace 'Qualifier' on 'TableName'")
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteTableNames(parent SQLNode, node TableNames, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ for x, el := range node {
+ if !a.rewriteTableName(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent SQLNode) {
+ parent.(TableNames)[idx] = newNode.(TableName)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteTableOptions(parent SQLNode, node TableOptions, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfTableSpec(parent SQLNode, node *TableSpec, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ for x, el := range node.Columns {
+ if !a.rewriteRefOfColumnDefinition(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent SQLNode) {
+ parent.(*TableSpec).Columns[idx] = newNode.(*ColumnDefinition)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ for x, el := range node.Indexes {
+ if !a.rewriteRefOfIndexDefinition(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent SQLNode) {
+ parent.(*TableSpec).Indexes[idx] = newNode.(*IndexDefinition)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ for x, el := range node.Constraints {
+ if !a.rewriteRefOfConstraintDefinition(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent SQLNode) {
+ parent.(*TableSpec).Constraints[idx] = newNode.(*ConstraintDefinition)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ if !a.rewriteTableOptions(node, node.Options, func(newNode, parent SQLNode) {
+ parent.(*TableSpec).Options = newNode.(TableOptions)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfTablespaceOperation(parent SQLNode, node *TablespaceOperation, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfTimestampFuncExpr(parent SQLNode, node *TimestampFuncExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteExpr(node, node.Expr1, func(newNode, parent SQLNode) {
+ parent.(*TimestampFuncExpr).Expr1 = newNode.(Expr)
+ }) {
+ return false
+ }
+ if !a.rewriteExpr(node, node.Expr2, func(newNode, parent SQLNode) {
+ parent.(*TimestampFuncExpr).Expr2 = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfTruncateTable(parent SQLNode, node *TruncateTable, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteTableName(node, node.Table, func(newNode, parent SQLNode) {
+ parent.(*TruncateTable).Table = newNode.(TableName)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfUnaryExpr(parent SQLNode, node *UnaryExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteExpr(node, node.Expr, func(newNode, parent SQLNode) {
+ parent.(*UnaryExpr).Expr = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfUnion(parent SQLNode, node *Union, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteSelectStatement(node, node.FirstStatement, func(newNode, parent SQLNode) {
+ parent.(*Union).FirstStatement = newNode.(SelectStatement)
+ }) {
+ return false
+ }
+ for x, el := range node.UnionSelects {
+ if !a.rewriteRefOfUnionSelect(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent SQLNode) {
+ parent.(*Union).UnionSelects[idx] = newNode.(*UnionSelect)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ if !a.rewriteOrderBy(node, node.OrderBy, func(newNode, parent SQLNode) {
+ parent.(*Union).OrderBy = newNode.(OrderBy)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfLimit(node, node.Limit, func(newNode, parent SQLNode) {
+ parent.(*Union).Limit = newNode.(*Limit)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfUnionSelect(parent SQLNode, node *UnionSelect, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteSelectStatement(node, node.Statement, func(newNode, parent SQLNode) {
+ parent.(*UnionSelect).Statement = newNode.(SelectStatement)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfUnlockTables(parent SQLNode, node *UnlockTables, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfUpdate(parent SQLNode, node *Update, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteComments(node, node.Comments, func(newNode, parent SQLNode) {
+ parent.(*Update).Comments = newNode.(Comments)
+ }) {
+ return false
+ }
+ if !a.rewriteTableExprs(node, node.TableExprs, func(newNode, parent SQLNode) {
+ parent.(*Update).TableExprs = newNode.(TableExprs)
+ }) {
+ return false
+ }
+ if !a.rewriteUpdateExprs(node, node.Exprs, func(newNode, parent SQLNode) {
+ parent.(*Update).Exprs = newNode.(UpdateExprs)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfWhere(node, node.Where, func(newNode, parent SQLNode) {
+ parent.(*Update).Where = newNode.(*Where)
+ }) {
+ return false
+ }
+ if !a.rewriteOrderBy(node, node.OrderBy, func(newNode, parent SQLNode) {
+ parent.(*Update).OrderBy = newNode.(OrderBy)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfLimit(node, node.Limit, func(newNode, parent SQLNode) {
+ parent.(*Update).Limit = newNode.(*Limit)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfUpdateExpr(parent SQLNode, node *UpdateExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteRefOfColName(node, node.Name, func(newNode, parent SQLNode) {
+ parent.(*UpdateExpr).Name = newNode.(*ColName)
+ }) {
+ return false
+ }
+ if !a.rewriteExpr(node, node.Expr, func(newNode, parent SQLNode) {
+ parent.(*UpdateExpr).Expr = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteUpdateExprs(parent SQLNode, node UpdateExprs, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ for x, el := range node {
+ if !a.rewriteRefOfUpdateExpr(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent SQLNode) {
+ parent.(UpdateExprs)[idx] = newNode.(*UpdateExpr)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfUse(parent SQLNode, node *Use, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteTableIdent(node, node.DBName, func(newNode, parent SQLNode) {
+ parent.(*Use).DBName = newNode.(TableIdent)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfVStream(parent SQLNode, node *VStream, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteComments(node, node.Comments, func(newNode, parent SQLNode) {
+ parent.(*VStream).Comments = newNode.(Comments)
+ }) {
+ return false
+ }
+ if !a.rewriteSelectExpr(node, node.SelectExpr, func(newNode, parent SQLNode) {
+ parent.(*VStream).SelectExpr = newNode.(SelectExpr)
+ }) {
+ return false
+ }
+ if !a.rewriteTableName(node, node.Table, func(newNode, parent SQLNode) {
+ parent.(*VStream).Table = newNode.(TableName)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfWhere(node, node.Where, func(newNode, parent SQLNode) {
+ parent.(*VStream).Where = newNode.(*Where)
+ }) {
+ return false
+ }
+ if !a.rewriteRefOfLimit(node, node.Limit, func(newNode, parent SQLNode) {
+ parent.(*VStream).Limit = newNode.(*Limit)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteValTuple(parent SQLNode, node ValTuple, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ for x, el := range node {
+ if !a.rewriteExpr(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent SQLNode) {
+ parent.(ValTuple)[idx] = newNode.(Expr)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfValidation(parent SQLNode, node *Validation, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteValues(parent SQLNode, node Values, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ for x, el := range node {
+ if !a.rewriteValTuple(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent SQLNode) {
+ parent.(Values)[idx] = newNode.(ValTuple)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfValuesFuncExpr(parent SQLNode, node *ValuesFuncExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteRefOfColName(node, node.Name, func(newNode, parent SQLNode) {
+ parent.(*ValuesFuncExpr).Name = newNode.(*ColName)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteVindexParam(parent SQLNode, node VindexParam, replacer replacerFunc) bool {
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteColIdent(node, node.Key, func(newNode, parent SQLNode) {
+ panic("[BUG] tried to replace 'Key' on 'VindexParam'")
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfVindexSpec(parent SQLNode, node *VindexSpec, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteColIdent(node, node.Name, func(newNode, parent SQLNode) {
+ parent.(*VindexSpec).Name = newNode.(ColIdent)
+ }) {
+ return false
+ }
+ if !a.rewriteColIdent(node, node.Type, func(newNode, parent SQLNode) {
+ parent.(*VindexSpec).Type = newNode.(ColIdent)
+ }) {
+ return false
+ }
+ for x, el := range node.Params {
+ if !a.rewriteVindexParam(node, el, func(idx int) replacerFunc {
+ return func(newNode, parent SQLNode) {
+ parent.(*VindexSpec).Params[idx] = newNode.(VindexParam)
+ }
+ }(x)) {
+ return false
+ }
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfWhen(parent SQLNode, node *When, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteExpr(node, node.Cond, func(newNode, parent SQLNode) {
+ parent.(*When).Cond = newNode.(Expr)
+ }) {
+ return false
+ }
+ if !a.rewriteExpr(node, node.Val, func(newNode, parent SQLNode) {
+ parent.(*When).Val = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfWhere(parent SQLNode, node *Where, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteExpr(node, node.Expr, func(newNode, parent SQLNode) {
+ parent.(*Where).Expr = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfXorExpr(parent SQLNode, node *XorExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteExpr(node, node.Left, func(newNode, parent SQLNode) {
+ parent.(*XorExpr).Left = newNode.(Expr)
+ }) {
+ return false
+ }
+ if !a.rewriteExpr(node, node.Right, func(newNode, parent SQLNode) {
+ parent.(*XorExpr).Right = newNode.(Expr)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteAlterOption(parent SQLNode, node AlterOption, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ switch node := node.(type) {
+ case *AddColumns:
+ return a.rewriteRefOfAddColumns(parent, node, replacer)
+ case *AddConstraintDefinition:
+ return a.rewriteRefOfAddConstraintDefinition(parent, node, replacer)
+ case *AddIndexDefinition:
+ return a.rewriteRefOfAddIndexDefinition(parent, node, replacer)
+ case AlgorithmValue:
+ return a.rewriteAlgorithmValue(parent, node, replacer)
+ case *AlterCharset:
+ return a.rewriteRefOfAlterCharset(parent, node, replacer)
+ case *AlterColumn:
+ return a.rewriteRefOfAlterColumn(parent, node, replacer)
+ case *ChangeColumn:
+ return a.rewriteRefOfChangeColumn(parent, node, replacer)
+ case *DropColumn:
+ return a.rewriteRefOfDropColumn(parent, node, replacer)
+ case *DropKey:
+ return a.rewriteRefOfDropKey(parent, node, replacer)
+ case *Force:
+ return a.rewriteRefOfForce(parent, node, replacer)
+ case *KeyState:
+ return a.rewriteRefOfKeyState(parent, node, replacer)
+ case *LockOption:
+ return a.rewriteRefOfLockOption(parent, node, replacer)
+ case *ModifyColumn:
+ return a.rewriteRefOfModifyColumn(parent, node, replacer)
+ case *OrderByOption:
+ return a.rewriteRefOfOrderByOption(parent, node, replacer)
+ case *RenameIndex:
+ return a.rewriteRefOfRenameIndex(parent, node, replacer)
+ case *RenameTableName:
+ return a.rewriteRefOfRenameTableName(parent, node, replacer)
+ case TableOptions:
+ return a.rewriteTableOptions(parent, node, replacer)
+ case *TablespaceOperation:
+ return a.rewriteRefOfTablespaceOperation(parent, node, replacer)
+ case *Validation:
+ return a.rewriteRefOfValidation(parent, node, replacer)
+ default:
+ // this should never happen
+ return true
+ }
+}
+func (a *application) rewriteCharacteristic(parent SQLNode, node Characteristic, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ switch node := node.(type) {
+ case AccessMode:
+ return a.rewriteAccessMode(parent, node, replacer)
+ case IsolationLevel:
+ return a.rewriteIsolationLevel(parent, node, replacer)
+ default:
+ // this should never happen
+ return true
+ }
+}
+func (a *application) rewriteColTuple(parent SQLNode, node ColTuple, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ switch node := node.(type) {
+ case ListArg:
+ return a.rewriteListArg(parent, node, replacer)
+ case *Subquery:
+ return a.rewriteRefOfSubquery(parent, node, replacer)
+ case ValTuple:
+ return a.rewriteValTuple(parent, node, replacer)
+ default:
+ // this should never happen
+ return true
+ }
+}
+func (a *application) rewriteConstraintInfo(parent SQLNode, node ConstraintInfo, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ switch node := node.(type) {
+ case *CheckConstraintDefinition:
+ return a.rewriteRefOfCheckConstraintDefinition(parent, node, replacer)
+ case *ForeignKeyDefinition:
+ return a.rewriteRefOfForeignKeyDefinition(parent, node, replacer)
+ default:
+ // this should never happen
+ return true
+ }
+}
+func (a *application) rewriteDBDDLStatement(parent SQLNode, node DBDDLStatement, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ switch node := node.(type) {
+ case *AlterDatabase:
+ return a.rewriteRefOfAlterDatabase(parent, node, replacer)
+ case *CreateDatabase:
+ return a.rewriteRefOfCreateDatabase(parent, node, replacer)
+ case *DropDatabase:
+ return a.rewriteRefOfDropDatabase(parent, node, replacer)
+ default:
+ // this should never happen
+ return true
+ }
+}
+func (a *application) rewriteDDLStatement(parent SQLNode, node DDLStatement, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ switch node := node.(type) {
+ case *AlterTable:
+ return a.rewriteRefOfAlterTable(parent, node, replacer)
+ case *AlterView:
+ return a.rewriteRefOfAlterView(parent, node, replacer)
+ case *CreateTable:
+ return a.rewriteRefOfCreateTable(parent, node, replacer)
+ case *CreateView:
+ return a.rewriteRefOfCreateView(parent, node, replacer)
+ case *DropTable:
+ return a.rewriteRefOfDropTable(parent, node, replacer)
+ case *DropView:
+ return a.rewriteRefOfDropView(parent, node, replacer)
+ case *RenameTable:
+ return a.rewriteRefOfRenameTable(parent, node, replacer)
+ case *TruncateTable:
+ return a.rewriteRefOfTruncateTable(parent, node, replacer)
+ default:
+ // this should never happen
+ return true
+ }
+}
+func (a *application) rewriteExplain(parent SQLNode, node Explain, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ switch node := node.(type) {
+ case *ExplainStmt:
+ return a.rewriteRefOfExplainStmt(parent, node, replacer)
+ case *ExplainTab:
+ return a.rewriteRefOfExplainTab(parent, node, replacer)
+ default:
+ // this should never happen
+ return true
+ }
+}
+func (a *application) rewriteExpr(parent SQLNode, node Expr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ switch node := node.(type) {
+ case *AndExpr:
+ return a.rewriteRefOfAndExpr(parent, node, replacer)
+ case Argument:
+ return a.rewriteArgument(parent, node, replacer)
+ case *BinaryExpr:
+ return a.rewriteRefOfBinaryExpr(parent, node, replacer)
+ case BoolVal:
+ return a.rewriteBoolVal(parent, node, replacer)
+ case *CaseExpr:
+ return a.rewriteRefOfCaseExpr(parent, node, replacer)
+ case *ColName:
+ return a.rewriteRefOfColName(parent, node, replacer)
+ case *CollateExpr:
+ return a.rewriteRefOfCollateExpr(parent, node, replacer)
+ case *ComparisonExpr:
+ return a.rewriteRefOfComparisonExpr(parent, node, replacer)
+ case *ConvertExpr:
+ return a.rewriteRefOfConvertExpr(parent, node, replacer)
+ case *ConvertUsingExpr:
+ return a.rewriteRefOfConvertUsingExpr(parent, node, replacer)
+ case *CurTimeFuncExpr:
+ return a.rewriteRefOfCurTimeFuncExpr(parent, node, replacer)
+ case *Default:
+ return a.rewriteRefOfDefault(parent, node, replacer)
+ case *ExistsExpr:
+ return a.rewriteRefOfExistsExpr(parent, node, replacer)
+ case *FuncExpr:
+ return a.rewriteRefOfFuncExpr(parent, node, replacer)
+ case *GroupConcatExpr:
+ return a.rewriteRefOfGroupConcatExpr(parent, node, replacer)
+ case *IntervalExpr:
+ return a.rewriteRefOfIntervalExpr(parent, node, replacer)
+ case *IsExpr:
+ return a.rewriteRefOfIsExpr(parent, node, replacer)
+ case ListArg:
+ return a.rewriteListArg(parent, node, replacer)
+ case *Literal:
+ return a.rewriteRefOfLiteral(parent, node, replacer)
+ case *MatchExpr:
+ return a.rewriteRefOfMatchExpr(parent, node, replacer)
+ case *NotExpr:
+ return a.rewriteRefOfNotExpr(parent, node, replacer)
+ case *NullVal:
+ return a.rewriteRefOfNullVal(parent, node, replacer)
+ case *OrExpr:
+ return a.rewriteRefOfOrExpr(parent, node, replacer)
+ case *RangeCond:
+ return a.rewriteRefOfRangeCond(parent, node, replacer)
+ case *Subquery:
+ return a.rewriteRefOfSubquery(parent, node, replacer)
+ case *SubstrExpr:
+ return a.rewriteRefOfSubstrExpr(parent, node, replacer)
+ case *TimestampFuncExpr:
+ return a.rewriteRefOfTimestampFuncExpr(parent, node, replacer)
+ case *UnaryExpr:
+ return a.rewriteRefOfUnaryExpr(parent, node, replacer)
+ case ValTuple:
+ return a.rewriteValTuple(parent, node, replacer)
+ case *ValuesFuncExpr:
+ return a.rewriteRefOfValuesFuncExpr(parent, node, replacer)
+ case *XorExpr:
+ return a.rewriteRefOfXorExpr(parent, node, replacer)
+ default:
+ // this should never happen
+ return true
+ }
+}
+func (a *application) rewriteInsertRows(parent SQLNode, node InsertRows, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ switch node := node.(type) {
+ case *ParenSelect:
+ return a.rewriteRefOfParenSelect(parent, node, replacer)
+ case *Select:
+ return a.rewriteRefOfSelect(parent, node, replacer)
+ case *Union:
+ return a.rewriteRefOfUnion(parent, node, replacer)
+ case Values:
+ return a.rewriteValues(parent, node, replacer)
+ default:
+ // this should never happen
+ return true
+ }
+}
+func (a *application) rewriteSelectExpr(parent SQLNode, node SelectExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ switch node := node.(type) {
+ case *AliasedExpr:
+ return a.rewriteRefOfAliasedExpr(parent, node, replacer)
+ case *Nextval:
+ return a.rewriteRefOfNextval(parent, node, replacer)
+ case *StarExpr:
+ return a.rewriteRefOfStarExpr(parent, node, replacer)
+ default:
+ // this should never happen
+ return true
+ }
+}
+func (a *application) rewriteSelectStatement(parent SQLNode, node SelectStatement, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ switch node := node.(type) {
+ case *ParenSelect:
+ return a.rewriteRefOfParenSelect(parent, node, replacer)
+ case *Select:
+ return a.rewriteRefOfSelect(parent, node, replacer)
+ case *Union:
+ return a.rewriteRefOfUnion(parent, node, replacer)
+ default:
+ // this should never happen
+ return true
+ }
+}
+func (a *application) rewriteShowInternal(parent SQLNode, node ShowInternal, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ switch node := node.(type) {
+ case *ShowBasic:
+ return a.rewriteRefOfShowBasic(parent, node, replacer)
+ case *ShowCreate:
+ return a.rewriteRefOfShowCreate(parent, node, replacer)
+ case *ShowLegacy:
+ return a.rewriteRefOfShowLegacy(parent, node, replacer)
+ default:
+ // this should never happen
+ return true
+ }
+}
+func (a *application) rewriteSimpleTableExpr(parent SQLNode, node SimpleTableExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ switch node := node.(type) {
+ case *DerivedTable:
+ return a.rewriteRefOfDerivedTable(parent, node, replacer)
+ case TableName:
+ return a.rewriteTableName(parent, node, replacer)
+ default:
+ // this should never happen
+ return true
+ }
+}
+func (a *application) rewriteStatement(parent SQLNode, node Statement, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ switch node := node.(type) {
+ case *AlterDatabase:
+ return a.rewriteRefOfAlterDatabase(parent, node, replacer)
+ case *AlterMigration:
+ return a.rewriteRefOfAlterMigration(parent, node, replacer)
+ case *AlterTable:
+ return a.rewriteRefOfAlterTable(parent, node, replacer)
+ case *AlterView:
+ return a.rewriteRefOfAlterView(parent, node, replacer)
+ case *AlterVschema:
+ return a.rewriteRefOfAlterVschema(parent, node, replacer)
+ case *Begin:
+ return a.rewriteRefOfBegin(parent, node, replacer)
+ case *CallProc:
+ return a.rewriteRefOfCallProc(parent, node, replacer)
+ case *Commit:
+ return a.rewriteRefOfCommit(parent, node, replacer)
+ case *CreateDatabase:
+ return a.rewriteRefOfCreateDatabase(parent, node, replacer)
+ case *CreateTable:
+ return a.rewriteRefOfCreateTable(parent, node, replacer)
+ case *CreateView:
+ return a.rewriteRefOfCreateView(parent, node, replacer)
+ case *Delete:
+ return a.rewriteRefOfDelete(parent, node, replacer)
+ case *DropDatabase:
+ return a.rewriteRefOfDropDatabase(parent, node, replacer)
+ case *DropTable:
+ return a.rewriteRefOfDropTable(parent, node, replacer)
+ case *DropView:
+ return a.rewriteRefOfDropView(parent, node, replacer)
+ case *ExplainStmt:
+ return a.rewriteRefOfExplainStmt(parent, node, replacer)
+ case *ExplainTab:
+ return a.rewriteRefOfExplainTab(parent, node, replacer)
+ case *Flush:
+ return a.rewriteRefOfFlush(parent, node, replacer)
+ case *Insert:
+ return a.rewriteRefOfInsert(parent, node, replacer)
+ case *Load:
+ return a.rewriteRefOfLoad(parent, node, replacer)
+ case *LockTables:
+ return a.rewriteRefOfLockTables(parent, node, replacer)
+ case *OtherAdmin:
+ return a.rewriteRefOfOtherAdmin(parent, node, replacer)
+ case *OtherRead:
+ return a.rewriteRefOfOtherRead(parent, node, replacer)
+ case *ParenSelect:
+ return a.rewriteRefOfParenSelect(parent, node, replacer)
+ case *Release:
+ return a.rewriteRefOfRelease(parent, node, replacer)
+ case *RenameTable:
+ return a.rewriteRefOfRenameTable(parent, node, replacer)
+ case *RevertMigration:
+ return a.rewriteRefOfRevertMigration(parent, node, replacer)
+ case *Rollback:
+ return a.rewriteRefOfRollback(parent, node, replacer)
+ case *SRollback:
+ return a.rewriteRefOfSRollback(parent, node, replacer)
+ case *Savepoint:
+ return a.rewriteRefOfSavepoint(parent, node, replacer)
+ case *Select:
+ return a.rewriteRefOfSelect(parent, node, replacer)
+ case *Set:
+ return a.rewriteRefOfSet(parent, node, replacer)
+ case *SetTransaction:
+ return a.rewriteRefOfSetTransaction(parent, node, replacer)
+ case *Show:
+ return a.rewriteRefOfShow(parent, node, replacer)
+ case *Stream:
+ return a.rewriteRefOfStream(parent, node, replacer)
+ case *TruncateTable:
+ return a.rewriteRefOfTruncateTable(parent, node, replacer)
+ case *Union:
+ return a.rewriteRefOfUnion(parent, node, replacer)
+ case *UnlockTables:
+ return a.rewriteRefOfUnlockTables(parent, node, replacer)
+ case *Update:
+ return a.rewriteRefOfUpdate(parent, node, replacer)
+ case *Use:
+ return a.rewriteRefOfUse(parent, node, replacer)
+ case *VStream:
+ return a.rewriteRefOfVStream(parent, node, replacer)
+ default:
+ // this should never happen
+ return true
+ }
+}
+func (a *application) rewriteTableExpr(parent SQLNode, node TableExpr, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ switch node := node.(type) {
+ case *AliasedTableExpr:
+ return a.rewriteRefOfAliasedTableExpr(parent, node, replacer)
+ case *JoinTableExpr:
+ return a.rewriteRefOfJoinTableExpr(parent, node, replacer)
+ case *ParenTableExpr:
+ return a.rewriteRefOfParenTableExpr(parent, node, replacer)
+ default:
+ // this should never happen
+ return true
+ }
+}
+func (a *application) rewriteAccessMode(parent SQLNode, node AccessMode, replacer replacerFunc) bool {
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteAlgorithmValue(parent SQLNode, node AlgorithmValue, replacer replacerFunc) bool {
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteArgument(parent SQLNode, node Argument, replacer replacerFunc) bool {
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteBoolVal(parent SQLNode, node BoolVal, replacer replacerFunc) bool {
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteIsolationLevel(parent SQLNode, node IsolationLevel, replacer replacerFunc) bool {
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteReferenceAction(parent SQLNode, node ReferenceAction, replacer replacerFunc) bool {
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfColIdent(parent SQLNode, node *ColIdent, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfJoinCondition(parent SQLNode, node *JoinCondition, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteExpr(node, node.On, func(newNode, parent SQLNode) {
+ parent.(*JoinCondition).On = newNode.(Expr)
+ }) {
+ return false
+ }
+ if !a.rewriteColumns(node, node.Using, func(newNode, parent SQLNode) {
+ parent.(*JoinCondition).Using = newNode.(Columns)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfTableIdent(parent SQLNode, node *TableIdent, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if a.post != nil {
+ if a.pre == nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ }
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfTableName(parent SQLNode, node *TableName, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteTableIdent(node, node.Name, func(newNode, parent SQLNode) {
+ parent.(*TableName).Name = newNode.(TableIdent)
+ }) {
+ return false
+ }
+ if !a.rewriteTableIdent(node, node.Qualifier, func(newNode, parent SQLNode) {
+ parent.(*TableName).Qualifier = newNode.(TableIdent)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
+func (a *application) rewriteRefOfVindexParam(parent SQLNode, node *VindexParam, replacer replacerFunc) bool {
+ if node == nil {
+ return true
+ }
+ if a.pre != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.pre(&a.cur) {
+ return true
+ }
+ }
+ if !a.rewriteColIdent(node, node.Key, func(newNode, parent SQLNode) {
+ parent.(*VindexParam).Key = newNode.(ColIdent)
+ }) {
+ return false
+ }
+ if a.post != nil {
+ a.cur.replacer = replacer
+ a.cur.parent = parent
+ a.cur.node = node
+ if !a.post(&a.cur) {
+ return false
+ }
+ }
+ return true
+}
diff --git a/go/vt/sqlparser/ast_rewriting.go b/go/vt/sqlparser/ast_rewriting.go
index 7791f1cfd8f..017ddfbdd6d 100644
--- a/go/vt/sqlparser/ast_rewriting.go
+++ b/go/vt/sqlparser/ast_rewriting.go
@@ -33,9 +33,12 @@ type RewriteASTResult struct {
}
// PrepareAST will normalize the query
-func PrepareAST(in Statement, bindVars map[string]*querypb.BindVariable, prefix string, parameterize bool, keyspace string) (*RewriteASTResult, error) {
+func PrepareAST(in Statement, reservedVars BindVars, bindVars map[string]*querypb.BindVariable, prefix string, parameterize bool, keyspace string) (*RewriteASTResult, error) {
if parameterize {
- Normalize(in, bindVars, prefix)
+ err := Normalize(in, reservedVars, bindVars, prefix)
+ if err != nil {
+ return nil, err
+ }
}
return RewriteAST(in, keyspace)
}
@@ -45,14 +48,16 @@ func RewriteAST(in Statement, keyspace string) (*RewriteASTResult, error) {
er := newExpressionRewriter(keyspace)
er.shouldRewriteDatabaseFunc = shouldRewriteDatabaseFunc(in)
setRewriter := &setNormalizer{}
- out, ok := Rewrite(in, er.rewrite, setRewriter.rewriteSetComingUp).(Statement)
- if !ok {
- return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "statement rewriting returned a non statement: %s", String(out))
- }
+ result := Rewrite(in, er.rewrite, setRewriter.rewriteSetComingUp)
if setRewriter.err != nil {
return nil, setRewriter.err
}
+ out, ok := result.(Statement)
+ if !ok {
+ return nil, vterrors.Errorf(vtrpcpb.Code_INTERNAL, "statement rewriting returned a non statement: %s", String(out))
+ }
+
r := &RewriteASTResult{
AST: out,
BindVarNeeds: er.bindVars,
@@ -178,6 +183,13 @@ func (er *expressionRewriter) rewrite(cursor *Cursor) bool {
node.Expr = aliasTableName
cursor.Replace(node)
}
+ case *ShowBasic:
+ if node.Command == VariableGlobal || node.Command == VariableSession {
+ varsToAdd := sysvars.GetInterestingVariables()
+ for _, sysVar := range varsToAdd {
+ er.bindVars.AddSysVar(sysVar)
+ }
+ }
}
return true
}
@@ -229,15 +241,19 @@ func (er *expressionRewriter) sysVarRewrite(cursor *Cursor, node *ColName) {
switch lowered {
case sysvars.Autocommit.Name,
sysvars.ClientFoundRows.Name,
- sysvars.SkipQueryPlanCache.Name,
- sysvars.SQLSelectLimit.Name,
- sysvars.TransactionMode.Name,
- sysvars.Workload.Name,
sysvars.DDLStrategy.Name,
- sysvars.SessionUUID.Name,
+ sysvars.TransactionMode.Name,
sysvars.ReadAfterWriteGTID.Name,
sysvars.ReadAfterWriteTimeOut.Name,
- sysvars.SessionTrackGTIDs.Name:
+ sysvars.SessionEnableSystemSettings.Name,
+ sysvars.SessionTrackGTIDs.Name,
+ sysvars.SessionUUID.Name,
+ sysvars.SkipQueryPlanCache.Name,
+ sysvars.Socket.Name,
+ sysvars.SQLSelectLimit.Name,
+ sysvars.Version.Name,
+ sysvars.VersionComment.Name,
+ sysvars.Workload.Name:
cursor.Replace(bindVarExpression("__vt" + lowered))
er.bindVars.AddSysVar(lowered)
}
@@ -307,7 +323,7 @@ func (er *expressionRewriter) unnestSubQueries(cursor *Cursor, subquery *Subquer
}
func bindVarExpression(name string) Expr {
- return NewArgument([]byte(":" + name))
+ return NewArgument(":" + name)
}
// SystemSchema returns true if the schema passed is system schema
@@ -317,3 +333,188 @@ func SystemSchema(schema string) bool {
strings.EqualFold(schema, "sys") ||
strings.EqualFold(schema, "mysql")
}
+
+// RewriteToCNF walks the input AST and rewrites any boolean logic into CNF
+// Note: In order to re-plan, we need to empty the accumulated metadata in the AST,
+// so ColName.Metadata will be nil:ed out as part of this rewrite
+func RewriteToCNF(ast SQLNode) SQLNode {
+ for {
+ finishedRewrite := true
+ ast = Rewrite(ast, func(cursor *Cursor) bool {
+ if e, isExpr := cursor.node.(Expr); isExpr {
+ rewritten, didRewrite := rewriteToCNFExpr(e)
+ if didRewrite {
+ finishedRewrite = false
+ cursor.Replace(rewritten)
+ }
+ }
+ if col, isCol := cursor.node.(*ColName); isCol {
+ col.Metadata = nil
+ }
+ return true
+ }, nil)
+
+ if finishedRewrite {
+ return ast
+ }
+ }
+}
+
+func distinctOr(in *OrExpr) (Expr, bool) {
+ todo := []*OrExpr{in}
+ var leaves []Expr
+ for len(todo) > 0 {
+ curr := todo[0]
+ todo = todo[1:]
+ addAnd := func(in Expr) {
+ and, ok := in.(*OrExpr)
+ if ok {
+ todo = append(todo, and)
+ } else {
+ leaves = append(leaves, in)
+ }
+ }
+ addAnd(curr.Left)
+ addAnd(curr.Right)
+ }
+ original := len(leaves)
+ var predicates []Expr
+
+outer1:
+ for len(leaves) > 0 {
+ curr := leaves[0]
+ leaves = leaves[1:]
+ for _, alreadyIn := range predicates {
+ if EqualsExpr(alreadyIn, curr) {
+ continue outer1
+ }
+ }
+ predicates = append(predicates, curr)
+ }
+ if original == len(predicates) {
+ return in, false
+ }
+ var result Expr
+ for i, curr := range predicates {
+ if i == 0 {
+ result = curr
+ continue
+ }
+ result = &OrExpr{Left: result, Right: curr}
+ }
+ return result, true
+}
+func distinctAnd(in *AndExpr) (Expr, bool) {
+ todo := []*AndExpr{in}
+ var leaves []Expr
+ for len(todo) > 0 {
+ curr := todo[0]
+ todo = todo[1:]
+ addAnd := func(in Expr) {
+ and, ok := in.(*AndExpr)
+ if ok {
+ todo = append(todo, and)
+ } else {
+ leaves = append(leaves, in)
+ }
+ }
+ addAnd(curr.Left)
+ addAnd(curr.Right)
+ }
+ original := len(leaves)
+ var predicates []Expr
+
+outer1:
+ for len(leaves) > 0 {
+ curr := leaves[0]
+ leaves = leaves[1:]
+ for _, alreadyIn := range predicates {
+ if EqualsExpr(alreadyIn, curr) {
+ continue outer1
+ }
+ }
+ predicates = append(predicates, curr)
+ }
+ if original == len(predicates) {
+ return in, false
+ }
+ var result Expr
+ for i, curr := range predicates {
+ if i == 0 {
+ result = curr
+ continue
+ }
+ result = &AndExpr{Left: result, Right: curr}
+ }
+ return result, true
+}
+
+func rewriteToCNFExpr(expr Expr) (Expr, bool) {
+ switch expr := expr.(type) {
+ case *NotExpr:
+ switch child := expr.Expr.(type) {
+ case *NotExpr:
+ // NOT NOT A => A
+ return child.Expr, true
+ case *OrExpr:
+ // DeMorgan Rewriter
+ // NOT (A OR B) => NOT A AND NOT B
+ return &AndExpr{Right: &NotExpr{Expr: child.Right}, Left: &NotExpr{Expr: child.Left}}, true
+ case *AndExpr:
+ // DeMorgan Rewriter
+ // NOT (A AND B) => NOT A OR NOT B
+ return &OrExpr{Right: &NotExpr{Expr: child.Right}, Left: &NotExpr{Expr: child.Left}}, true
+ }
+ case *OrExpr:
+ or := expr
+ if and, ok := or.Left.(*AndExpr); ok {
+ // Simplification
+ // (A AND B) OR A => A
+ if EqualsExpr(or.Right, and.Left) || EqualsExpr(or.Right, and.Right) {
+ return or.Right, true
+ }
+ // Distribution Law
+ // (A AND B) OR C => (A OR C) AND (B OR C)
+ return &AndExpr{Left: &OrExpr{Left: and.Left, Right: or.Right}, Right: &OrExpr{Left: and.Right, Right: or.Right}}, true
+ }
+ if and, ok := or.Right.(*AndExpr); ok {
+ // Simplification
+ // A OR (A AND B) => A
+ if EqualsExpr(or.Left, and.Left) || EqualsExpr(or.Left, and.Right) {
+ return or.Left, true
+ }
+ // Distribution Law
+ // C OR (A AND B) => (C OR A) AND (C OR B)
+ return &AndExpr{Left: &OrExpr{Left: or.Left, Right: and.Left}, Right: &OrExpr{Left: or.Left, Right: and.Right}}, true
+ }
+ // Try to make distinct
+ return distinctOr(expr)
+
+ case *XorExpr:
+ // DeMorgan Rewriter
+ // (A XOR B) => (A OR B) AND NOT (A AND B)
+ return &AndExpr{Left: &OrExpr{Left: expr.Left, Right: expr.Right}, Right: &NotExpr{Expr: &AndExpr{Left: expr.Left, Right: expr.Right}}}, true
+ case *AndExpr:
+ res, rewritten := distinctAnd(expr)
+ if rewritten {
+ return res, rewritten
+ }
+ and := expr
+ if or, ok := and.Left.(*OrExpr); ok {
+ // Simplification
+ // (A OR B) AND A => A
+ if EqualsExpr(or.Left, and.Right) || EqualsExpr(or.Right, and.Right) {
+ return and.Right, true
+ }
+ }
+ if or, ok := and.Right.(*OrExpr); ok {
+ // Simplification
+ // A OR (A AND B) => A
+ if EqualsExpr(or.Left, and.Left) || EqualsExpr(or.Right, and.Left) {
+ return or.Left, true
+ }
+ }
+
+ }
+ return expr, false
+}
diff --git a/go/vt/sqlparser/ast_rewriting_test.go b/go/vt/sqlparser/ast_rewriting_test.go
index 802f632f627..dbad2825a89 100644
--- a/go/vt/sqlparser/ast_rewriting_test.go
+++ b/go/vt/sqlparser/ast_rewriting_test.go
@@ -27,12 +27,12 @@ import (
)
type myTestCase struct {
- in, expected string
- liid, db, foundRows, rowCount, rawGTID, rawTimeout, sessTrackGTID bool
- ddlStrategy, sessionUUID bool
- udv int
- autocommit, clientFoundRows, skipQueryPlanCache bool
- sqlSelectLimit, transactionMode, workload bool
+ in, expected string
+ liid, db, foundRows, rowCount, rawGTID, rawTimeout, sessTrackGTID bool
+ ddlStrategy, sessionUUID, sessionEnableSystemSettings bool
+ udv int
+ autocommit, clientFoundRows, skipQueryPlanCache, socket bool
+ sqlSelectLimit, transactionMode, workload, version, versionComment bool
}
func TestRewrites(in *testing.T) {
@@ -40,6 +40,18 @@ func TestRewrites(in *testing.T) {
in: "SELECT 42",
expected: "SELECT 42",
// no bindvar needs
+ }, {
+ in: "SELECT @@version",
+ expected: "SELECT :__vtversion as `@@version`",
+ version: true,
+ }, {
+ in: "SELECT @@version_comment",
+ expected: "SELECT :__vtversion_comment as `@@version_comment`",
+ versionComment: true,
+ }, {
+ in: "SELECT @@enable_system_settings",
+ expected: "SELECT :__vtenable_system_settings as `@@enable_system_settings`",
+ sessionEnableSystemSettings: true,
}, {
in: "SELECT last_insert_id()",
expected: "SELECT :__lastInsertId as `last_insert_id()`",
@@ -134,6 +146,10 @@ func TestRewrites(in *testing.T) {
in: "SELECT @@workload",
expected: "SELECT :__vtworkload as `@@workload`",
workload: true,
+ }, {
+ in: "SELECT @@socket",
+ expected: "SELECT :__vtsocket as `@@socket`",
+ socket: true,
}, {
in: "select (select 42) from dual",
expected: "select 42 as `(select 42 from dual)` from dual",
@@ -165,6 +181,46 @@ func TestRewrites(in *testing.T) {
// SELECT * behaves different depending the join type used, so if that has been used, we won't rewrite
in: "SELECT * FROM A JOIN B USING (id1,id2,id3)",
expected: "SELECT * FROM A JOIN B USING (id1,id2,id3)",
+ }, {
+ in: "CALL proc(@foo)",
+ expected: "CALL proc(:__vtudvfoo)",
+ udv: 1,
+ }, {
+ in: "SHOW VARIABLES",
+ expected: "SHOW VARIABLES",
+ autocommit: true,
+ clientFoundRows: true,
+ skipQueryPlanCache: true,
+ sqlSelectLimit: true,
+ transactionMode: true,
+ workload: true,
+ version: true,
+ versionComment: true,
+ ddlStrategy: true,
+ sessionUUID: true,
+ sessionEnableSystemSettings: true,
+ rawGTID: true,
+ rawTimeout: true,
+ sessTrackGTID: true,
+ socket: true,
+ }, {
+ in: "SHOW GLOBAL VARIABLES",
+ expected: "SHOW GLOBAL VARIABLES",
+ autocommit: true,
+ clientFoundRows: true,
+ skipQueryPlanCache: true,
+ sqlSelectLimit: true,
+ transactionMode: true,
+ workload: true,
+ version: true,
+ versionComment: true,
+ ddlStrategy: true,
+ sessionUUID: true,
+ sessionEnableSystemSettings: true,
+ rawGTID: true,
+ rawTimeout: true,
+ sessTrackGTID: true,
+ socket: true,
}}
for _, tc := range tests {
@@ -195,9 +251,13 @@ func TestRewrites(in *testing.T) {
assert.Equal(tc.workload, result.NeedsSysVar(sysvars.Workload.Name), "should need :__vtworkload")
assert.Equal(tc.ddlStrategy, result.NeedsSysVar(sysvars.DDLStrategy.Name), "should need ddlStrategy")
assert.Equal(tc.sessionUUID, result.NeedsSysVar(sysvars.SessionUUID.Name), "should need sessionUUID")
+ assert.Equal(tc.sessionEnableSystemSettings, result.NeedsSysVar(sysvars.SessionEnableSystemSettings.Name), "should need sessionEnableSystemSettings")
assert.Equal(tc.rawGTID, result.NeedsSysVar(sysvars.ReadAfterWriteGTID.Name), "should need rawGTID")
assert.Equal(tc.rawTimeout, result.NeedsSysVar(sysvars.ReadAfterWriteTimeOut.Name), "should need rawTimeout")
assert.Equal(tc.sessTrackGTID, result.NeedsSysVar(sysvars.SessionTrackGTIDs.Name), "should need sessTrackGTID")
+ assert.Equal(tc.version, result.NeedsSysVar(sysvars.Version.Name), "should need Vitess version")
+ assert.Equal(tc.versionComment, result.NeedsSysVar(sysvars.VersionComment.Name), "should need Vitess version")
+ assert.Equal(tc.socket, result.NeedsSysVar(sysvars.Socket.Name), "should need :__vtsocket")
})
}
}
@@ -251,3 +311,98 @@ func TestRewritesWithDefaultKeyspace(in *testing.T) {
})
}
}
+
+func TestRewriteToCNF(in *testing.T) {
+ tests := []struct {
+ in string
+ expected string
+ }{{
+ in: "not (not A = 3)",
+ expected: "A = 3",
+ }, {
+ in: "not (A = 3 and B = 2)",
+ expected: "not A = 3 or not B = 2",
+ }, {
+ in: "not (A = 3 or B = 2)",
+ expected: "not A = 3 and not B = 2",
+ }, {
+ in: "A xor B",
+ expected: "(A or B) and not (A and B)",
+ }, {
+ in: "(A and B) or C",
+ expected: "(A or C) and (B or C)",
+ }, {
+ in: "C or (A and B)",
+ expected: "(C or A) and (C or B)",
+ }, {
+ in: "A and A",
+ expected: "A",
+ }, {
+ in: "A OR A",
+ expected: "A",
+ }, {
+ in: "A OR (A AND B)",
+ expected: "A",
+ }, {
+ in: "A OR (B AND A)",
+ expected: "A",
+ }, {
+ in: "(A AND B) OR A",
+ expected: "A",
+ }, {
+ in: "(B AND A) OR A",
+ expected: "A",
+ }, {
+ in: "(A and B) and (B and A)",
+ expected: "A and B",
+ }, {
+ in: "(A or B) and A",
+ expected: "A",
+ }, {
+ in: "A and (A or B)",
+ expected: "A",
+ }}
+
+ for _, tc := range tests {
+ in.Run(tc.in, func(t *testing.T) {
+ stmt, err := Parse("SELECT * FROM T WHERE " + tc.in)
+ require.NoError(t, err)
+
+ expr := stmt.(*Select).Where.Expr
+ expr, didRewrite := rewriteToCNFExpr(expr)
+ assert.True(t, didRewrite)
+ assert.Equal(t, tc.expected, String(expr))
+ })
+ }
+}
+
+func TestFixedPointRewriteToCNF(in *testing.T) {
+ tests := []struct {
+ in string
+ expected string
+ }{{
+ in: "A xor B",
+ expected: "(A or B) and (not A or not B)",
+ }, {
+ in: "(A and B) and (B and A) and (B and A) and (A and B)",
+ expected: "A and B",
+ }, {
+ in: "((A and B) OR (A and C) OR (A and D)) and E and F",
+ expected: "A and ((A or B) and (B or C or A)) and ((A or D) and ((B or A or D) and (B or C or D))) and E and F",
+ }, {
+ in: "(A and B) OR (A and C)",
+ expected: "A and ((B or A) and (B or C))",
+ }}
+
+ for _, tc := range tests {
+ in.Run(tc.in, func(t *testing.T) {
+ require := require.New(t)
+ stmt, err := Parse("SELECT * FROM T WHERE " + tc.in)
+ require.NoError(err)
+
+ expr := stmt.(*Select).Where.Expr
+ output := RewriteToCNF(expr)
+ assert.Equal(t, tc.expected, String(output))
+ })
+ }
+}
diff --git a/go/vt/sqlparser/ast_test.go b/go/vt/sqlparser/ast_test.go
index 31a46476486..fc93e46e15d 100644
--- a/go/vt/sqlparser/ast_test.go
+++ b/go/vt/sqlparser/ast_test.go
@@ -105,6 +105,28 @@ func TestSelect(t *testing.T) {
}
}
+func TestUpdate(t *testing.T) {
+ tree, err := Parse("update t set a = 1")
+ require.NoError(t, err)
+
+ upd, ok := tree.(*Update)
+ require.True(t, ok)
+
+ upd.AddWhere(&ComparisonExpr{
+ Left: &ColName{Name: NewColIdent("b")},
+ Operator: EqualOp,
+ Right: NewIntLiteral("2"),
+ })
+ assert.Equal(t, "update t set a = 1 where b = 2", String(upd))
+
+ upd.AddWhere(&ComparisonExpr{
+ Left: &ColName{Name: NewColIdent("c")},
+ Operator: EqualOp,
+ Right: NewIntLiteral("3"),
+ })
+ assert.Equal(t, "update t set a = 1 where b = 2 and c = 3", String(upd))
+}
+
func TestRemoveHints(t *testing.T) {
for _, query := range []string{
"select * from t use index (i)",
@@ -187,30 +209,29 @@ func TestDDL(t *testing.T) {
affected: []string{"a"},
}, {
query: "rename table a to b",
- output: &DDL{
- Action: RenameDDLAction,
- FromTables: TableNames{
- TableName{Name: NewTableIdent("a")},
- },
- ToTables: TableNames{
- TableName{Name: NewTableIdent("b")},
+ output: &RenameTable{
+ TablePairs: []*RenameTablePair{
+ {
+ FromTable: TableName{Name: NewTableIdent("a")},
+ ToTable: TableName{Name: NewTableIdent("b")},
+ },
},
},
affected: []string{"a", "b"},
}, {
query: "rename table a to b, c to d",
- output: &DDL{
- Action: RenameDDLAction,
- FromTables: TableNames{
- TableName{Name: NewTableIdent("a")},
- TableName{Name: NewTableIdent("c")},
- },
- ToTables: TableNames{
- TableName{Name: NewTableIdent("b")},
- TableName{Name: NewTableIdent("d")},
+ output: &RenameTable{
+ TablePairs: []*RenameTablePair{
+ {
+ FromTable: TableName{Name: NewTableIdent("a")},
+ ToTable: TableName{Name: NewTableIdent("b")},
+ }, {
+ FromTable: TableName{Name: NewTableIdent("c")},
+ ToTable: TableName{Name: NewTableIdent("d")},
+ },
},
},
- affected: []string{"a", "c", "b", "d"},
+ affected: []string{"a", "b", "c", "d"},
}, {
query: "drop table a",
output: &DropTable{
@@ -266,7 +287,7 @@ func TestSetAutocommitON(t *testing.T) {
t.Errorf("SET statement value is not StrVal: %T", v)
}
- if !bytes.Equal([]byte("on"), v.Val) {
+ if "on" != v.Val {
t.Errorf("SET statement value want: on, got: %s", v.Val)
}
default:
@@ -291,7 +312,7 @@ func TestSetAutocommitON(t *testing.T) {
t.Errorf("SET statement value is not StrVal: %T", v)
}
- if !bytes.Equal([]byte("on"), v.Val) {
+ if "on" != v.Val {
t.Errorf("SET statement value want: on, got: %s", v.Val)
}
default:
@@ -318,7 +339,7 @@ func TestSetAutocommitOFF(t *testing.T) {
t.Errorf("SET statement value is not StrVal: %T", v)
}
- if !bytes.Equal([]byte("off"), v.Val) {
+ if "off" != v.Val {
t.Errorf("SET statement value want: on, got: %s", v.Val)
}
default:
@@ -343,7 +364,7 @@ func TestSetAutocommitOFF(t *testing.T) {
t.Errorf("SET statement value is not StrVal: %T", v)
}
- if !bytes.Equal([]byte("off"), v.Val) {
+ if "off" != v.Val {
t.Errorf("SET statement value want: on, got: %s", v.Val)
}
default:
@@ -387,8 +408,8 @@ func TestIsAggregate(t *testing.T) {
func TestIsImpossible(t *testing.T) {
f := ComparisonExpr{
Operator: NotEqualOp,
- Left: newIntLiteral("1"),
- Right: newIntLiteral("1"),
+ Left: NewIntLiteral("1"),
+ Right: NewIntLiteral("1"),
}
if !f.IsImpossible() {
t.Error("IsImpossible: false, want true")
@@ -396,8 +417,8 @@ func TestIsImpossible(t *testing.T) {
f = ComparisonExpr{
Operator: EqualOp,
- Left: newIntLiteral("1"),
- Right: newIntLiteral("1"),
+ Left: NewIntLiteral("1"),
+ Right: NewIntLiteral("1"),
}
if f.IsImpossible() {
t.Error("IsImpossible: true, want false")
@@ -405,8 +426,8 @@ func TestIsImpossible(t *testing.T) {
f = ComparisonExpr{
Operator: NotEqualOp,
- Left: newIntLiteral("1"),
- Right: newIntLiteral("2"),
+ Left: NewIntLiteral("1"),
+ Right: NewIntLiteral("2"),
}
if f.IsImpossible() {
t.Error("IsImpossible: true, want false")
@@ -535,7 +556,7 @@ func TestReplaceExpr(t *testing.T) {
in: "select * from t where case a when b then c when d then c else (select a from b) end",
out: "case a when b then c when d then c else :a end",
}}
- to := NewArgument([]byte(":a"))
+ to := NewArgument(":a")
for _, tcase := range tcases {
tree, err := Parse(tcase.in)
if err != nil {
@@ -665,7 +686,7 @@ func TestHexDecode(t *testing.T) {
out: "encoding/hex: odd length hex string",
}}
for _, tc := range testcase {
- out, err := newHexLiteral(tc.in).HexDecode()
+ out, err := NewHexLiteral(tc.in).HexDecode()
if err != nil {
if err.Error() != tc.out {
t.Errorf("Decode(%q): %v, want %s", tc.in, err, tc.out)
@@ -802,3 +823,32 @@ func TestShowTableStatus(t *testing.T) {
require.NoError(t, err)
require.NotNil(t, tree)
}
+
+func BenchmarkStringTraces(b *testing.B) {
+ for _, trace := range []string{"django_queries.txt", "lobsters.sql.gz"} {
+ b.Run(trace, func(b *testing.B) {
+ queries := loadQueries(b, trace)
+ if len(queries) > 10000 {
+ queries = queries[:10000]
+ }
+
+ parsed := make([]Statement, 0, len(queries))
+ for _, q := range queries {
+ pp, err := Parse(q)
+ if err != nil {
+ b.Fatal(err)
+ }
+ parsed = append(parsed, pp)
+ }
+
+ b.ResetTimer()
+ b.ReportAllocs()
+
+ for i := 0; i < b.N; i++ {
+ for _, stmt := range parsed {
+ _ = String(stmt)
+ }
+ }
+ })
+ }
+}
diff --git a/go/vt/sqlparser/ast_visit.go b/go/vt/sqlparser/ast_visit.go
new file mode 100644
index 00000000000..bd52dfb25c7
--- /dev/null
+++ b/go/vt/sqlparser/ast_visit.go
@@ -0,0 +1,2780 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+// Code generated by ASTHelperGen. DO NOT EDIT.
+
+package sqlparser
+
+func VisitSQLNode(in SQLNode, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case AccessMode:
+ return VisitAccessMode(in, f)
+ case *AddColumns:
+ return VisitRefOfAddColumns(in, f)
+ case *AddConstraintDefinition:
+ return VisitRefOfAddConstraintDefinition(in, f)
+ case *AddIndexDefinition:
+ return VisitRefOfAddIndexDefinition(in, f)
+ case AlgorithmValue:
+ return VisitAlgorithmValue(in, f)
+ case *AliasedExpr:
+ return VisitRefOfAliasedExpr(in, f)
+ case *AliasedTableExpr:
+ return VisitRefOfAliasedTableExpr(in, f)
+ case *AlterCharset:
+ return VisitRefOfAlterCharset(in, f)
+ case *AlterColumn:
+ return VisitRefOfAlterColumn(in, f)
+ case *AlterDatabase:
+ return VisitRefOfAlterDatabase(in, f)
+ case *AlterMigration:
+ return VisitRefOfAlterMigration(in, f)
+ case *AlterTable:
+ return VisitRefOfAlterTable(in, f)
+ case *AlterView:
+ return VisitRefOfAlterView(in, f)
+ case *AlterVschema:
+ return VisitRefOfAlterVschema(in, f)
+ case *AndExpr:
+ return VisitRefOfAndExpr(in, f)
+ case Argument:
+ return VisitArgument(in, f)
+ case *AutoIncSpec:
+ return VisitRefOfAutoIncSpec(in, f)
+ case *Begin:
+ return VisitRefOfBegin(in, f)
+ case *BinaryExpr:
+ return VisitRefOfBinaryExpr(in, f)
+ case BoolVal:
+ return VisitBoolVal(in, f)
+ case *CallProc:
+ return VisitRefOfCallProc(in, f)
+ case *CaseExpr:
+ return VisitRefOfCaseExpr(in, f)
+ case *ChangeColumn:
+ return VisitRefOfChangeColumn(in, f)
+ case *CheckConstraintDefinition:
+ return VisitRefOfCheckConstraintDefinition(in, f)
+ case ColIdent:
+ return VisitColIdent(in, f)
+ case *ColName:
+ return VisitRefOfColName(in, f)
+ case *CollateExpr:
+ return VisitRefOfCollateExpr(in, f)
+ case *ColumnDefinition:
+ return VisitRefOfColumnDefinition(in, f)
+ case *ColumnType:
+ return VisitRefOfColumnType(in, f)
+ case Columns:
+ return VisitColumns(in, f)
+ case Comments:
+ return VisitComments(in, f)
+ case *Commit:
+ return VisitRefOfCommit(in, f)
+ case *ComparisonExpr:
+ return VisitRefOfComparisonExpr(in, f)
+ case *ConstraintDefinition:
+ return VisitRefOfConstraintDefinition(in, f)
+ case *ConvertExpr:
+ return VisitRefOfConvertExpr(in, f)
+ case *ConvertType:
+ return VisitRefOfConvertType(in, f)
+ case *ConvertUsingExpr:
+ return VisitRefOfConvertUsingExpr(in, f)
+ case *CreateDatabase:
+ return VisitRefOfCreateDatabase(in, f)
+ case *CreateTable:
+ return VisitRefOfCreateTable(in, f)
+ case *CreateView:
+ return VisitRefOfCreateView(in, f)
+ case *CurTimeFuncExpr:
+ return VisitRefOfCurTimeFuncExpr(in, f)
+ case *Default:
+ return VisitRefOfDefault(in, f)
+ case *Delete:
+ return VisitRefOfDelete(in, f)
+ case *DerivedTable:
+ return VisitRefOfDerivedTable(in, f)
+ case *DropColumn:
+ return VisitRefOfDropColumn(in, f)
+ case *DropDatabase:
+ return VisitRefOfDropDatabase(in, f)
+ case *DropKey:
+ return VisitRefOfDropKey(in, f)
+ case *DropTable:
+ return VisitRefOfDropTable(in, f)
+ case *DropView:
+ return VisitRefOfDropView(in, f)
+ case *ExistsExpr:
+ return VisitRefOfExistsExpr(in, f)
+ case *ExplainStmt:
+ return VisitRefOfExplainStmt(in, f)
+ case *ExplainTab:
+ return VisitRefOfExplainTab(in, f)
+ case Exprs:
+ return VisitExprs(in, f)
+ case *Flush:
+ return VisitRefOfFlush(in, f)
+ case *Force:
+ return VisitRefOfForce(in, f)
+ case *ForeignKeyDefinition:
+ return VisitRefOfForeignKeyDefinition(in, f)
+ case *FuncExpr:
+ return VisitRefOfFuncExpr(in, f)
+ case GroupBy:
+ return VisitGroupBy(in, f)
+ case *GroupConcatExpr:
+ return VisitRefOfGroupConcatExpr(in, f)
+ case *IndexDefinition:
+ return VisitRefOfIndexDefinition(in, f)
+ case *IndexHints:
+ return VisitRefOfIndexHints(in, f)
+ case *IndexInfo:
+ return VisitRefOfIndexInfo(in, f)
+ case *Insert:
+ return VisitRefOfInsert(in, f)
+ case *IntervalExpr:
+ return VisitRefOfIntervalExpr(in, f)
+ case *IsExpr:
+ return VisitRefOfIsExpr(in, f)
+ case IsolationLevel:
+ return VisitIsolationLevel(in, f)
+ case JoinCondition:
+ return VisitJoinCondition(in, f)
+ case *JoinTableExpr:
+ return VisitRefOfJoinTableExpr(in, f)
+ case *KeyState:
+ return VisitRefOfKeyState(in, f)
+ case *Limit:
+ return VisitRefOfLimit(in, f)
+ case ListArg:
+ return VisitListArg(in, f)
+ case *Literal:
+ return VisitRefOfLiteral(in, f)
+ case *Load:
+ return VisitRefOfLoad(in, f)
+ case *LockOption:
+ return VisitRefOfLockOption(in, f)
+ case *LockTables:
+ return VisitRefOfLockTables(in, f)
+ case *MatchExpr:
+ return VisitRefOfMatchExpr(in, f)
+ case *ModifyColumn:
+ return VisitRefOfModifyColumn(in, f)
+ case *Nextval:
+ return VisitRefOfNextval(in, f)
+ case *NotExpr:
+ return VisitRefOfNotExpr(in, f)
+ case *NullVal:
+ return VisitRefOfNullVal(in, f)
+ case OnDup:
+ return VisitOnDup(in, f)
+ case *OptLike:
+ return VisitRefOfOptLike(in, f)
+ case *OrExpr:
+ return VisitRefOfOrExpr(in, f)
+ case *Order:
+ return VisitRefOfOrder(in, f)
+ case OrderBy:
+ return VisitOrderBy(in, f)
+ case *OrderByOption:
+ return VisitRefOfOrderByOption(in, f)
+ case *OtherAdmin:
+ return VisitRefOfOtherAdmin(in, f)
+ case *OtherRead:
+ return VisitRefOfOtherRead(in, f)
+ case *ParenSelect:
+ return VisitRefOfParenSelect(in, f)
+ case *ParenTableExpr:
+ return VisitRefOfParenTableExpr(in, f)
+ case *PartitionDefinition:
+ return VisitRefOfPartitionDefinition(in, f)
+ case *PartitionSpec:
+ return VisitRefOfPartitionSpec(in, f)
+ case Partitions:
+ return VisitPartitions(in, f)
+ case *RangeCond:
+ return VisitRefOfRangeCond(in, f)
+ case ReferenceAction:
+ return VisitReferenceAction(in, f)
+ case *Release:
+ return VisitRefOfRelease(in, f)
+ case *RenameIndex:
+ return VisitRefOfRenameIndex(in, f)
+ case *RenameTable:
+ return VisitRefOfRenameTable(in, f)
+ case *RenameTableName:
+ return VisitRefOfRenameTableName(in, f)
+ case *RevertMigration:
+ return VisitRefOfRevertMigration(in, f)
+ case *Rollback:
+ return VisitRefOfRollback(in, f)
+ case *SRollback:
+ return VisitRefOfSRollback(in, f)
+ case *Savepoint:
+ return VisitRefOfSavepoint(in, f)
+ case *Select:
+ return VisitRefOfSelect(in, f)
+ case SelectExprs:
+ return VisitSelectExprs(in, f)
+ case *SelectInto:
+ return VisitRefOfSelectInto(in, f)
+ case *Set:
+ return VisitRefOfSet(in, f)
+ case *SetExpr:
+ return VisitRefOfSetExpr(in, f)
+ case SetExprs:
+ return VisitSetExprs(in, f)
+ case *SetTransaction:
+ return VisitRefOfSetTransaction(in, f)
+ case *Show:
+ return VisitRefOfShow(in, f)
+ case *ShowBasic:
+ return VisitRefOfShowBasic(in, f)
+ case *ShowCreate:
+ return VisitRefOfShowCreate(in, f)
+ case *ShowFilter:
+ return VisitRefOfShowFilter(in, f)
+ case *ShowLegacy:
+ return VisitRefOfShowLegacy(in, f)
+ case *StarExpr:
+ return VisitRefOfStarExpr(in, f)
+ case *Stream:
+ return VisitRefOfStream(in, f)
+ case *Subquery:
+ return VisitRefOfSubquery(in, f)
+ case *SubstrExpr:
+ return VisitRefOfSubstrExpr(in, f)
+ case TableExprs:
+ return VisitTableExprs(in, f)
+ case TableIdent:
+ return VisitTableIdent(in, f)
+ case TableName:
+ return VisitTableName(in, f)
+ case TableNames:
+ return VisitTableNames(in, f)
+ case TableOptions:
+ return VisitTableOptions(in, f)
+ case *TableSpec:
+ return VisitRefOfTableSpec(in, f)
+ case *TablespaceOperation:
+ return VisitRefOfTablespaceOperation(in, f)
+ case *TimestampFuncExpr:
+ return VisitRefOfTimestampFuncExpr(in, f)
+ case *TruncateTable:
+ return VisitRefOfTruncateTable(in, f)
+ case *UnaryExpr:
+ return VisitRefOfUnaryExpr(in, f)
+ case *Union:
+ return VisitRefOfUnion(in, f)
+ case *UnionSelect:
+ return VisitRefOfUnionSelect(in, f)
+ case *UnlockTables:
+ return VisitRefOfUnlockTables(in, f)
+ case *Update:
+ return VisitRefOfUpdate(in, f)
+ case *UpdateExpr:
+ return VisitRefOfUpdateExpr(in, f)
+ case UpdateExprs:
+ return VisitUpdateExprs(in, f)
+ case *Use:
+ return VisitRefOfUse(in, f)
+ case *VStream:
+ return VisitRefOfVStream(in, f)
+ case ValTuple:
+ return VisitValTuple(in, f)
+ case *Validation:
+ return VisitRefOfValidation(in, f)
+ case Values:
+ return VisitValues(in, f)
+ case *ValuesFuncExpr:
+ return VisitRefOfValuesFuncExpr(in, f)
+ case VindexParam:
+ return VisitVindexParam(in, f)
+ case *VindexSpec:
+ return VisitRefOfVindexSpec(in, f)
+ case *When:
+ return VisitRefOfWhen(in, f)
+ case *Where:
+ return VisitRefOfWhere(in, f)
+ case *XorExpr:
+ return VisitRefOfXorExpr(in, f)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+func VisitRefOfAddColumns(in *AddColumns, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ for _, el := range in.Columns {
+ if err := VisitRefOfColumnDefinition(el, f); err != nil {
+ return err
+ }
+ }
+ if err := VisitRefOfColName(in.First, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfColName(in.After, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfAddConstraintDefinition(in *AddConstraintDefinition, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitRefOfConstraintDefinition(in.ConstraintDefinition, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfAddIndexDefinition(in *AddIndexDefinition, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitRefOfIndexDefinition(in.IndexDefinition, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfAliasedExpr(in *AliasedExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitExpr(in.Expr, f); err != nil {
+ return err
+ }
+ if err := VisitColIdent(in.As, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfAliasedTableExpr(in *AliasedTableExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitSimpleTableExpr(in.Expr, f); err != nil {
+ return err
+ }
+ if err := VisitPartitions(in.Partitions, f); err != nil {
+ return err
+ }
+ if err := VisitTableIdent(in.As, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfIndexHints(in.Hints, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfAlterCharset(in *AlterCharset, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitRefOfAlterColumn(in *AlterColumn, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitRefOfColName(in.Column, f); err != nil {
+ return err
+ }
+ if err := VisitExpr(in.DefaultVal, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfAlterDatabase(in *AlterDatabase, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitTableIdent(in.DBName, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfAlterMigration(in *AlterMigration, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitRefOfAlterTable(in *AlterTable, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitTableName(in.Table, f); err != nil {
+ return err
+ }
+ for _, el := range in.AlterOptions {
+ if err := VisitAlterOption(el, f); err != nil {
+ return err
+ }
+ }
+ if err := VisitRefOfPartitionSpec(in.PartitionSpec, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfAlterView(in *AlterView, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitTableName(in.ViewName, f); err != nil {
+ return err
+ }
+ if err := VisitColumns(in.Columns, f); err != nil {
+ return err
+ }
+ if err := VisitSelectStatement(in.Select, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfAlterVschema(in *AlterVschema, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitTableName(in.Table, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfVindexSpec(in.VindexSpec, f); err != nil {
+ return err
+ }
+ for _, el := range in.VindexCols {
+ if err := VisitColIdent(el, f); err != nil {
+ return err
+ }
+ }
+ if err := VisitRefOfAutoIncSpec(in.AutoIncSpec, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfAndExpr(in *AndExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitExpr(in.Left, f); err != nil {
+ return err
+ }
+ if err := VisitExpr(in.Right, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfAutoIncSpec(in *AutoIncSpec, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitColIdent(in.Column, f); err != nil {
+ return err
+ }
+ if err := VisitTableName(in.Sequence, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfBegin(in *Begin, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitRefOfBinaryExpr(in *BinaryExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitExpr(in.Left, f); err != nil {
+ return err
+ }
+ if err := VisitExpr(in.Right, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfCallProc(in *CallProc, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitTableName(in.Name, f); err != nil {
+ return err
+ }
+ if err := VisitExprs(in.Params, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfCaseExpr(in *CaseExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitExpr(in.Expr, f); err != nil {
+ return err
+ }
+ for _, el := range in.Whens {
+ if err := VisitRefOfWhen(el, f); err != nil {
+ return err
+ }
+ }
+ if err := VisitExpr(in.Else, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfChangeColumn(in *ChangeColumn, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitRefOfColName(in.OldColumn, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfColumnDefinition(in.NewColDefinition, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfColName(in.First, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfColName(in.After, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfCheckConstraintDefinition(in *CheckConstraintDefinition, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitExpr(in.Expr, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitColIdent(in ColIdent, f Visit) error {
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitRefOfColName(in *ColName, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitColIdent(in.Name, f); err != nil {
+ return err
+ }
+ if err := VisitTableName(in.Qualifier, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfCollateExpr(in *CollateExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitExpr(in.Expr, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfColumnDefinition(in *ColumnDefinition, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitColIdent(in.Name, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfColumnType(in *ColumnType, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitRefOfLiteral(in.Length, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfLiteral(in.Scale, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitColumns(in Columns, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ for _, el := range in {
+ if err := VisitColIdent(el, f); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+func VisitComments(in Comments, f Visit) error {
+ _, err := f(in)
+ return err
+}
+func VisitRefOfCommit(in *Commit, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitRefOfComparisonExpr(in *ComparisonExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitExpr(in.Left, f); err != nil {
+ return err
+ }
+ if err := VisitExpr(in.Right, f); err != nil {
+ return err
+ }
+ if err := VisitExpr(in.Escape, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfConstraintDefinition(in *ConstraintDefinition, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitColIdent(in.Name, f); err != nil {
+ return err
+ }
+ if err := VisitConstraintInfo(in.Details, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfConvertExpr(in *ConvertExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitExpr(in.Expr, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfConvertType(in.Type, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfConvertType(in *ConvertType, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitRefOfLiteral(in.Length, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfLiteral(in.Scale, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfConvertUsingExpr(in *ConvertUsingExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitExpr(in.Expr, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfCreateDatabase(in *CreateDatabase, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitComments(in.Comments, f); err != nil {
+ return err
+ }
+ if err := VisitTableIdent(in.DBName, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfCreateTable(in *CreateTable, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitTableName(in.Table, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfTableSpec(in.TableSpec, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfOptLike(in.OptLike, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfCreateView(in *CreateView, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitTableName(in.ViewName, f); err != nil {
+ return err
+ }
+ if err := VisitColumns(in.Columns, f); err != nil {
+ return err
+ }
+ if err := VisitSelectStatement(in.Select, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfCurTimeFuncExpr(in *CurTimeFuncExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitColIdent(in.Name, f); err != nil {
+ return err
+ }
+ if err := VisitExpr(in.Fsp, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfDefault(in *Default, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitRefOfDelete(in *Delete, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitComments(in.Comments, f); err != nil {
+ return err
+ }
+ if err := VisitTableNames(in.Targets, f); err != nil {
+ return err
+ }
+ if err := VisitTableExprs(in.TableExprs, f); err != nil {
+ return err
+ }
+ if err := VisitPartitions(in.Partitions, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfWhere(in.Where, f); err != nil {
+ return err
+ }
+ if err := VisitOrderBy(in.OrderBy, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfLimit(in.Limit, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfDerivedTable(in *DerivedTable, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitSelectStatement(in.Select, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfDropColumn(in *DropColumn, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitRefOfColName(in.Name, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfDropDatabase(in *DropDatabase, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitComments(in.Comments, f); err != nil {
+ return err
+ }
+ if err := VisitTableIdent(in.DBName, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfDropKey(in *DropKey, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitColIdent(in.Name, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfDropTable(in *DropTable, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitTableNames(in.FromTables, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfDropView(in *DropView, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitTableNames(in.FromTables, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfExistsExpr(in *ExistsExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitRefOfSubquery(in.Subquery, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfExplainStmt(in *ExplainStmt, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitStatement(in.Statement, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfExplainTab(in *ExplainTab, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitTableName(in.Table, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitExprs(in Exprs, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ for _, el := range in {
+ if err := VisitExpr(el, f); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+func VisitRefOfFlush(in *Flush, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitTableNames(in.TableNames, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfForce(in *Force, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitRefOfForeignKeyDefinition(in *ForeignKeyDefinition, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitColumns(in.Source, f); err != nil {
+ return err
+ }
+ if err := VisitTableName(in.ReferencedTable, f); err != nil {
+ return err
+ }
+ if err := VisitColumns(in.ReferencedColumns, f); err != nil {
+ return err
+ }
+ if err := VisitReferenceAction(in.OnDelete, f); err != nil {
+ return err
+ }
+ if err := VisitReferenceAction(in.OnUpdate, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfFuncExpr(in *FuncExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitTableIdent(in.Qualifier, f); err != nil {
+ return err
+ }
+ if err := VisitColIdent(in.Name, f); err != nil {
+ return err
+ }
+ if err := VisitSelectExprs(in.Exprs, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitGroupBy(in GroupBy, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ for _, el := range in {
+ if err := VisitExpr(el, f); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+func VisitRefOfGroupConcatExpr(in *GroupConcatExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitSelectExprs(in.Exprs, f); err != nil {
+ return err
+ }
+ if err := VisitOrderBy(in.OrderBy, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfLimit(in.Limit, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfIndexDefinition(in *IndexDefinition, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitRefOfIndexInfo(in.Info, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfIndexHints(in *IndexHints, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ for _, el := range in.Indexes {
+ if err := VisitColIdent(el, f); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+func VisitRefOfIndexInfo(in *IndexInfo, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitColIdent(in.Name, f); err != nil {
+ return err
+ }
+ if err := VisitColIdent(in.ConstraintName, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfInsert(in *Insert, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitComments(in.Comments, f); err != nil {
+ return err
+ }
+ if err := VisitTableName(in.Table, f); err != nil {
+ return err
+ }
+ if err := VisitPartitions(in.Partitions, f); err != nil {
+ return err
+ }
+ if err := VisitColumns(in.Columns, f); err != nil {
+ return err
+ }
+ if err := VisitInsertRows(in.Rows, f); err != nil {
+ return err
+ }
+ if err := VisitOnDup(in.OnDup, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfIntervalExpr(in *IntervalExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitExpr(in.Expr, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfIsExpr(in *IsExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitExpr(in.Expr, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitJoinCondition(in JoinCondition, f Visit) error {
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitExpr(in.On, f); err != nil {
+ return err
+ }
+ if err := VisitColumns(in.Using, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfJoinTableExpr(in *JoinTableExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitTableExpr(in.LeftExpr, f); err != nil {
+ return err
+ }
+ if err := VisitTableExpr(in.RightExpr, f); err != nil {
+ return err
+ }
+ if err := VisitJoinCondition(in.Condition, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfKeyState(in *KeyState, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitRefOfLimit(in *Limit, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitExpr(in.Offset, f); err != nil {
+ return err
+ }
+ if err := VisitExpr(in.Rowcount, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitListArg(in ListArg, f Visit) error {
+ _, err := f(in)
+ return err
+}
+func VisitRefOfLiteral(in *Literal, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitRefOfLoad(in *Load, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitRefOfLockOption(in *LockOption, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitRefOfLockTables(in *LockTables, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitRefOfMatchExpr(in *MatchExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitSelectExprs(in.Columns, f); err != nil {
+ return err
+ }
+ if err := VisitExpr(in.Expr, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfModifyColumn(in *ModifyColumn, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitRefOfColumnDefinition(in.NewColDefinition, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfColName(in.First, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfColName(in.After, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfNextval(in *Nextval, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitExpr(in.Expr, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfNotExpr(in *NotExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitExpr(in.Expr, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfNullVal(in *NullVal, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitOnDup(in OnDup, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ for _, el := range in {
+ if err := VisitRefOfUpdateExpr(el, f); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+func VisitRefOfOptLike(in *OptLike, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitTableName(in.LikeTable, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfOrExpr(in *OrExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitExpr(in.Left, f); err != nil {
+ return err
+ }
+ if err := VisitExpr(in.Right, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfOrder(in *Order, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitExpr(in.Expr, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitOrderBy(in OrderBy, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ for _, el := range in {
+ if err := VisitRefOfOrder(el, f); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+func VisitRefOfOrderByOption(in *OrderByOption, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitColumns(in.Cols, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfOtherAdmin(in *OtherAdmin, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitRefOfOtherRead(in *OtherRead, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitRefOfParenSelect(in *ParenSelect, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitSelectStatement(in.Select, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfParenTableExpr(in *ParenTableExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitTableExprs(in.Exprs, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfPartitionDefinition(in *PartitionDefinition, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitColIdent(in.Name, f); err != nil {
+ return err
+ }
+ if err := VisitExpr(in.Limit, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfPartitionSpec(in *PartitionSpec, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitPartitions(in.Names, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfLiteral(in.Number, f); err != nil {
+ return err
+ }
+ if err := VisitTableName(in.TableName, f); err != nil {
+ return err
+ }
+ for _, el := range in.Definitions {
+ if err := VisitRefOfPartitionDefinition(el, f); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+func VisitPartitions(in Partitions, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ for _, el := range in {
+ if err := VisitColIdent(el, f); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+func VisitRefOfRangeCond(in *RangeCond, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitExpr(in.Left, f); err != nil {
+ return err
+ }
+ if err := VisitExpr(in.From, f); err != nil {
+ return err
+ }
+ if err := VisitExpr(in.To, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfRelease(in *Release, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitColIdent(in.Name, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfRenameIndex(in *RenameIndex, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitColIdent(in.OldName, f); err != nil {
+ return err
+ }
+ if err := VisitColIdent(in.NewName, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfRenameTable(in *RenameTable, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitRefOfRenameTableName(in *RenameTableName, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitTableName(in.Table, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfRevertMigration(in *RevertMigration, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitRefOfRollback(in *Rollback, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitRefOfSRollback(in *SRollback, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitColIdent(in.Name, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfSavepoint(in *Savepoint, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitColIdent(in.Name, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfSelect(in *Select, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitComments(in.Comments, f); err != nil {
+ return err
+ }
+ if err := VisitSelectExprs(in.SelectExprs, f); err != nil {
+ return err
+ }
+ if err := VisitTableExprs(in.From, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfWhere(in.Where, f); err != nil {
+ return err
+ }
+ if err := VisitGroupBy(in.GroupBy, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfWhere(in.Having, f); err != nil {
+ return err
+ }
+ if err := VisitOrderBy(in.OrderBy, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfLimit(in.Limit, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfSelectInto(in.Into, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitSelectExprs(in SelectExprs, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ for _, el := range in {
+ if err := VisitSelectExpr(el, f); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+func VisitRefOfSelectInto(in *SelectInto, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitRefOfSet(in *Set, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitComments(in.Comments, f); err != nil {
+ return err
+ }
+ if err := VisitSetExprs(in.Exprs, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfSetExpr(in *SetExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitColIdent(in.Name, f); err != nil {
+ return err
+ }
+ if err := VisitExpr(in.Expr, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitSetExprs(in SetExprs, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ for _, el := range in {
+ if err := VisitRefOfSetExpr(el, f); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+func VisitRefOfSetTransaction(in *SetTransaction, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitSQLNode(in.SQLNode, f); err != nil {
+ return err
+ }
+ if err := VisitComments(in.Comments, f); err != nil {
+ return err
+ }
+ for _, el := range in.Characteristics {
+ if err := VisitCharacteristic(el, f); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+func VisitRefOfShow(in *Show, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitShowInternal(in.Internal, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfShowBasic(in *ShowBasic, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitTableName(in.Tbl, f); err != nil {
+ return err
+ }
+ if err := VisitTableIdent(in.DbName, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfShowFilter(in.Filter, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfShowCreate(in *ShowCreate, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitTableName(in.Op, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfShowFilter(in *ShowFilter, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitExpr(in.Filter, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfShowLegacy(in *ShowLegacy, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitTableName(in.OnTable, f); err != nil {
+ return err
+ }
+ if err := VisitTableName(in.Table, f); err != nil {
+ return err
+ }
+ if err := VisitExpr(in.ShowCollationFilterOpt, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfStarExpr(in *StarExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitTableName(in.TableName, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfStream(in *Stream, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitComments(in.Comments, f); err != nil {
+ return err
+ }
+ if err := VisitSelectExpr(in.SelectExpr, f); err != nil {
+ return err
+ }
+ if err := VisitTableName(in.Table, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfSubquery(in *Subquery, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitSelectStatement(in.Select, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfSubstrExpr(in *SubstrExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitRefOfColName(in.Name, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfLiteral(in.StrVal, f); err != nil {
+ return err
+ }
+ if err := VisitExpr(in.From, f); err != nil {
+ return err
+ }
+ if err := VisitExpr(in.To, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitTableExprs(in TableExprs, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ for _, el := range in {
+ if err := VisitTableExpr(el, f); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+func VisitTableIdent(in TableIdent, f Visit) error {
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitTableName(in TableName, f Visit) error {
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitTableIdent(in.Name, f); err != nil {
+ return err
+ }
+ if err := VisitTableIdent(in.Qualifier, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitTableNames(in TableNames, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ for _, el := range in {
+ if err := VisitTableName(el, f); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+func VisitTableOptions(in TableOptions, f Visit) error {
+ _, err := f(in)
+ return err
+}
+func VisitRefOfTableSpec(in *TableSpec, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ for _, el := range in.Columns {
+ if err := VisitRefOfColumnDefinition(el, f); err != nil {
+ return err
+ }
+ }
+ for _, el := range in.Indexes {
+ if err := VisitRefOfIndexDefinition(el, f); err != nil {
+ return err
+ }
+ }
+ for _, el := range in.Constraints {
+ if err := VisitRefOfConstraintDefinition(el, f); err != nil {
+ return err
+ }
+ }
+ if err := VisitTableOptions(in.Options, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfTablespaceOperation(in *TablespaceOperation, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitRefOfTimestampFuncExpr(in *TimestampFuncExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitExpr(in.Expr1, f); err != nil {
+ return err
+ }
+ if err := VisitExpr(in.Expr2, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfTruncateTable(in *TruncateTable, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitTableName(in.Table, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfUnaryExpr(in *UnaryExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitExpr(in.Expr, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfUnion(in *Union, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitSelectStatement(in.FirstStatement, f); err != nil {
+ return err
+ }
+ for _, el := range in.UnionSelects {
+ if err := VisitRefOfUnionSelect(el, f); err != nil {
+ return err
+ }
+ }
+ if err := VisitOrderBy(in.OrderBy, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfLimit(in.Limit, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfUnionSelect(in *UnionSelect, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitSelectStatement(in.Statement, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfUnlockTables(in *UnlockTables, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitRefOfUpdate(in *Update, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitComments(in.Comments, f); err != nil {
+ return err
+ }
+ if err := VisitTableExprs(in.TableExprs, f); err != nil {
+ return err
+ }
+ if err := VisitUpdateExprs(in.Exprs, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfWhere(in.Where, f); err != nil {
+ return err
+ }
+ if err := VisitOrderBy(in.OrderBy, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfLimit(in.Limit, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfUpdateExpr(in *UpdateExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitRefOfColName(in.Name, f); err != nil {
+ return err
+ }
+ if err := VisitExpr(in.Expr, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitUpdateExprs(in UpdateExprs, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ for _, el := range in {
+ if err := VisitRefOfUpdateExpr(el, f); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+func VisitRefOfUse(in *Use, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitTableIdent(in.DBName, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfVStream(in *VStream, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitComments(in.Comments, f); err != nil {
+ return err
+ }
+ if err := VisitSelectExpr(in.SelectExpr, f); err != nil {
+ return err
+ }
+ if err := VisitTableName(in.Table, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfWhere(in.Where, f); err != nil {
+ return err
+ }
+ if err := VisitRefOfLimit(in.Limit, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitValTuple(in ValTuple, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ for _, el := range in {
+ if err := VisitExpr(el, f); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+func VisitRefOfValidation(in *Validation, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitValues(in Values, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ for _, el := range in {
+ if err := VisitValTuple(el, f); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+func VisitRefOfValuesFuncExpr(in *ValuesFuncExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitRefOfColName(in.Name, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitVindexParam(in VindexParam, f Visit) error {
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitColIdent(in.Key, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfVindexSpec(in *VindexSpec, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitColIdent(in.Name, f); err != nil {
+ return err
+ }
+ if err := VisitColIdent(in.Type, f); err != nil {
+ return err
+ }
+ for _, el := range in.Params {
+ if err := VisitVindexParam(el, f); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+func VisitRefOfWhen(in *When, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitExpr(in.Cond, f); err != nil {
+ return err
+ }
+ if err := VisitExpr(in.Val, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfWhere(in *Where, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitExpr(in.Expr, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfXorExpr(in *XorExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitExpr(in.Left, f); err != nil {
+ return err
+ }
+ if err := VisitExpr(in.Right, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitAlterOption(in AlterOption, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *AddColumns:
+ return VisitRefOfAddColumns(in, f)
+ case *AddConstraintDefinition:
+ return VisitRefOfAddConstraintDefinition(in, f)
+ case *AddIndexDefinition:
+ return VisitRefOfAddIndexDefinition(in, f)
+ case AlgorithmValue:
+ return VisitAlgorithmValue(in, f)
+ case *AlterCharset:
+ return VisitRefOfAlterCharset(in, f)
+ case *AlterColumn:
+ return VisitRefOfAlterColumn(in, f)
+ case *ChangeColumn:
+ return VisitRefOfChangeColumn(in, f)
+ case *DropColumn:
+ return VisitRefOfDropColumn(in, f)
+ case *DropKey:
+ return VisitRefOfDropKey(in, f)
+ case *Force:
+ return VisitRefOfForce(in, f)
+ case *KeyState:
+ return VisitRefOfKeyState(in, f)
+ case *LockOption:
+ return VisitRefOfLockOption(in, f)
+ case *ModifyColumn:
+ return VisitRefOfModifyColumn(in, f)
+ case *OrderByOption:
+ return VisitRefOfOrderByOption(in, f)
+ case *RenameIndex:
+ return VisitRefOfRenameIndex(in, f)
+ case *RenameTableName:
+ return VisitRefOfRenameTableName(in, f)
+ case TableOptions:
+ return VisitTableOptions(in, f)
+ case *TablespaceOperation:
+ return VisitRefOfTablespaceOperation(in, f)
+ case *Validation:
+ return VisitRefOfValidation(in, f)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+func VisitCharacteristic(in Characteristic, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case AccessMode:
+ return VisitAccessMode(in, f)
+ case IsolationLevel:
+ return VisitIsolationLevel(in, f)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+func VisitColTuple(in ColTuple, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case ListArg:
+ return VisitListArg(in, f)
+ case *Subquery:
+ return VisitRefOfSubquery(in, f)
+ case ValTuple:
+ return VisitValTuple(in, f)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+func VisitConstraintInfo(in ConstraintInfo, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *CheckConstraintDefinition:
+ return VisitRefOfCheckConstraintDefinition(in, f)
+ case *ForeignKeyDefinition:
+ return VisitRefOfForeignKeyDefinition(in, f)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+func VisitDBDDLStatement(in DBDDLStatement, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *AlterDatabase:
+ return VisitRefOfAlterDatabase(in, f)
+ case *CreateDatabase:
+ return VisitRefOfCreateDatabase(in, f)
+ case *DropDatabase:
+ return VisitRefOfDropDatabase(in, f)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+func VisitDDLStatement(in DDLStatement, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *AlterTable:
+ return VisitRefOfAlterTable(in, f)
+ case *AlterView:
+ return VisitRefOfAlterView(in, f)
+ case *CreateTable:
+ return VisitRefOfCreateTable(in, f)
+ case *CreateView:
+ return VisitRefOfCreateView(in, f)
+ case *DropTable:
+ return VisitRefOfDropTable(in, f)
+ case *DropView:
+ return VisitRefOfDropView(in, f)
+ case *RenameTable:
+ return VisitRefOfRenameTable(in, f)
+ case *TruncateTable:
+ return VisitRefOfTruncateTable(in, f)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+func VisitExplain(in Explain, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *ExplainStmt:
+ return VisitRefOfExplainStmt(in, f)
+ case *ExplainTab:
+ return VisitRefOfExplainTab(in, f)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+func VisitExpr(in Expr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *AndExpr:
+ return VisitRefOfAndExpr(in, f)
+ case Argument:
+ return VisitArgument(in, f)
+ case *BinaryExpr:
+ return VisitRefOfBinaryExpr(in, f)
+ case BoolVal:
+ return VisitBoolVal(in, f)
+ case *CaseExpr:
+ return VisitRefOfCaseExpr(in, f)
+ case *ColName:
+ return VisitRefOfColName(in, f)
+ case *CollateExpr:
+ return VisitRefOfCollateExpr(in, f)
+ case *ComparisonExpr:
+ return VisitRefOfComparisonExpr(in, f)
+ case *ConvertExpr:
+ return VisitRefOfConvertExpr(in, f)
+ case *ConvertUsingExpr:
+ return VisitRefOfConvertUsingExpr(in, f)
+ case *CurTimeFuncExpr:
+ return VisitRefOfCurTimeFuncExpr(in, f)
+ case *Default:
+ return VisitRefOfDefault(in, f)
+ case *ExistsExpr:
+ return VisitRefOfExistsExpr(in, f)
+ case *FuncExpr:
+ return VisitRefOfFuncExpr(in, f)
+ case *GroupConcatExpr:
+ return VisitRefOfGroupConcatExpr(in, f)
+ case *IntervalExpr:
+ return VisitRefOfIntervalExpr(in, f)
+ case *IsExpr:
+ return VisitRefOfIsExpr(in, f)
+ case ListArg:
+ return VisitListArg(in, f)
+ case *Literal:
+ return VisitRefOfLiteral(in, f)
+ case *MatchExpr:
+ return VisitRefOfMatchExpr(in, f)
+ case *NotExpr:
+ return VisitRefOfNotExpr(in, f)
+ case *NullVal:
+ return VisitRefOfNullVal(in, f)
+ case *OrExpr:
+ return VisitRefOfOrExpr(in, f)
+ case *RangeCond:
+ return VisitRefOfRangeCond(in, f)
+ case *Subquery:
+ return VisitRefOfSubquery(in, f)
+ case *SubstrExpr:
+ return VisitRefOfSubstrExpr(in, f)
+ case *TimestampFuncExpr:
+ return VisitRefOfTimestampFuncExpr(in, f)
+ case *UnaryExpr:
+ return VisitRefOfUnaryExpr(in, f)
+ case ValTuple:
+ return VisitValTuple(in, f)
+ case *ValuesFuncExpr:
+ return VisitRefOfValuesFuncExpr(in, f)
+ case *XorExpr:
+ return VisitRefOfXorExpr(in, f)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+func VisitInsertRows(in InsertRows, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *ParenSelect:
+ return VisitRefOfParenSelect(in, f)
+ case *Select:
+ return VisitRefOfSelect(in, f)
+ case *Union:
+ return VisitRefOfUnion(in, f)
+ case Values:
+ return VisitValues(in, f)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+func VisitSelectExpr(in SelectExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *AliasedExpr:
+ return VisitRefOfAliasedExpr(in, f)
+ case *Nextval:
+ return VisitRefOfNextval(in, f)
+ case *StarExpr:
+ return VisitRefOfStarExpr(in, f)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+func VisitSelectStatement(in SelectStatement, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *ParenSelect:
+ return VisitRefOfParenSelect(in, f)
+ case *Select:
+ return VisitRefOfSelect(in, f)
+ case *Union:
+ return VisitRefOfUnion(in, f)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+func VisitShowInternal(in ShowInternal, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *ShowBasic:
+ return VisitRefOfShowBasic(in, f)
+ case *ShowCreate:
+ return VisitRefOfShowCreate(in, f)
+ case *ShowLegacy:
+ return VisitRefOfShowLegacy(in, f)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+func VisitSimpleTableExpr(in SimpleTableExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *DerivedTable:
+ return VisitRefOfDerivedTable(in, f)
+ case TableName:
+ return VisitTableName(in, f)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+func VisitStatement(in Statement, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *AlterDatabase:
+ return VisitRefOfAlterDatabase(in, f)
+ case *AlterMigration:
+ return VisitRefOfAlterMigration(in, f)
+ case *AlterTable:
+ return VisitRefOfAlterTable(in, f)
+ case *AlterView:
+ return VisitRefOfAlterView(in, f)
+ case *AlterVschema:
+ return VisitRefOfAlterVschema(in, f)
+ case *Begin:
+ return VisitRefOfBegin(in, f)
+ case *CallProc:
+ return VisitRefOfCallProc(in, f)
+ case *Commit:
+ return VisitRefOfCommit(in, f)
+ case *CreateDatabase:
+ return VisitRefOfCreateDatabase(in, f)
+ case *CreateTable:
+ return VisitRefOfCreateTable(in, f)
+ case *CreateView:
+ return VisitRefOfCreateView(in, f)
+ case *Delete:
+ return VisitRefOfDelete(in, f)
+ case *DropDatabase:
+ return VisitRefOfDropDatabase(in, f)
+ case *DropTable:
+ return VisitRefOfDropTable(in, f)
+ case *DropView:
+ return VisitRefOfDropView(in, f)
+ case *ExplainStmt:
+ return VisitRefOfExplainStmt(in, f)
+ case *ExplainTab:
+ return VisitRefOfExplainTab(in, f)
+ case *Flush:
+ return VisitRefOfFlush(in, f)
+ case *Insert:
+ return VisitRefOfInsert(in, f)
+ case *Load:
+ return VisitRefOfLoad(in, f)
+ case *LockTables:
+ return VisitRefOfLockTables(in, f)
+ case *OtherAdmin:
+ return VisitRefOfOtherAdmin(in, f)
+ case *OtherRead:
+ return VisitRefOfOtherRead(in, f)
+ case *ParenSelect:
+ return VisitRefOfParenSelect(in, f)
+ case *Release:
+ return VisitRefOfRelease(in, f)
+ case *RenameTable:
+ return VisitRefOfRenameTable(in, f)
+ case *RevertMigration:
+ return VisitRefOfRevertMigration(in, f)
+ case *Rollback:
+ return VisitRefOfRollback(in, f)
+ case *SRollback:
+ return VisitRefOfSRollback(in, f)
+ case *Savepoint:
+ return VisitRefOfSavepoint(in, f)
+ case *Select:
+ return VisitRefOfSelect(in, f)
+ case *Set:
+ return VisitRefOfSet(in, f)
+ case *SetTransaction:
+ return VisitRefOfSetTransaction(in, f)
+ case *Show:
+ return VisitRefOfShow(in, f)
+ case *Stream:
+ return VisitRefOfStream(in, f)
+ case *TruncateTable:
+ return VisitRefOfTruncateTable(in, f)
+ case *Union:
+ return VisitRefOfUnion(in, f)
+ case *UnlockTables:
+ return VisitRefOfUnlockTables(in, f)
+ case *Update:
+ return VisitRefOfUpdate(in, f)
+ case *Use:
+ return VisitRefOfUse(in, f)
+ case *VStream:
+ return VisitRefOfVStream(in, f)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+func VisitTableExpr(in TableExpr, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ switch in := in.(type) {
+ case *AliasedTableExpr:
+ return VisitRefOfAliasedTableExpr(in, f)
+ case *JoinTableExpr:
+ return VisitRefOfJoinTableExpr(in, f)
+ case *ParenTableExpr:
+ return VisitRefOfParenTableExpr(in, f)
+ default:
+ // this should never happen
+ return nil
+ }
+}
+func VisitAccessMode(in AccessMode, f Visit) error {
+ _, err := f(in)
+ return err
+}
+func VisitAlgorithmValue(in AlgorithmValue, f Visit) error {
+ _, err := f(in)
+ return err
+}
+func VisitArgument(in Argument, f Visit) error {
+ _, err := f(in)
+ return err
+}
+func VisitBoolVal(in BoolVal, f Visit) error {
+ _, err := f(in)
+ return err
+}
+func VisitIsolationLevel(in IsolationLevel, f Visit) error {
+ _, err := f(in)
+ return err
+}
+func VisitReferenceAction(in ReferenceAction, f Visit) error {
+ _, err := f(in)
+ return err
+}
+func VisitRefOfColIdent(in *ColIdent, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitRefOfJoinCondition(in *JoinCondition, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitExpr(in.On, f); err != nil {
+ return err
+ }
+ if err := VisitColumns(in.Using, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfTableIdent(in *TableIdent, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ return nil
+}
+func VisitRefOfTableName(in *TableName, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitTableIdent(in.Name, f); err != nil {
+ return err
+ }
+ if err := VisitTableIdent(in.Qualifier, f); err != nil {
+ return err
+ }
+ return nil
+}
+func VisitRefOfVindexParam(in *VindexParam, f Visit) error {
+ if in == nil {
+ return nil
+ }
+ if cont, err := f(in); err != nil || !cont {
+ return err
+ }
+ if err := VisitColIdent(in.Key, f); err != nil {
+ return err
+ }
+ return nil
+}
diff --git a/go/vt/sqlparser/cached_size.go b/go/vt/sqlparser/cached_size.go
new file mode 100644
index 00000000000..3f2eb013846
--- /dev/null
+++ b/go/vt/sqlparser/cached_size.go
@@ -0,0 +1,2351 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+// Code generated by Sizegen. DO NOT EDIT.
+
+package sqlparser
+
+type cachedObject interface {
+ CachedSize(alloc bool) int64
+}
+
+func (cached *AddColumns) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(40)
+ }
+ // field Columns []*vitess.io/vitess/go/vt/sqlparser.ColumnDefinition
+ {
+ size += int64(cap(cached.Columns)) * int64(8)
+ for _, elem := range cached.Columns {
+ size += elem.CachedSize(true)
+ }
+ }
+ // field First *vitess.io/vitess/go/vt/sqlparser.ColName
+ size += cached.First.CachedSize(true)
+ // field After *vitess.io/vitess/go/vt/sqlparser.ColName
+ size += cached.After.CachedSize(true)
+ return size
+}
+func (cached *AddConstraintDefinition) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(8)
+ }
+ // field ConstraintDefinition *vitess.io/vitess/go/vt/sqlparser.ConstraintDefinition
+ size += cached.ConstraintDefinition.CachedSize(true)
+ return size
+}
+func (cached *AddIndexDefinition) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(8)
+ }
+ // field IndexDefinition *vitess.io/vitess/go/vt/sqlparser.IndexDefinition
+ size += cached.IndexDefinition.CachedSize(true)
+ return size
+}
+func (cached *AliasedExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(56)
+ }
+ // field Expr vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Expr.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field As vitess.io/vitess/go/vt/sqlparser.ColIdent
+ size += cached.As.CachedSize(false)
+ return size
+}
+func (cached *AliasedTableExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(64)
+ }
+ // field Expr vitess.io/vitess/go/vt/sqlparser.SimpleTableExpr
+ if cc, ok := cached.Expr.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field Partitions vitess.io/vitess/go/vt/sqlparser.Partitions
+ {
+ size += int64(cap(cached.Partitions)) * int64(40)
+ for _, elem := range cached.Partitions {
+ size += elem.CachedSize(false)
+ }
+ }
+ // field As vitess.io/vitess/go/vt/sqlparser.TableIdent
+ size += cached.As.CachedSize(false)
+ // field Hints *vitess.io/vitess/go/vt/sqlparser.IndexHints
+ size += cached.Hints.CachedSize(true)
+ return size
+}
+func (cached *AlterCharset) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(32)
+ }
+ // field CharacterSet string
+ size += int64(len(cached.CharacterSet))
+ // field Collate string
+ size += int64(len(cached.Collate))
+ return size
+}
+func (cached *AlterColumn) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(32)
+ }
+ // field Column *vitess.io/vitess/go/vt/sqlparser.ColName
+ size += cached.Column.CachedSize(true)
+ // field DefaultVal vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.DefaultVal.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *AlterDatabase) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(49)
+ }
+ // field DBName vitess.io/vitess/go/vt/sqlparser.TableIdent
+ size += cached.DBName.CachedSize(false)
+ // field AlterOptions []vitess.io/vitess/go/vt/sqlparser.CollateAndCharset
+ {
+ size += int64(cap(cached.AlterOptions)) * int64(24)
+ for _, elem := range cached.AlterOptions {
+ size += elem.CachedSize(false)
+ }
+ }
+ return size
+}
+func (cached *AlterMigration) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(24)
+ }
+ // field UUID string
+ size += int64(len(cached.UUID))
+ return size
+}
+func (cached *AlterTable) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(65)
+ }
+ // field Table vitess.io/vitess/go/vt/sqlparser.TableName
+ size += cached.Table.CachedSize(false)
+ // field AlterOptions []vitess.io/vitess/go/vt/sqlparser.AlterOption
+ {
+ size += int64(cap(cached.AlterOptions)) * int64(16)
+ for _, elem := range cached.AlterOptions {
+ if cc, ok := elem.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ }
+ }
+ // field PartitionSpec *vitess.io/vitess/go/vt/sqlparser.PartitionSpec
+ size += cached.PartitionSpec.CachedSize(true)
+ return size
+}
+func (cached *AlterView) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(136)
+ }
+ // field ViewName vitess.io/vitess/go/vt/sqlparser.TableName
+ size += cached.ViewName.CachedSize(false)
+ // field Algorithm string
+ size += int64(len(cached.Algorithm))
+ // field Definer string
+ size += int64(len(cached.Definer))
+ // field Security string
+ size += int64(len(cached.Security))
+ // field Columns vitess.io/vitess/go/vt/sqlparser.Columns
+ {
+ size += int64(cap(cached.Columns)) * int64(40)
+ for _, elem := range cached.Columns {
+ size += elem.CachedSize(false)
+ }
+ }
+ // field Select vitess.io/vitess/go/vt/sqlparser.SelectStatement
+ if cc, ok := cached.Select.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field CheckOption string
+ size += int64(len(cached.CheckOption))
+ return size
+}
+func (cached *AlterVschema) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(80)
+ }
+ // field Table vitess.io/vitess/go/vt/sqlparser.TableName
+ size += cached.Table.CachedSize(false)
+ // field VindexSpec *vitess.io/vitess/go/vt/sqlparser.VindexSpec
+ size += cached.VindexSpec.CachedSize(true)
+ // field VindexCols []vitess.io/vitess/go/vt/sqlparser.ColIdent
+ {
+ size += int64(cap(cached.VindexCols)) * int64(40)
+ for _, elem := range cached.VindexCols {
+ size += elem.CachedSize(false)
+ }
+ }
+ // field AutoIncSpec *vitess.io/vitess/go/vt/sqlparser.AutoIncSpec
+ size += cached.AutoIncSpec.CachedSize(true)
+ return size
+}
+func (cached *AndExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(32)
+ }
+ // field Left vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Left.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field Right vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Right.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *AutoIncSpec) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(72)
+ }
+ // field Column vitess.io/vitess/go/vt/sqlparser.ColIdent
+ size += cached.Column.CachedSize(false)
+ // field Sequence vitess.io/vitess/go/vt/sqlparser.TableName
+ size += cached.Sequence.CachedSize(false)
+ return size
+}
+func (cached *BinaryExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(40)
+ }
+ // field Left vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Left.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field Right vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Right.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *BindVarNeeds) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(73)
+ }
+ // field NeedFunctionResult []string
+ {
+ size += int64(cap(cached.NeedFunctionResult)) * int64(16)
+ for _, elem := range cached.NeedFunctionResult {
+ size += int64(len(elem))
+ }
+ }
+ // field NeedSystemVariable []string
+ {
+ size += int64(cap(cached.NeedSystemVariable)) * int64(16)
+ for _, elem := range cached.NeedSystemVariable {
+ size += int64(len(elem))
+ }
+ }
+ // field NeedUserDefinedVariables []string
+ {
+ size += int64(cap(cached.NeedUserDefinedVariables)) * int64(16)
+ for _, elem := range cached.NeedUserDefinedVariables {
+ size += int64(len(elem))
+ }
+ }
+ return size
+}
+func (cached *CallProc) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(56)
+ }
+ // field Name vitess.io/vitess/go/vt/sqlparser.TableName
+ size += cached.Name.CachedSize(false)
+ // field Params vitess.io/vitess/go/vt/sqlparser.Exprs
+ {
+ size += int64(cap(cached.Params)) * int64(16)
+ for _, elem := range cached.Params {
+ if cc, ok := elem.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ }
+ }
+ return size
+}
+func (cached *CaseExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(56)
+ }
+ // field Expr vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Expr.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field Whens []*vitess.io/vitess/go/vt/sqlparser.When
+ {
+ size += int64(cap(cached.Whens)) * int64(8)
+ for _, elem := range cached.Whens {
+ size += elem.CachedSize(true)
+ }
+ }
+ // field Else vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Else.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *ChangeColumn) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(32)
+ }
+ // field OldColumn *vitess.io/vitess/go/vt/sqlparser.ColName
+ size += cached.OldColumn.CachedSize(true)
+ // field NewColDefinition *vitess.io/vitess/go/vt/sqlparser.ColumnDefinition
+ size += cached.NewColDefinition.CachedSize(true)
+ // field First *vitess.io/vitess/go/vt/sqlparser.ColName
+ size += cached.First.CachedSize(true)
+ // field After *vitess.io/vitess/go/vt/sqlparser.ColName
+ size += cached.After.CachedSize(true)
+ return size
+}
+func (cached *CheckConstraintDefinition) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(17)
+ }
+ // field Expr vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Expr.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *ColIdent) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(40)
+ }
+ // field val string
+ size += int64(len(cached.val))
+ // field lowered string
+ size += int64(len(cached.lowered))
+ return size
+}
+func (cached *ColName) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(88)
+ }
+ // field Name vitess.io/vitess/go/vt/sqlparser.ColIdent
+ size += cached.Name.CachedSize(false)
+ // field Qualifier vitess.io/vitess/go/vt/sqlparser.TableName
+ size += cached.Qualifier.CachedSize(false)
+ return size
+}
+func (cached *CollateAndCharset) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(24)
+ }
+ // field Value string
+ size += int64(len(cached.Value))
+ return size
+}
+func (cached *CollateExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(32)
+ }
+ // field Expr vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Expr.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field Charset string
+ size += int64(len(cached.Charset))
+ return size
+}
+func (cached *ColumnDefinition) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(144)
+ }
+ // field Name vitess.io/vitess/go/vt/sqlparser.ColIdent
+ size += cached.Name.CachedSize(false)
+ // field Type vitess.io/vitess/go/vt/sqlparser.ColumnType
+ size += cached.Type.CachedSize(false)
+ return size
+}
+func (cached *ColumnType) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(104)
+ }
+ // field Type string
+ size += int64(len(cached.Type))
+ // field Options *vitess.io/vitess/go/vt/sqlparser.ColumnTypeOptions
+ size += cached.Options.CachedSize(true)
+ // field Length *vitess.io/vitess/go/vt/sqlparser.Literal
+ size += cached.Length.CachedSize(true)
+ // field Scale *vitess.io/vitess/go/vt/sqlparser.Literal
+ size += cached.Scale.CachedSize(true)
+ // field Charset string
+ size += int64(len(cached.Charset))
+ // field Collate string
+ size += int64(len(cached.Collate))
+ // field EnumValues []string
+ {
+ size += int64(cap(cached.EnumValues)) * int64(16)
+ for _, elem := range cached.EnumValues {
+ size += int64(len(elem))
+ }
+ }
+ return size
+}
+func (cached *ColumnTypeOptions) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(64)
+ }
+ // field Null *bool
+ size += int64(1)
+ // field Default vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Default.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field OnUpdate vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.OnUpdate.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field Comment *vitess.io/vitess/go/vt/sqlparser.Literal
+ size += cached.Comment.CachedSize(true)
+ return size
+}
+func (cached *ComparisonExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(56)
+ }
+ // field Left vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Left.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field Right vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Right.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field Escape vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Escape.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *ConstraintDefinition) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(56)
+ }
+ // field Name vitess.io/vitess/go/vt/sqlparser.ColIdent
+ size += cached.Name.CachedSize(false)
+ // field Details vitess.io/vitess/go/vt/sqlparser.ConstraintInfo
+ if cc, ok := cached.Details.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *ConvertExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(24)
+ }
+ // field Expr vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Expr.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field Type *vitess.io/vitess/go/vt/sqlparser.ConvertType
+ size += cached.Type.CachedSize(true)
+ return size
+}
+func (cached *ConvertType) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(56)
+ }
+ // field Type string
+ size += int64(len(cached.Type))
+ // field Length *vitess.io/vitess/go/vt/sqlparser.Literal
+ size += cached.Length.CachedSize(true)
+ // field Scale *vitess.io/vitess/go/vt/sqlparser.Literal
+ size += cached.Scale.CachedSize(true)
+ // field Charset string
+ size += int64(len(cached.Charset))
+ return size
+}
+func (cached *ConvertUsingExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(32)
+ }
+ // field Expr vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Expr.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field Type string
+ size += int64(len(cached.Type))
+ return size
+}
+func (cached *CreateDatabase) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(73)
+ }
+ // field Comments vitess.io/vitess/go/vt/sqlparser.Comments
+ {
+ size += int64(cap(cached.Comments)) * int64(16)
+ for _, elem := range cached.Comments {
+ size += int64(len(elem))
+ }
+ }
+ // field DBName vitess.io/vitess/go/vt/sqlparser.TableIdent
+ size += cached.DBName.CachedSize(false)
+ // field CreateOptions []vitess.io/vitess/go/vt/sqlparser.CollateAndCharset
+ {
+ size += int64(cap(cached.CreateOptions)) * int64(24)
+ for _, elem := range cached.CreateOptions {
+ size += elem.CachedSize(false)
+ }
+ }
+ return size
+}
+func (cached *CreateTable) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(65)
+ }
+ // field Table vitess.io/vitess/go/vt/sqlparser.TableName
+ size += cached.Table.CachedSize(false)
+ // field TableSpec *vitess.io/vitess/go/vt/sqlparser.TableSpec
+ size += cached.TableSpec.CachedSize(true)
+ // field OptLike *vitess.io/vitess/go/vt/sqlparser.OptLike
+ size += cached.OptLike.CachedSize(true)
+ return size
+}
+func (cached *CreateView) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(137)
+ }
+ // field ViewName vitess.io/vitess/go/vt/sqlparser.TableName
+ size += cached.ViewName.CachedSize(false)
+ // field Algorithm string
+ size += int64(len(cached.Algorithm))
+ // field Definer string
+ size += int64(len(cached.Definer))
+ // field Security string
+ size += int64(len(cached.Security))
+ // field Columns vitess.io/vitess/go/vt/sqlparser.Columns
+ {
+ size += int64(cap(cached.Columns)) * int64(40)
+ for _, elem := range cached.Columns {
+ size += elem.CachedSize(false)
+ }
+ }
+ // field Select vitess.io/vitess/go/vt/sqlparser.SelectStatement
+ if cc, ok := cached.Select.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field CheckOption string
+ size += int64(len(cached.CheckOption))
+ return size
+}
+func (cached *CurTimeFuncExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(56)
+ }
+ // field Name vitess.io/vitess/go/vt/sqlparser.ColIdent
+ size += cached.Name.CachedSize(false)
+ // field Fsp vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Fsp.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *Default) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(16)
+ }
+ // field ColName string
+ size += int64(len(cached.ColName))
+ return size
+}
+func (cached *Delete) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(144)
+ }
+ // field Comments vitess.io/vitess/go/vt/sqlparser.Comments
+ {
+ size += int64(cap(cached.Comments)) * int64(16)
+ for _, elem := range cached.Comments {
+ size += int64(len(elem))
+ }
+ }
+ // field Targets vitess.io/vitess/go/vt/sqlparser.TableNames
+ {
+ size += int64(cap(cached.Targets)) * int64(32)
+ for _, elem := range cached.Targets {
+ size += elem.CachedSize(false)
+ }
+ }
+ // field TableExprs vitess.io/vitess/go/vt/sqlparser.TableExprs
+ {
+ size += int64(cap(cached.TableExprs)) * int64(16)
+ for _, elem := range cached.TableExprs {
+ if cc, ok := elem.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ }
+ }
+ // field Partitions vitess.io/vitess/go/vt/sqlparser.Partitions
+ {
+ size += int64(cap(cached.Partitions)) * int64(40)
+ for _, elem := range cached.Partitions {
+ size += elem.CachedSize(false)
+ }
+ }
+ // field Where *vitess.io/vitess/go/vt/sqlparser.Where
+ size += cached.Where.CachedSize(true)
+ // field OrderBy vitess.io/vitess/go/vt/sqlparser.OrderBy
+ {
+ size += int64(cap(cached.OrderBy)) * int64(8)
+ for _, elem := range cached.OrderBy {
+ size += elem.CachedSize(true)
+ }
+ }
+ // field Limit *vitess.io/vitess/go/vt/sqlparser.Limit
+ size += cached.Limit.CachedSize(true)
+ return size
+}
+func (cached *DerivedTable) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(16)
+ }
+ // field Select vitess.io/vitess/go/vt/sqlparser.SelectStatement
+ if cc, ok := cached.Select.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *DropColumn) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(8)
+ }
+ // field Name *vitess.io/vitess/go/vt/sqlparser.ColName
+ size += cached.Name.CachedSize(true)
+ return size
+}
+func (cached *DropDatabase) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(41)
+ }
+ // field Comments vitess.io/vitess/go/vt/sqlparser.Comments
+ {
+ size += int64(cap(cached.Comments)) * int64(16)
+ for _, elem := range cached.Comments {
+ size += int64(len(elem))
+ }
+ }
+ // field DBName vitess.io/vitess/go/vt/sqlparser.TableIdent
+ size += cached.DBName.CachedSize(false)
+ return size
+}
+func (cached *DropKey) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(48)
+ }
+ // field Name vitess.io/vitess/go/vt/sqlparser.ColIdent
+ size += cached.Name.CachedSize(false)
+ return size
+}
+func (cached *DropTable) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(33)
+ }
+ // field FromTables vitess.io/vitess/go/vt/sqlparser.TableNames
+ {
+ size += int64(cap(cached.FromTables)) * int64(32)
+ for _, elem := range cached.FromTables {
+ size += elem.CachedSize(false)
+ }
+ }
+ return size
+}
+func (cached *DropView) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(25)
+ }
+ // field FromTables vitess.io/vitess/go/vt/sqlparser.TableNames
+ {
+ size += int64(cap(cached.FromTables)) * int64(32)
+ for _, elem := range cached.FromTables {
+ size += elem.CachedSize(false)
+ }
+ }
+ return size
+}
+func (cached *ExistsExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(8)
+ }
+ // field Subquery *vitess.io/vitess/go/vt/sqlparser.Subquery
+ size += cached.Subquery.CachedSize(true)
+ return size
+}
+func (cached *ExplainStmt) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(24)
+ }
+ // field Statement vitess.io/vitess/go/vt/sqlparser.Statement
+ if cc, ok := cached.Statement.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *ExplainTab) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(48)
+ }
+ // field Table vitess.io/vitess/go/vt/sqlparser.TableName
+ size += cached.Table.CachedSize(false)
+ // field Wild string
+ size += int64(len(cached.Wild))
+ return size
+}
+func (cached *Flush) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(58)
+ }
+ // field FlushOptions []string
+ {
+ size += int64(cap(cached.FlushOptions)) * int64(16)
+ for _, elem := range cached.FlushOptions {
+ size += int64(len(elem))
+ }
+ }
+ // field TableNames vitess.io/vitess/go/vt/sqlparser.TableNames
+ {
+ size += int64(cap(cached.TableNames)) * int64(32)
+ for _, elem := range cached.TableNames {
+ size += elem.CachedSize(false)
+ }
+ }
+ return size
+}
+func (cached *ForeignKeyDefinition) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(96)
+ }
+ // field Source vitess.io/vitess/go/vt/sqlparser.Columns
+ {
+ size += int64(cap(cached.Source)) * int64(40)
+ for _, elem := range cached.Source {
+ size += elem.CachedSize(false)
+ }
+ }
+ // field ReferencedTable vitess.io/vitess/go/vt/sqlparser.TableName
+ size += cached.ReferencedTable.CachedSize(false)
+ // field ReferencedColumns vitess.io/vitess/go/vt/sqlparser.Columns
+ {
+ size += int64(cap(cached.ReferencedColumns)) * int64(40)
+ for _, elem := range cached.ReferencedColumns {
+ size += elem.CachedSize(false)
+ }
+ }
+ return size
+}
+func (cached *FuncExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(88)
+ }
+ // field Qualifier vitess.io/vitess/go/vt/sqlparser.TableIdent
+ size += cached.Qualifier.CachedSize(false)
+ // field Name vitess.io/vitess/go/vt/sqlparser.ColIdent
+ size += cached.Name.CachedSize(false)
+ // field Exprs vitess.io/vitess/go/vt/sqlparser.SelectExprs
+ {
+ size += int64(cap(cached.Exprs)) * int64(16)
+ for _, elem := range cached.Exprs {
+ if cc, ok := elem.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ }
+ }
+ return size
+}
+func (cached *GroupConcatExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(80)
+ }
+ // field Exprs vitess.io/vitess/go/vt/sqlparser.SelectExprs
+ {
+ size += int64(cap(cached.Exprs)) * int64(16)
+ for _, elem := range cached.Exprs {
+ if cc, ok := elem.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ }
+ }
+ // field OrderBy vitess.io/vitess/go/vt/sqlparser.OrderBy
+ {
+ size += int64(cap(cached.OrderBy)) * int64(8)
+ for _, elem := range cached.OrderBy {
+ size += elem.CachedSize(true)
+ }
+ }
+ // field Separator string
+ size += int64(len(cached.Separator))
+ // field Limit *vitess.io/vitess/go/vt/sqlparser.Limit
+ size += cached.Limit.CachedSize(true)
+ return size
+}
+func (cached *IndexColumn) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(49)
+ }
+ // field Column vitess.io/vitess/go/vt/sqlparser.ColIdent
+ size += cached.Column.CachedSize(false)
+ // field Length *vitess.io/vitess/go/vt/sqlparser.Literal
+ size += cached.Length.CachedSize(true)
+ return size
+}
+func (cached *IndexDefinition) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(56)
+ }
+ // field Info *vitess.io/vitess/go/vt/sqlparser.IndexInfo
+ size += cached.Info.CachedSize(true)
+ // field Columns []*vitess.io/vitess/go/vt/sqlparser.IndexColumn
+ {
+ size += int64(cap(cached.Columns)) * int64(8)
+ for _, elem := range cached.Columns {
+ size += elem.CachedSize(true)
+ }
+ }
+ // field Options []*vitess.io/vitess/go/vt/sqlparser.IndexOption
+ {
+ size += int64(cap(cached.Options)) * int64(8)
+ for _, elem := range cached.Options {
+ size += elem.CachedSize(true)
+ }
+ }
+ return size
+}
+func (cached *IndexHints) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(32)
+ }
+ // field Indexes []vitess.io/vitess/go/vt/sqlparser.ColIdent
+ {
+ size += int64(cap(cached.Indexes)) * int64(40)
+ for _, elem := range cached.Indexes {
+ size += elem.CachedSize(false)
+ }
+ }
+ return size
+}
+func (cached *IndexInfo) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(100)
+ }
+ // field Type string
+ size += int64(len(cached.Type))
+ // field Name vitess.io/vitess/go/vt/sqlparser.ColIdent
+ size += cached.Name.CachedSize(false)
+ // field ConstraintName vitess.io/vitess/go/vt/sqlparser.ColIdent
+ size += cached.ConstraintName.CachedSize(false)
+ return size
+}
+func (cached *IndexOption) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(40)
+ }
+ // field Name string
+ size += int64(len(cached.Name))
+ // field Value *vitess.io/vitess/go/vt/sqlparser.Literal
+ size += cached.Value.CachedSize(true)
+ // field String string
+ size += int64(len(cached.String))
+ return size
+}
+func (cached *Insert) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(160)
+ }
+ // field Comments vitess.io/vitess/go/vt/sqlparser.Comments
+ {
+ size += int64(cap(cached.Comments)) * int64(16)
+ for _, elem := range cached.Comments {
+ size += int64(len(elem))
+ }
+ }
+ // field Table vitess.io/vitess/go/vt/sqlparser.TableName
+ size += cached.Table.CachedSize(false)
+ // field Partitions vitess.io/vitess/go/vt/sqlparser.Partitions
+ {
+ size += int64(cap(cached.Partitions)) * int64(40)
+ for _, elem := range cached.Partitions {
+ size += elem.CachedSize(false)
+ }
+ }
+ // field Columns vitess.io/vitess/go/vt/sqlparser.Columns
+ {
+ size += int64(cap(cached.Columns)) * int64(40)
+ for _, elem := range cached.Columns {
+ size += elem.CachedSize(false)
+ }
+ }
+ // field Rows vitess.io/vitess/go/vt/sqlparser.InsertRows
+ if cc, ok := cached.Rows.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field OnDup vitess.io/vitess/go/vt/sqlparser.OnDup
+ {
+ size += int64(cap(cached.OnDup)) * int64(8)
+ for _, elem := range cached.OnDup {
+ size += elem.CachedSize(true)
+ }
+ }
+ return size
+}
+func (cached *IntervalExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(32)
+ }
+ // field Expr vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Expr.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field Unit string
+ size += int64(len(cached.Unit))
+ return size
+}
+func (cached *IsExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(24)
+ }
+ // field Expr vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Expr.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *JoinCondition) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(40)
+ }
+ // field On vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.On.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field Using vitess.io/vitess/go/vt/sqlparser.Columns
+ {
+ size += int64(cap(cached.Using)) * int64(40)
+ for _, elem := range cached.Using {
+ size += elem.CachedSize(false)
+ }
+ }
+ return size
+}
+func (cached *JoinTableExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(80)
+ }
+ // field LeftExpr vitess.io/vitess/go/vt/sqlparser.TableExpr
+ if cc, ok := cached.LeftExpr.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field RightExpr vitess.io/vitess/go/vt/sqlparser.TableExpr
+ if cc, ok := cached.RightExpr.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field Condition vitess.io/vitess/go/vt/sqlparser.JoinCondition
+ size += cached.Condition.CachedSize(false)
+ return size
+}
+func (cached *KeyState) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(1)
+ }
+ return size
+}
+func (cached *Limit) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(32)
+ }
+ // field Offset vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Offset.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field Rowcount vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Rowcount.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *Literal) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(24)
+ }
+ // field Val string
+ size += int64(len(cached.Val))
+ return size
+}
+func (cached *LockOption) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(1)
+ }
+ return size
+}
+func (cached *LockTables) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(24)
+ }
+ // field Tables vitess.io/vitess/go/vt/sqlparser.TableAndLockTypes
+ {
+ size += int64(cap(cached.Tables)) * int64(8)
+ for _, elem := range cached.Tables {
+ size += elem.CachedSize(true)
+ }
+ }
+ return size
+}
+func (cached *MatchExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(41)
+ }
+ // field Columns vitess.io/vitess/go/vt/sqlparser.SelectExprs
+ {
+ size += int64(cap(cached.Columns)) * int64(16)
+ for _, elem := range cached.Columns {
+ if cc, ok := elem.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ }
+ }
+ // field Expr vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Expr.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *ModifyColumn) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(24)
+ }
+ // field NewColDefinition *vitess.io/vitess/go/vt/sqlparser.ColumnDefinition
+ size += cached.NewColDefinition.CachedSize(true)
+ // field First *vitess.io/vitess/go/vt/sqlparser.ColName
+ size += cached.First.CachedSize(true)
+ // field After *vitess.io/vitess/go/vt/sqlparser.ColName
+ size += cached.After.CachedSize(true)
+ return size
+}
+func (cached *Nextval) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(16)
+ }
+ // field Expr vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Expr.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *NotExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(16)
+ }
+ // field Expr vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Expr.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *OptLike) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(32)
+ }
+ // field LikeTable vitess.io/vitess/go/vt/sqlparser.TableName
+ size += cached.LikeTable.CachedSize(false)
+ return size
+}
+func (cached *OrExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(32)
+ }
+ // field Left vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Left.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field Right vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Right.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *Order) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(17)
+ }
+ // field Expr vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Expr.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *OrderByOption) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(24)
+ }
+ // field Cols vitess.io/vitess/go/vt/sqlparser.Columns
+ {
+ size += int64(cap(cached.Cols)) * int64(40)
+ for _, elem := range cached.Cols {
+ size += elem.CachedSize(false)
+ }
+ }
+ return size
+}
+func (cached *ParenSelect) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(16)
+ }
+ // field Select vitess.io/vitess/go/vt/sqlparser.SelectStatement
+ if cc, ok := cached.Select.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *ParenTableExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(24)
+ }
+ // field Exprs vitess.io/vitess/go/vt/sqlparser.TableExprs
+ {
+ size += int64(cap(cached.Exprs)) * int64(16)
+ for _, elem := range cached.Exprs {
+ if cc, ok := elem.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ }
+ }
+ return size
+}
+func (cached *ParsedQuery) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(40)
+ }
+ // field Query string
+ size += int64(len(cached.Query))
+ // field bindLocations []vitess.io/vitess/go/vt/sqlparser.bindLocation
+ {
+ size += int64(cap(cached.bindLocations)) * int64(16)
+ }
+ return size
+}
+func (cached *PartitionDefinition) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(57)
+ }
+ // field Name vitess.io/vitess/go/vt/sqlparser.ColIdent
+ size += cached.Name.CachedSize(false)
+ // field Limit vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Limit.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *PartitionSpec) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(112)
+ }
+ // field Names vitess.io/vitess/go/vt/sqlparser.Partitions
+ {
+ size += int64(cap(cached.Names)) * int64(40)
+ for _, elem := range cached.Names {
+ size += elem.CachedSize(false)
+ }
+ }
+ // field Number *vitess.io/vitess/go/vt/sqlparser.Literal
+ size += cached.Number.CachedSize(true)
+ // field TableName vitess.io/vitess/go/vt/sqlparser.TableName
+ size += cached.TableName.CachedSize(false)
+ // field Definitions []*vitess.io/vitess/go/vt/sqlparser.PartitionDefinition
+ {
+ size += int64(cap(cached.Definitions)) * int64(8)
+ for _, elem := range cached.Definitions {
+ size += elem.CachedSize(true)
+ }
+ }
+ return size
+}
+func (cached *RangeCond) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(56)
+ }
+ // field Left vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Left.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field From vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.From.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field To vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.To.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *Release) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(40)
+ }
+ // field Name vitess.io/vitess/go/vt/sqlparser.ColIdent
+ size += cached.Name.CachedSize(false)
+ return size
+}
+func (cached *RenameIndex) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(80)
+ }
+ // field OldName vitess.io/vitess/go/vt/sqlparser.ColIdent
+ size += cached.OldName.CachedSize(false)
+ // field NewName vitess.io/vitess/go/vt/sqlparser.ColIdent
+ size += cached.NewName.CachedSize(false)
+ return size
+}
+func (cached *RenameTable) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(24)
+ }
+ // field TablePairs []*vitess.io/vitess/go/vt/sqlparser.RenameTablePair
+ {
+ size += int64(cap(cached.TablePairs)) * int64(8)
+ for _, elem := range cached.TablePairs {
+ size += elem.CachedSize(true)
+ }
+ }
+ return size
+}
+func (cached *RenameTableName) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(32)
+ }
+ // field Table vitess.io/vitess/go/vt/sqlparser.TableName
+ size += cached.Table.CachedSize(false)
+ return size
+}
+func (cached *RenameTablePair) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(64)
+ }
+ // field FromTable vitess.io/vitess/go/vt/sqlparser.TableName
+ size += cached.FromTable.CachedSize(false)
+ // field ToTable vitess.io/vitess/go/vt/sqlparser.TableName
+ size += cached.ToTable.CachedSize(false)
+ return size
+}
+func (cached *RevertMigration) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(16)
+ }
+ // field UUID string
+ size += int64(len(cached.UUID))
+ return size
+}
+func (cached *SRollback) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(40)
+ }
+ // field Name vitess.io/vitess/go/vt/sqlparser.ColIdent
+ size += cached.Name.CachedSize(false)
+ return size
+}
+func (cached *Savepoint) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(40)
+ }
+ // field Name vitess.io/vitess/go/vt/sqlparser.ColIdent
+ size += cached.Name.CachedSize(false)
+ return size
+}
+func (cached *Select) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(176)
+ }
+ // field Cache *bool
+ size += int64(1)
+ // field Comments vitess.io/vitess/go/vt/sqlparser.Comments
+ {
+ size += int64(cap(cached.Comments)) * int64(16)
+ for _, elem := range cached.Comments {
+ size += int64(len(elem))
+ }
+ }
+ // field SelectExprs vitess.io/vitess/go/vt/sqlparser.SelectExprs
+ {
+ size += int64(cap(cached.SelectExprs)) * int64(16)
+ for _, elem := range cached.SelectExprs {
+ if cc, ok := elem.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ }
+ }
+ // field From vitess.io/vitess/go/vt/sqlparser.TableExprs
+ {
+ size += int64(cap(cached.From)) * int64(16)
+ for _, elem := range cached.From {
+ if cc, ok := elem.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ }
+ }
+ // field Where *vitess.io/vitess/go/vt/sqlparser.Where
+ size += cached.Where.CachedSize(true)
+ // field GroupBy vitess.io/vitess/go/vt/sqlparser.GroupBy
+ {
+ size += int64(cap(cached.GroupBy)) * int64(16)
+ for _, elem := range cached.GroupBy {
+ if cc, ok := elem.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ }
+ }
+ // field Having *vitess.io/vitess/go/vt/sqlparser.Where
+ size += cached.Having.CachedSize(true)
+ // field OrderBy vitess.io/vitess/go/vt/sqlparser.OrderBy
+ {
+ size += int64(cap(cached.OrderBy)) * int64(8)
+ for _, elem := range cached.OrderBy {
+ size += elem.CachedSize(true)
+ }
+ }
+ // field Limit *vitess.io/vitess/go/vt/sqlparser.Limit
+ size += cached.Limit.CachedSize(true)
+ // field Into *vitess.io/vitess/go/vt/sqlparser.SelectInto
+ size += cached.Into.CachedSize(true)
+ return size
+}
+func (cached *SelectInto) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(104)
+ }
+ // field FileName string
+ size += int64(len(cached.FileName))
+ // field Charset string
+ size += int64(len(cached.Charset))
+ // field FormatOption string
+ size += int64(len(cached.FormatOption))
+ // field ExportOption string
+ size += int64(len(cached.ExportOption))
+ // field Manifest string
+ size += int64(len(cached.Manifest))
+ // field Overwrite string
+ size += int64(len(cached.Overwrite))
+ return size
+}
+func (cached *Set) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(48)
+ }
+ // field Comments vitess.io/vitess/go/vt/sqlparser.Comments
+ {
+ size += int64(cap(cached.Comments)) * int64(16)
+ for _, elem := range cached.Comments {
+ size += int64(len(elem))
+ }
+ }
+ // field Exprs vitess.io/vitess/go/vt/sqlparser.SetExprs
+ {
+ size += int64(cap(cached.Exprs)) * int64(8)
+ for _, elem := range cached.Exprs {
+ size += elem.CachedSize(true)
+ }
+ }
+ return size
+}
+func (cached *SetExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(64)
+ }
+ // field Name vitess.io/vitess/go/vt/sqlparser.ColIdent
+ size += cached.Name.CachedSize(false)
+ // field Expr vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Expr.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *SetTransaction) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(72)
+ }
+ // field SQLNode vitess.io/vitess/go/vt/sqlparser.SQLNode
+ if cc, ok := cached.SQLNode.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field Comments vitess.io/vitess/go/vt/sqlparser.Comments
+ {
+ size += int64(cap(cached.Comments)) * int64(16)
+ for _, elem := range cached.Comments {
+ size += int64(len(elem))
+ }
+ }
+ // field Characteristics []vitess.io/vitess/go/vt/sqlparser.Characteristic
+ {
+ size += int64(cap(cached.Characteristics)) * int64(16)
+ for _, elem := range cached.Characteristics {
+ if cc, ok := elem.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ }
+ }
+ return size
+}
+func (cached *Show) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(16)
+ }
+ // field Internal vitess.io/vitess/go/vt/sqlparser.ShowInternal
+ if cc, ok := cached.Internal.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *ShowBasic) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(64)
+ }
+ // field Tbl vitess.io/vitess/go/vt/sqlparser.TableName
+ size += cached.Tbl.CachedSize(false)
+ // field DbName vitess.io/vitess/go/vt/sqlparser.TableIdent
+ size += cached.DbName.CachedSize(false)
+ // field Filter *vitess.io/vitess/go/vt/sqlparser.ShowFilter
+ size += cached.Filter.CachedSize(true)
+ return size
+}
+func (cached *ShowCreate) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(40)
+ }
+ // field Op vitess.io/vitess/go/vt/sqlparser.TableName
+ size += cached.Op.CachedSize(false)
+ return size
+}
+func (cached *ShowFilter) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(32)
+ }
+ // field Like string
+ size += int64(len(cached.Like))
+ // field Filter vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Filter.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *ShowLegacy) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(128)
+ }
+ // field Extended string
+ size += int64(len(cached.Extended))
+ // field Type string
+ size += int64(len(cached.Type))
+ // field OnTable vitess.io/vitess/go/vt/sqlparser.TableName
+ size += cached.OnTable.CachedSize(false)
+ // field Table vitess.io/vitess/go/vt/sqlparser.TableName
+ size += cached.Table.CachedSize(false)
+ // field ShowTablesOpt *vitess.io/vitess/go/vt/sqlparser.ShowTablesOpt
+ size += cached.ShowTablesOpt.CachedSize(true)
+ // field ShowCollationFilterOpt vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.ShowCollationFilterOpt.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *ShowTablesOpt) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(40)
+ }
+ // field Full string
+ size += int64(len(cached.Full))
+ // field DbName string
+ size += int64(len(cached.DbName))
+ // field Filter *vitess.io/vitess/go/vt/sqlparser.ShowFilter
+ size += cached.Filter.CachedSize(true)
+ return size
+}
+func (cached *StarExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(32)
+ }
+ // field TableName vitess.io/vitess/go/vt/sqlparser.TableName
+ size += cached.TableName.CachedSize(false)
+ return size
+}
+func (cached *Stream) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(72)
+ }
+ // field Comments vitess.io/vitess/go/vt/sqlparser.Comments
+ {
+ size += int64(cap(cached.Comments)) * int64(16)
+ for _, elem := range cached.Comments {
+ size += int64(len(elem))
+ }
+ }
+ // field SelectExpr vitess.io/vitess/go/vt/sqlparser.SelectExpr
+ if cc, ok := cached.SelectExpr.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field Table vitess.io/vitess/go/vt/sqlparser.TableName
+ size += cached.Table.CachedSize(false)
+ return size
+}
+func (cached *Subquery) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(16)
+ }
+ // field Select vitess.io/vitess/go/vt/sqlparser.SelectStatement
+ if cc, ok := cached.Select.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *SubstrExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(48)
+ }
+ // field Name *vitess.io/vitess/go/vt/sqlparser.ColName
+ size += cached.Name.CachedSize(true)
+ // field StrVal *vitess.io/vitess/go/vt/sqlparser.Literal
+ size += cached.StrVal.CachedSize(true)
+ // field From vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.From.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field To vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.To.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *TableAndLockType) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(17)
+ }
+ // field Table vitess.io/vitess/go/vt/sqlparser.TableExpr
+ if cc, ok := cached.Table.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *TableIdent) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(16)
+ }
+ // field v string
+ size += int64(len(cached.v))
+ return size
+}
+func (cached *TableName) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(32)
+ }
+ // field Name vitess.io/vitess/go/vt/sqlparser.TableIdent
+ size += cached.Name.CachedSize(false)
+ // field Qualifier vitess.io/vitess/go/vt/sqlparser.TableIdent
+ size += cached.Qualifier.CachedSize(false)
+ return size
+}
+func (cached *TableOption) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(64)
+ }
+ // field Name string
+ size += int64(len(cached.Name))
+ // field Value *vitess.io/vitess/go/vt/sqlparser.Literal
+ size += cached.Value.CachedSize(true)
+ // field String string
+ size += int64(len(cached.String))
+ // field Tables vitess.io/vitess/go/vt/sqlparser.TableNames
+ {
+ size += int64(cap(cached.Tables)) * int64(32)
+ for _, elem := range cached.Tables {
+ size += elem.CachedSize(false)
+ }
+ }
+ return size
+}
+func (cached *TableSpec) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(96)
+ }
+ // field Columns []*vitess.io/vitess/go/vt/sqlparser.ColumnDefinition
+ {
+ size += int64(cap(cached.Columns)) * int64(8)
+ for _, elem := range cached.Columns {
+ size += elem.CachedSize(true)
+ }
+ }
+ // field Indexes []*vitess.io/vitess/go/vt/sqlparser.IndexDefinition
+ {
+ size += int64(cap(cached.Indexes)) * int64(8)
+ for _, elem := range cached.Indexes {
+ size += elem.CachedSize(true)
+ }
+ }
+ // field Constraints []*vitess.io/vitess/go/vt/sqlparser.ConstraintDefinition
+ {
+ size += int64(cap(cached.Constraints)) * int64(8)
+ for _, elem := range cached.Constraints {
+ size += elem.CachedSize(true)
+ }
+ }
+ // field Options vitess.io/vitess/go/vt/sqlparser.TableOptions
+ {
+ size += int64(cap(cached.Options)) * int64(8)
+ for _, elem := range cached.Options {
+ size += elem.CachedSize(true)
+ }
+ }
+ return size
+}
+func (cached *TablespaceOperation) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(1)
+ }
+ return size
+}
+func (cached *TimestampFuncExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(64)
+ }
+ // field Name string
+ size += int64(len(cached.Name))
+ // field Expr1 vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Expr1.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field Expr2 vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Expr2.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field Unit string
+ size += int64(len(cached.Unit))
+ return size
+}
+func (cached *TruncateTable) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(32)
+ }
+ // field Table vitess.io/vitess/go/vt/sqlparser.TableName
+ size += cached.Table.CachedSize(false)
+ return size
+}
+func (cached *UnaryExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(24)
+ }
+ // field Expr vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Expr.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *Union) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(73)
+ }
+ // field FirstStatement vitess.io/vitess/go/vt/sqlparser.SelectStatement
+ if cc, ok := cached.FirstStatement.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field UnionSelects []*vitess.io/vitess/go/vt/sqlparser.UnionSelect
+ {
+ size += int64(cap(cached.UnionSelects)) * int64(8)
+ for _, elem := range cached.UnionSelects {
+ size += elem.CachedSize(true)
+ }
+ }
+ // field OrderBy vitess.io/vitess/go/vt/sqlparser.OrderBy
+ {
+ size += int64(cap(cached.OrderBy)) * int64(8)
+ for _, elem := range cached.OrderBy {
+ size += elem.CachedSize(true)
+ }
+ }
+ // field Limit *vitess.io/vitess/go/vt/sqlparser.Limit
+ size += cached.Limit.CachedSize(true)
+ return size
+}
+func (cached *UnionSelect) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(24)
+ }
+ // field Statement vitess.io/vitess/go/vt/sqlparser.SelectStatement
+ if cc, ok := cached.Statement.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *Update) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(120)
+ }
+ // field Comments vitess.io/vitess/go/vt/sqlparser.Comments
+ {
+ size += int64(cap(cached.Comments)) * int64(16)
+ for _, elem := range cached.Comments {
+ size += int64(len(elem))
+ }
+ }
+ // field TableExprs vitess.io/vitess/go/vt/sqlparser.TableExprs
+ {
+ size += int64(cap(cached.TableExprs)) * int64(16)
+ for _, elem := range cached.TableExprs {
+ if cc, ok := elem.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ }
+ }
+ // field Exprs vitess.io/vitess/go/vt/sqlparser.UpdateExprs
+ {
+ size += int64(cap(cached.Exprs)) * int64(8)
+ for _, elem := range cached.Exprs {
+ size += elem.CachedSize(true)
+ }
+ }
+ // field Where *vitess.io/vitess/go/vt/sqlparser.Where
+ size += cached.Where.CachedSize(true)
+ // field OrderBy vitess.io/vitess/go/vt/sqlparser.OrderBy
+ {
+ size += int64(cap(cached.OrderBy)) * int64(8)
+ for _, elem := range cached.OrderBy {
+ size += elem.CachedSize(true)
+ }
+ }
+ // field Limit *vitess.io/vitess/go/vt/sqlparser.Limit
+ size += cached.Limit.CachedSize(true)
+ return size
+}
+func (cached *UpdateExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(24)
+ }
+ // field Name *vitess.io/vitess/go/vt/sqlparser.ColName
+ size += cached.Name.CachedSize(true)
+ // field Expr vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Expr.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *Use) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(16)
+ }
+ // field DBName vitess.io/vitess/go/vt/sqlparser.TableIdent
+ size += cached.DBName.CachedSize(false)
+ return size
+}
+func (cached *VStream) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(88)
+ }
+ // field Comments vitess.io/vitess/go/vt/sqlparser.Comments
+ {
+ size += int64(cap(cached.Comments)) * int64(16)
+ for _, elem := range cached.Comments {
+ size += int64(len(elem))
+ }
+ }
+ // field SelectExpr vitess.io/vitess/go/vt/sqlparser.SelectExpr
+ if cc, ok := cached.SelectExpr.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field Table vitess.io/vitess/go/vt/sqlparser.TableName
+ size += cached.Table.CachedSize(false)
+ // field Where *vitess.io/vitess/go/vt/sqlparser.Where
+ size += cached.Where.CachedSize(true)
+ // field Limit *vitess.io/vitess/go/vt/sqlparser.Limit
+ size += cached.Limit.CachedSize(true)
+ return size
+}
+func (cached *Validation) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(1)
+ }
+ return size
+}
+func (cached *ValuesFuncExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(8)
+ }
+ // field Name *vitess.io/vitess/go/vt/sqlparser.ColName
+ size += cached.Name.CachedSize(true)
+ return size
+}
+func (cached *VindexParam) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(56)
+ }
+ // field Key vitess.io/vitess/go/vt/sqlparser.ColIdent
+ size += cached.Key.CachedSize(false)
+ // field Val string
+ size += int64(len(cached.Val))
+ return size
+}
+func (cached *VindexSpec) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(104)
+ }
+ // field Name vitess.io/vitess/go/vt/sqlparser.ColIdent
+ size += cached.Name.CachedSize(false)
+ // field Type vitess.io/vitess/go/vt/sqlparser.ColIdent
+ size += cached.Type.CachedSize(false)
+ // field Params []vitess.io/vitess/go/vt/sqlparser.VindexParam
+ {
+ size += int64(cap(cached.Params)) * int64(56)
+ for _, elem := range cached.Params {
+ size += elem.CachedSize(false)
+ }
+ }
+ return size
+}
+func (cached *When) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(32)
+ }
+ // field Cond vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Cond.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field Val vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Val.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *Where) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(24)
+ }
+ // field Expr vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Expr.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
+func (cached *XorExpr) CachedSize(alloc bool) int64 {
+ if cached == nil {
+ return int64(0)
+ }
+ size := int64(0)
+ if alloc {
+ size += int64(32)
+ }
+ // field Left vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Left.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ // field Right vitess.io/vitess/go/vt/sqlparser.Expr
+ if cc, ok := cached.Right.(cachedObject); ok {
+ size += cc.CachedSize(true)
+ }
+ return size
+}
diff --git a/go/vt/sqlparser/comments.go b/go/vt/sqlparser/comments.go
index 1b5d91d297b..94ad9936085 100644
--- a/go/vt/sqlparser/comments.go
+++ b/go/vt/sqlparser/comments.go
@@ -181,6 +181,9 @@ func ExtractMysqlComment(sql string) (string, string) {
if endOfVersionIndex < 0 {
return "", ""
}
+ if endOfVersionIndex < 5 {
+ endOfVersionIndex = 0
+ }
version := sql[0:endOfVersionIndex]
innerSQL := strings.TrimFunc(sql[endOfVersionIndex:], unicode.IsSpace)
diff --git a/go/vt/sqlparser/constants.go b/go/vt/sqlparser/constants.go
index bbea16d83df..152e728df75 100644
--- a/go/vt/sqlparser/constants.go
+++ b/go/vt/sqlparser/constants.go
@@ -16,8 +16,10 @@ limitations under the License.
package sqlparser
+// String constants to be used in ast.
const (
// Select.Distinct
+ AllStr = "all "
DistinctStr = "distinct "
StraightJoinHint = "straight_join "
SQLCalcFoundRowsStr = "sql_calc_found_rows "
@@ -209,16 +211,33 @@ const (
LowPriorityWriteStr = "low_priority write"
// ShowCommand Types
- CharsetStr = " charset"
- CollationStr = " collation"
- DatabaseStr = " databases"
- FunctionStr = " function status"
- PrivilegeStr = " privileges"
- ProcedureStr = " procedure status"
- StatusGlobalStr = " global status"
- StatusSessionStr = " status"
- VariableGlobalStr = " global variables"
- VariableSessionStr = " variables"
+ CharsetStr = " charset"
+ CollationStr = " collation"
+ ColumnStr = " columns"
+ CreateDbStr = " create database"
+ CreateEStr = " create event"
+ CreateFStr = " create function"
+ CreateProcStr = " create procedure"
+ CreateTblStr = " create table"
+ CreateTrStr = " create trigger"
+ CreateVStr = " create view"
+ DatabaseStr = " databases"
+ FunctionCStr = " function code"
+ FunctionStr = " function status"
+ IndexStr = " indexes"
+ OpenTableStr = " open tables"
+ PrivilegeStr = " privileges"
+ ProcedureCStr = " procedure code"
+ ProcedureStr = " procedure status"
+ StatusGlobalStr = " global status"
+ StatusSessionStr = " status"
+ TableStr = " tables"
+ TableStatusStr = " table status"
+ TriggerStr = " triggers"
+ VariableGlobalStr = " global variables"
+ VariableSessionStr = " variables"
+ KeyspaceStr = " keyspaces"
+ VitessMigrationsStr = " vitess_migrations"
// DropKeyType strings
PrimaryKeyTypeStr = "primary key"
@@ -259,7 +278,6 @@ const (
DropDDLAction
RenameDDLAction
TruncateDDLAction
- FlushDDLAction
CreateVindexDDLAction
DropVindexDDLAction
AddVschemaTableDDLAction
@@ -268,6 +286,7 @@ const (
DropColVindexDDLAction
AddSequenceDDLAction
AddAutoIncDDLAction
+ RevertDDLAction
)
// Constants for Enum Type - Scope
@@ -451,14 +470,31 @@ const (
UnknownCommandType ShowCommandType = iota
Charset
Collation
+ Column
+ CreateDb
+ CreateE
+ CreateF
+ CreateProc
+ CreateTbl
+ CreateTr
+ CreateV
Database
+ FunctionC
Function
+ Index
+ OpenTable
Privilege
+ ProcedureC
Procedure
StatusGlobal
StatusSession
+ Table
+ TableStatus
+ Trigger
VariableGlobal
VariableSession
+ VitessMigrations
+ Keyspace
)
// DropKeyType constants
@@ -475,3 +511,10 @@ const (
SharedType
ExclusiveType
)
+
+const (
+ RetryMigrationType AlterMigrationType = iota
+ CompleteMigrationType
+ CancelMigrationType
+ CancelAllMigrationType
+)
diff --git a/go/vt/sqlparser/expression_converter.go b/go/vt/sqlparser/expression_converter.go
index d1f7720d949..21297cca3ff 100644
--- a/go/vt/sqlparser/expression_converter.go
+++ b/go/vt/sqlparser/expression_converter.go
@@ -33,11 +33,11 @@ func Convert(e Expr) (evalengine.Expr, error) {
case *Literal:
switch node.Type {
case IntVal:
- return evalengine.NewLiteralIntFromBytes(node.Val)
+ return evalengine.NewLiteralIntFromBytes(node.Bytes())
case FloatVal:
- return evalengine.NewLiteralFloat(node.Val)
+ return evalengine.NewLiteralFloat(node.Bytes())
case StrVal:
- return evalengine.NewLiteralString(node.Val), nil
+ return evalengine.NewLiteralString(node.Bytes()), nil
}
case BoolVal:
if node {
diff --git a/go/vt/sqlparser/goyacc/goyacc.go b/go/vt/sqlparser/goyacc/goyacc.go
new file mode 100644
index 00000000000..567a2240664
--- /dev/null
+++ b/go/vt/sqlparser/goyacc/goyacc.go
@@ -0,0 +1,3765 @@
+/*
+Derived from Inferno's utils/iyacc/yacc.c
+http://code.google.com/p/inferno-os/source/browse/utils/iyacc/yacc.c
+
+This copyright NOTICE applies to all files in this directory and
+subdirectories, unless another copyright notice appears in a given
+file or subdirectory. If you take substantial code from this software to use in
+other programs, you must somehow include with it an appropriate
+copyright notice that includes the copyright notice and the other
+notices below. It is fine (and often tidier) to do that in a separate
+file such as NOTICE, LICENCE or COPYING.
+
+ Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved.
+ Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net)
+ Portions Copyright © 1997-1999 Vita Nuova Limited
+ Portions Copyright © 2000-2007 Vita Nuova Holdings Limited (www.vitanuova.com)
+ Portions Copyright © 2004,2006 Bruce Ellis
+ Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net)
+ Revisions Copyright © 2000-2007 Lucent Technologies Inc. and others
+ Portions Copyright © 2009 The Go Authors. All rights reserved.
+ Portions Copyright © 2021 The Vitess Authors.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+*/
+
+package main
+
+// yacc
+// major difference is lack of stem ("y" variable)
+//
+
+import (
+ "bufio"
+ "bytes"
+ "flag"
+ "fmt"
+ "go/format"
+ "io/ioutil"
+ "os"
+ "regexp"
+ "sort"
+ "strconv"
+ "strings"
+ "unicode"
+)
+
+// the following are adjustable
+// according to memory size
+const (
+ ACTSIZE = 120000
+ NSTATES = 8000
+ TEMPSIZE = 8000
+
+ SYMINC = 50 // increase for non-term or term
+ RULEINC = 50 // increase for max rule length prodptr[i]
+ PRODINC = 100 // increase for productions prodptr
+ WSETINC = 50 // increase for working sets wsets
+ STATEINC = 200 // increase for states statemem
+
+ PRIVATE = 0xE000 // unicode private use
+
+ // relationships which must hold:
+ // TEMPSIZE >= NTERMS + NNONTERM + 1;
+ // TEMPSIZE >= NSTATES;
+ //
+
+ NTBASE = 010000
+ ERRCODE = 8190
+ ACCEPTCODE = 8191
+ YYLEXUNK = 3
+ TOKSTART = 4 //index of first defined token
+)
+
+// no, left, right, binary assoc.
+const (
+ LASC = iota + 1
+ RASC
+ BASC
+)
+
+// flags for state generation
+const (
+ DONE = iota
+ MUSTDO
+ MUSTLOOKAHEAD
+)
+
+// flags for a rule having an action, and being reduced
+const (
+ ACTFLAG = 1 << (iota + 2)
+ REDFLAG
+)
+
+// output parser flags
+const yyFlag = -1000
+
+// parse tokens
+const (
+ IDENTIFIER = PRIVATE + iota
+ MARK
+ TERM
+ LEFT
+ RIGHT
+ BINARY
+ PREC
+ LCURLY
+ IDENTCOLON
+ NUMBER
+ START
+ TYPEDEF
+ TYPENAME
+ STRUCT
+ UNION
+ ERROR
+)
+
+const ENDFILE = 0
+const EMPTY = 1
+const WHOKNOWS = 0
+const OK = 1
+const NOMORE = -1000
+
+// macros for getting associativity and precedence levels
+func ASSOC(i int) int { return i & 3 }
+
+func PLEVEL(i int) int { return (i >> 4) & 077 }
+
+func TYPE(i int) int { return (i >> 10) & 077 }
+
+// macros for setting associativity and precedence levels
+func SETASC(i, j int) int { return i | j }
+
+func SETPLEV(i, j int) int { return i | (j << 4) }
+
+func SETTYPE(i, j int) int { return i | (j << 10) }
+
+// I/O descriptors
+var finput *bufio.Reader // input file
+var stderr *bufio.Writer
+var ftable *bufio.Writer // y.go file
+var fcode = &bytes.Buffer{} // saved code
+var ftypes = &bytes.Buffer{} // saved type definitions
+var foutput *bufio.Writer // y.output file
+
+var writtenImports bool // output file has recorded an import of "fmt"
+
+var oflag string // -o [y.go] - y.go file
+var vflag string // -v [y.output] - y.output file
+var lflag bool // -l - disable line directives
+var prefix string // name prefix for identifiers, default yy
+var allowFastAppend bool
+
+func init() {
+ flag.StringVar(&oflag, "o", "y.go", "parser output")
+ flag.StringVar(&prefix, "p", "yy", "name prefix to use in generated code")
+ flag.StringVar(&vflag, "v", "y.output", "create parsing tables")
+ flag.BoolVar(&lflag, "l", false, "disable line directives")
+ flag.BoolVar(&allowFastAppend, "fast-append", false, "enable fast-append optimization")
+}
+
+var initialstacksize = 16
+
+// communication variables between various I/O routines
+var infile string // input file name
+var numbval int // value of an input number
+var tokname string // input token name, slop for runes and 0
+var tokflag = false
+
+// structure declarations
+type Lkset []int
+
+type Pitem struct {
+ prod []int
+ off int // offset within the production
+ first int // first term or non-term in item
+ prodno int // production number for sorting
+}
+
+type Item struct {
+ pitem Pitem
+ look Lkset
+}
+
+type Symb struct {
+ name string
+ noconst bool
+ value int
+}
+
+type Wset struct {
+ pitem Pitem
+ flag int
+ ws Lkset
+}
+
+// storage of types
+var ntypes int // number of types defined
+var typeset = make(map[int]string) // pointers to type tags
+
+// token information
+
+var ntokens = 0 // number of tokens
+var tokset []Symb
+var toklev []int // vector with the precedence of the terminals
+
+// nonterminal information
+
+var nnonter = -1 // the number of nonterminals
+var nontrst []Symb
+var start int // start symbol
+
+// state information
+
+var nstate = 0 // number of states
+var pstate = make([]int, NSTATES+2) // index into statemem to the descriptions of the states
+var statemem []Item
+var tystate = make([]int, NSTATES) // contains type information about the states
+var tstates []int // states generated by terminal gotos
+var ntstates []int // states generated by nonterminal gotos
+var mstates = make([]int, NSTATES) // chain of overflows of term/nonterm generation lists
+var lastred int // number of last reduction of a state
+var defact = make([]int, NSTATES) // default actions of states
+
+// lookahead set information
+
+var nolook = 0 // flag to turn off lookahead computations
+var tbitset = 0 // size of lookahead sets
+var clset Lkset // temporary storage for lookahead computations
+
+// working set information
+
+var wsets []Wset
+var cwp int
+
+// storage for action table
+
+var amem []int // action table storage
+var memp int // next free action table position
+var indgo = make([]int, NSTATES) // index to the stored goto table
+
+// temporary vector, indexable by states, terms, or ntokens
+
+var temp1 = make([]int, TEMPSIZE) // temporary storage, indexed by terms + ntokens or states
+var lineno = 1 // current input line number
+var fatfl = 1 // if on, error is fatal
+var nerrors = 0 // number of errors
+
+// assigned token type values
+
+var extval = 0
+
+// grammar rule information
+
+var nprod = 1 // number of productions
+var prdptr [][]int // pointers to descriptions of productions
+var levprd []int // precedence levels for the productions
+var rlines []int // line number for this rule
+
+// statistics collection variables
+
+var zzgoent = 0
+var zzgobest = 0
+var zzacent = 0
+var zzexcp = 0
+var zzclose = 0
+var zzrrconf = 0
+var zzsrconf = 0
+var zzstate = 0
+
+// optimizer arrays
+
+var yypgo [][]int
+var optst [][]int
+var ggreed []int
+var pgo []int
+
+var maxspr int // maximum spread of any entry
+var maxoff int // maximum offset into a array
+var maxa int
+
+// storage for information about the nonterminals
+
+var pres [][][]int // vector of pointers to productions yielding each nonterminal
+var pfirst []Lkset
+var pempty []int // vector of nonterminals nontrivially deriving e
+
+// random stuff picked out from between functions
+
+var indebug = 0 // debugging flag for cpfir
+var pidebug = 0 // debugging flag for putitem
+var gsdebug = 0 // debugging flag for stagen
+var cldebug = 0 // debugging flag for closure
+var pkdebug = 0 // debugging flag for apack
+var g2debug = 0 // debugging for go2gen
+var adb = 0 // debugging for callopt
+
+type Resrv struct {
+ name string
+ value int
+}
+
+var resrv = []Resrv{
+ {"binary", BINARY},
+ {"left", LEFT},
+ {"nonassoc", BINARY},
+ {"prec", PREC},
+ {"right", RIGHT},
+ {"start", START},
+ {"term", TERM},
+ {"token", TERM},
+ {"type", TYPEDEF},
+ {"union", UNION},
+ {"struct", STRUCT},
+ {"error", ERROR},
+}
+
+type Error struct {
+ lineno int
+ tokens []string
+ msg string
+}
+
+var errors []Error
+
+type Row struct {
+ actions []int
+ defaultAction int
+}
+
+var stateTable []Row
+
+var zznewstate = 0
+
+const EOF = -1
+
+func main() {
+
+ setup() // initialize and read productions
+
+ tbitset = (ntokens + 32) / 32
+ cpres() // make table of which productions yield a given nonterminal
+ cempty() // make a table of which nonterminals can match the empty string
+ cpfir() // make a table of firsts of nonterminals
+
+ stagen() // generate the states
+
+ yypgo = make([][]int, nnonter+1)
+ optst = make([][]int, nstate)
+ output() // write the states and the tables
+ go2out()
+
+ hideprod()
+ summary()
+
+ callopt()
+
+ typeinfo()
+ others()
+
+ exit(0)
+}
+
+func setup() {
+ var j, ty int
+
+ stderr = bufio.NewWriter(os.Stderr)
+ foutput = nil
+
+ flag.Parse()
+ if flag.NArg() != 1 {
+ usage()
+ }
+ if initialstacksize < 1 {
+ // never set so cannot happen
+ fmt.Fprintf(stderr, "yacc: stack size too small\n")
+ usage()
+ }
+ yaccpar = strings.Replace(yaccpartext, "$$", prefix, -1)
+ openup()
+
+ fmt.Fprintf(ftable, "// Code generated by goyacc %s. DO NOT EDIT.\n", strings.Join(os.Args[1:], " "))
+
+ defin(0, "$end")
+ extval = PRIVATE // tokens start in unicode 'private use'
+ defin(0, "error")
+ defin(1, "$accept")
+ defin(0, "$unk")
+ i := 0
+
+ t := gettok()
+
+outer:
+ for {
+ switch t {
+ default:
+ errorf("syntax error tok=%v", t-PRIVATE)
+
+ case MARK, ENDFILE:
+ break outer
+
+ case ';':
+ // Do nothing.
+
+ case START:
+ t = gettok()
+ if t != IDENTIFIER {
+ errorf("bad %%start construction")
+ }
+ start = chfind(1, tokname)
+
+ case ERROR:
+ lno := lineno
+ var tokens []string
+ for {
+ t := gettok()
+ if t == ':' {
+ break
+ }
+ if t != IDENTIFIER && t != IDENTCOLON {
+ errorf("bad syntax in %%error")
+ }
+ tokens = append(tokens, tokname)
+ if t == IDENTCOLON {
+ break
+ }
+ }
+ if gettok() != IDENTIFIER {
+ errorf("bad syntax in %%error")
+ }
+ errors = append(errors, Error{lno, tokens, tokname})
+
+ case TYPEDEF:
+ t = gettok()
+ if t != TYPENAME {
+ errorf("bad syntax in %%type")
+ }
+ ty = numbval
+ for {
+ t = gettok()
+ switch t {
+ case IDENTIFIER:
+ t = chfind(1, tokname)
+ if t < NTBASE {
+ j = TYPE(toklev[t])
+ if j != 0 && j != ty {
+ errorf("type redeclaration of token %s",
+ tokset[t].name)
+ } else {
+ toklev[t] = SETTYPE(toklev[t], ty)
+ }
+ } else {
+ j = nontrst[t-NTBASE].value
+ if j != 0 && j != ty {
+ errorf("type redeclaration of nonterminal %v",
+ nontrst[t-NTBASE].name)
+ } else {
+ nontrst[t-NTBASE].value = ty
+ }
+ }
+ continue
+
+ case ',':
+ continue
+ }
+ break
+ }
+ continue
+
+ case UNION:
+ parsetypes(true)
+
+ case STRUCT:
+ parsetypes(false)
+
+ case LEFT, BINARY, RIGHT, TERM:
+ // nonzero means new prec. and assoc.
+ lev := t - TERM
+ if lev != 0 {
+ i++
+ }
+ ty = 0
+
+ // get identifiers so defined
+ t = gettok()
+
+ // there is a type defined
+ if t == TYPENAME {
+ ty = numbval
+ t = gettok()
+ }
+ for {
+ switch t {
+ case ',':
+ t = gettok()
+ continue
+
+ case ';':
+ // Do nothing.
+
+ case IDENTIFIER:
+ j = chfind(0, tokname)
+ if j >= NTBASE {
+ errorf("%v defined earlier as nonterminal", tokname)
+ }
+ if lev != 0 {
+ if ASSOC(toklev[j]) != 0 {
+ errorf("redeclaration of precedence of %v", tokname)
+ }
+ toklev[j] = SETASC(toklev[j], lev)
+ toklev[j] = SETPLEV(toklev[j], i)
+ }
+ if ty != 0 {
+ if TYPE(toklev[j]) != 0 {
+ errorf("redeclaration of type of %v", tokname)
+ }
+ toklev[j] = SETTYPE(toklev[j], ty)
+ }
+ t = gettok()
+ if t == NUMBER {
+ tokset[j].value = numbval
+ t = gettok()
+ }
+
+ continue
+ }
+ break
+ }
+ continue
+
+ case LCURLY:
+ cpycode()
+ }
+ t = gettok()
+ }
+
+ if t == ENDFILE {
+ errorf("unexpected EOF before %%")
+ }
+
+ fmt.Fprintf(fcode, "switch %snt {\n", prefix)
+
+ moreprod()
+ prdptr[0] = []int{NTBASE, start, 1, 0}
+
+ nprod = 1
+ curprod := make([]int, RULEINC)
+ t = gettok()
+ if t != IDENTCOLON {
+ errorf("bad syntax on first rule")
+ }
+
+ if start == 0 {
+ prdptr[0][1] = chfind(1, tokname)
+ }
+
+ // read rules
+ // put into prdptr array in the format
+ // target
+ // followed by id's of terminals and non-terminals
+ // followed by -nprod
+
+ for t != MARK && t != ENDFILE {
+ mem := 0
+
+ // process a rule
+ rlines[nprod] = lineno
+ ruleline := lineno
+ if t == '|' {
+ curprod[mem] = prdptr[nprod-1][0]
+ mem++
+ } else if t == IDENTCOLON {
+ curprod[mem] = chfind(1, tokname)
+ if curprod[mem] < NTBASE {
+ lerrorf(ruleline, "token illegal on LHS of grammar rule")
+ }
+ mem++
+ } else {
+ lerrorf(ruleline, "illegal rule: missing semicolon or | ?")
+ }
+
+ // read rule body
+ t = gettok()
+ for {
+ for t == IDENTIFIER {
+ curprod[mem] = chfind(1, tokname)
+ if curprod[mem] < NTBASE {
+ levprd[nprod] = toklev[curprod[mem]]
+ }
+ mem++
+ if mem >= len(curprod) {
+ ncurprod := make([]int, mem+RULEINC)
+ copy(ncurprod, curprod)
+ curprod = ncurprod
+ }
+ t = gettok()
+ }
+ if t == PREC {
+ if gettok() != IDENTIFIER {
+ lerrorf(ruleline, "illegal %%prec syntax")
+ }
+ j = chfind(2, tokname)
+ if j >= NTBASE {
+ lerrorf(ruleline, "nonterminal "+nontrst[j-NTBASE].name+" illegal after %%prec")
+ }
+ levprd[nprod] = toklev[j]
+ t = gettok()
+ }
+ if t != '=' {
+ break
+ }
+ levprd[nprod] |= ACTFLAG
+ fmt.Fprintf(fcode, "\n\tcase %v:", nprod)
+ fmt.Fprintf(fcode, "\n\t\t%sDollar = %sS[%spt-%v:%spt+1]", prefix, prefix, prefix, mem-1, prefix)
+
+ var act bytes.Buffer
+ var unionType string
+ cpyact(&act, curprod, mem, &unionType)
+
+ if unionType != "" {
+ fmt.Fprintf(fcode, "\n\t\tvar %sLOCAL %s", prefix, unionType)
+ }
+ fcode.Write(act.Bytes())
+ if unionType != "" {
+ fmt.Fprintf(fcode, "\n\t\t%sVAL.union = %sLOCAL", prefix, prefix)
+ }
+
+ // action within rule...
+ t = gettok()
+ if t == IDENTIFIER {
+ // make it a nonterminal
+ j = chfind(1, fmt.Sprintf("$$%v", nprod))
+
+ //
+ // the current rule will become rule number nprod+1
+ // enter null production for action
+ //
+ prdptr[nprod] = make([]int, 2)
+ prdptr[nprod][0] = j
+ prdptr[nprod][1] = -nprod
+
+ // update the production information
+ nprod++
+ moreprod()
+ levprd[nprod] = levprd[nprod-1] & ^ACTFLAG
+ levprd[nprod-1] = ACTFLAG
+ rlines[nprod] = lineno
+
+ // make the action appear in the original rule
+ curprod[mem] = j
+ mem++
+ if mem >= len(curprod) {
+ ncurprod := make([]int, mem+RULEINC)
+ copy(ncurprod, curprod)
+ curprod = ncurprod
+ }
+ }
+ }
+
+ for t == ';' {
+ t = gettok()
+ }
+ curprod[mem] = -nprod
+ mem++
+
+ // check that default action is reasonable
+ if ntypes != 0 && (levprd[nprod]&ACTFLAG) == 0 &&
+ nontrst[curprod[0]-NTBASE].value != 0 {
+ // no explicit action, LHS has value
+ tempty := curprod[1]
+ if tempty < 0 {
+ lerrorf(ruleline, "must return a value, since LHS has a type")
+ }
+ if tempty >= NTBASE {
+ tempty = nontrst[tempty-NTBASE].value
+ } else {
+ tempty = TYPE(toklev[tempty])
+ }
+ if tempty != nontrst[curprod[0]-NTBASE].value {
+ lerrorf(ruleline, "default action causes potential type clash")
+ }
+ }
+ moreprod()
+ prdptr[nprod] = make([]int, mem)
+ copy(prdptr[nprod], curprod)
+ nprod++
+ moreprod()
+ levprd[nprod] = 0
+ }
+
+ if TEMPSIZE < ntokens+nnonter+1 {
+ errorf("too many tokens (%d) or non-terminals (%d)", ntokens, nnonter)
+ }
+
+ //
+ // end of all rules
+ // dump out the prefix code
+ //
+
+ fmt.Fprintf(fcode, "\n\t}")
+
+ // put out non-literal terminals
+ for i := TOKSTART; i <= ntokens; i++ {
+ // non-literals
+ if !tokset[i].noconst {
+ fmt.Fprintf(ftable, "const %v = %v\n", tokset[i].name, tokset[i].value)
+ }
+ }
+
+ // put out names of tokens
+ ftable.WriteRune('\n')
+ fmt.Fprintf(ftable, "var %sToknames = [...]string{\n", prefix)
+ for i := 1; i <= ntokens; i++ {
+ fmt.Fprintf(ftable, "\t%q,\n", tokset[i].name)
+ }
+ fmt.Fprintf(ftable, "}\n")
+
+ // put out names of states.
+ // commented out to avoid a huge table just for debugging.
+ // re-enable to have the names in the binary.
+ ftable.WriteRune('\n')
+ fmt.Fprintf(ftable, "var %sStatenames = [...]string{\n", prefix)
+ // for i:=TOKSTART; i<=ntokens; i++ {
+ // fmt.Fprintf(ftable, "\t%q,\n", tokset[i].name);
+ // }
+ fmt.Fprintf(ftable, "}\n")
+
+ ftable.WriteRune('\n')
+ fmt.Fprintf(ftable, "const %sEofCode = 1\n", prefix)
+ fmt.Fprintf(ftable, "const %sErrCode = 2\n", prefix)
+ fmt.Fprintf(ftable, "const %sInitialStackSize = %v\n", prefix, initialstacksize)
+
+ //
+ // copy any postfix code
+ //
+ if t == MARK {
+ if !lflag {
+ fmt.Fprintf(ftable, "\n//line %v:%v\n", infile, lineno)
+ }
+ for {
+ c := getrune(finput)
+ if c == EOF {
+ break
+ }
+ ftable.WriteRune(c)
+ }
+ }
+}
+
+//
+// allocate enough room to hold another production
+//
+func moreprod() {
+ n := len(prdptr)
+ if nprod >= n {
+ nn := n + PRODINC
+ aprod := make([][]int, nn)
+ alevprd := make([]int, nn)
+ arlines := make([]int, nn)
+
+ copy(aprod, prdptr)
+ copy(alevprd, levprd)
+ copy(arlines, rlines)
+
+ prdptr = aprod
+ levprd = alevprd
+ rlines = arlines
+ }
+}
+
+//
+// define s to be a terminal if nt==0
+// or a nonterminal if nt==1
+//
+func defin(nt int, s string) int {
+ val := 0
+ if nt != 0 {
+ nnonter++
+ if nnonter >= len(nontrst) {
+ anontrst := make([]Symb, nnonter+SYMINC)
+ copy(anontrst, nontrst)
+ nontrst = anontrst
+ }
+ nontrst[nnonter] = Symb{name: s}
+ return NTBASE + nnonter
+ }
+
+ // must be a token
+ ntokens++
+ if ntokens >= len(tokset) {
+ nn := ntokens + SYMINC
+ atokset := make([]Symb, nn)
+ atoklev := make([]int, nn)
+
+ copy(atoklev, toklev)
+ copy(atokset, tokset)
+
+ tokset = atokset
+ toklev = atoklev
+ }
+ tokset[ntokens].name = s
+ toklev[ntokens] = 0
+
+ // establish value for token
+ // single character literal
+ if s[0] == '\'' || s[0] == '"' {
+ q, err := strconv.Unquote(s)
+ if err != nil {
+ errorf("invalid token: %s", err)
+ }
+ rq := []rune(q)
+ if len(rq) != 1 {
+ errorf("character token too long: %s", s)
+ }
+ val = int(rq[0])
+ if val == 0 {
+ errorf("token value 0 is illegal")
+ }
+ tokset[ntokens].noconst = true
+ } else {
+ val = extval
+ extval++
+ if s[0] == '$' {
+ tokset[ntokens].noconst = true
+ }
+ }
+
+ tokset[ntokens].value = val
+ return ntokens
+}
+
+var peekline = 0
+
+func gettok() int {
+ var i int
+ var match, c rune
+
+ tokname = ""
+ for {
+ lineno += peekline
+ peekline = 0
+ c = getrune(finput)
+ for c == ' ' || c == '\n' || c == '\t' || c == '\v' || c == '\r' {
+ if c == '\n' {
+ lineno++
+ }
+ c = getrune(finput)
+ }
+
+ // skip comment -- fix
+ if c != '/' {
+ break
+ }
+ lineno += skipcom()
+ }
+
+ switch c {
+ case EOF:
+ if tokflag {
+ fmt.Printf(">>> ENDFILE %v\n", lineno)
+ }
+ return ENDFILE
+
+ case '{':
+ ungetrune(finput, c)
+ if tokflag {
+ fmt.Printf(">>> ={ %v\n", lineno)
+ }
+ return '='
+
+ case '<':
+ // get, and look up, a type name (union member name)
+ c = getrune(finput)
+ for c != '>' && c != EOF && c != '\n' {
+ tokname += string(c)
+ c = getrune(finput)
+ }
+
+ if c != '>' {
+ errorf("unterminated < ... > clause")
+ }
+
+ for i = 1; i <= ntypes; i++ {
+ if typeset[i] == tokname {
+ numbval = i
+ if tokflag {
+ fmt.Printf(">>> TYPENAME old <%v> %v\n", tokname, lineno)
+ }
+ return TYPENAME
+ }
+ }
+ ntypes++
+ numbval = ntypes
+ typeset[numbval] = tokname
+ if tokflag {
+ fmt.Printf(">>> TYPENAME new <%v> %v\n", tokname, lineno)
+ }
+ return TYPENAME
+
+ case '"', '\'':
+ match = c
+ tokname = string(c)
+ for {
+ c = getrune(finput)
+ if c == '\n' || c == EOF {
+ errorf("illegal or missing ' or \"")
+ }
+ if c == '\\' {
+ tokname += string('\\')
+ c = getrune(finput)
+ } else if c == match {
+ if tokflag {
+ fmt.Printf(">>> IDENTIFIER \"%v\" %v\n", tokname, lineno)
+ }
+ tokname += string(c)
+ return IDENTIFIER
+ }
+ tokname += string(c)
+ }
+
+ case '%':
+ c = getrune(finput)
+ switch c {
+ case '%':
+ if tokflag {
+ fmt.Printf(">>> MARK %%%% %v\n", lineno)
+ }
+ return MARK
+ case '=':
+ if tokflag {
+ fmt.Printf(">>> PREC %%= %v\n", lineno)
+ }
+ return PREC
+ case '{':
+ if tokflag {
+ fmt.Printf(">>> LCURLY %%{ %v\n", lineno)
+ }
+ return LCURLY
+ }
+
+ getword(c)
+ // find a reserved word
+ for i := range resrv {
+ if tokname == resrv[i].name {
+ if tokflag {
+ fmt.Printf(">>> %%%v %v %v\n", tokname,
+ resrv[i].value-PRIVATE, lineno)
+ }
+ return resrv[i].value
+ }
+ }
+ errorf("invalid escape, or illegal reserved word: %v", tokname)
+
+ case '0', '1', '2', '3', '4', '5', '6', '7', '8', '9':
+ numbval = int(c - '0')
+ for {
+ c = getrune(finput)
+ if !isdigit(c) {
+ break
+ }
+ numbval = numbval*10 + int(c-'0')
+ }
+ ungetrune(finput, c)
+ if tokflag {
+ fmt.Printf(">>> NUMBER %v %v\n", numbval, lineno)
+ }
+ return NUMBER
+
+ default:
+ if isword(c) || c == '.' || c == '$' {
+ getword(c)
+ break
+ }
+ if tokflag {
+ fmt.Printf(">>> OPERATOR %v %v\n", string(c), lineno)
+ }
+ return int(c)
+ }
+
+ // look ahead to distinguish IDENTIFIER from IDENTCOLON
+ c = getrune(finput)
+ for c == ' ' || c == '\t' || c == '\n' || c == '\v' || c == '\r' || c == '/' {
+ if c == '\n' {
+ peekline++
+ }
+ // look for comments
+ if c == '/' {
+ peekline += skipcom()
+ }
+ c = getrune(finput)
+ }
+ if c == ':' {
+ if tokflag {
+ fmt.Printf(">>> IDENTCOLON %v: %v\n", tokname, lineno)
+ }
+ return IDENTCOLON
+ }
+
+ ungetrune(finput, c)
+ if tokflag {
+ fmt.Printf(">>> IDENTIFIER %v %v\n", tokname, lineno)
+ }
+ return IDENTIFIER
+}
+
+func getword(c rune) {
+ tokname = ""
+ for isword(c) || isdigit(c) || c == '.' || c == '$' {
+ tokname += string(c)
+ c = getrune(finput)
+ }
+ ungetrune(finput, c)
+}
+
+//
+// determine the type of a symbol
+//
+func fdtype(t int) (int, string) {
+ var v int
+ var s string
+
+ if t >= NTBASE {
+ v = nontrst[t-NTBASE].value
+ s = nontrst[t-NTBASE].name
+ } else {
+ v = TYPE(toklev[t])
+ s = tokset[t].name
+ }
+ return v, s
+}
+
+func chfind(t int, s string) int {
+ if s[0] == '"' || s[0] == '\'' {
+ t = 0
+ }
+ for i := 0; i <= ntokens; i++ {
+ if s == tokset[i].name {
+ return i
+ }
+ }
+ for i := 0; i <= nnonter; i++ {
+ if s == nontrst[i].name {
+ return NTBASE + i
+ }
+ }
+
+ // cannot find name
+ if t > 1 {
+ errorf("%v should have been defined earlier", s)
+ }
+ return defin(t, s)
+}
+
+const (
+ startUnion = iota
+ skippingLeadingBlanks
+ readingMember
+ skippingLaterBlanks
+ readingType
+)
+
+type gotypeinfo struct {
+ typename string
+ union bool
+}
+
+var gotypes = make(map[string]*gotypeinfo)
+
+func typeinfo() {
+ if !lflag {
+ fmt.Fprintf(ftable, "\n//line %v:%v\n", infile, lineno)
+ }
+ fmt.Fprintf(ftable, "type %sSymType struct {", prefix)
+ for _, tt := range gotypes {
+ if tt.union {
+ fmt.Fprintf(ftable, "\n\tunion interface{}")
+ break
+ }
+ }
+ ftable.Write(ftypes.Bytes())
+ fmt.Fprintf(ftable, "\n\tyys int")
+ fmt.Fprintf(ftable, "\n}\n\n")
+
+ var sortedTypes []string
+ for member, tt := range gotypes {
+ if tt.union {
+ sortedTypes = append(sortedTypes, member)
+ }
+ }
+ sort.Strings(sortedTypes)
+
+ for _, member := range sortedTypes {
+ tt := gotypes[member]
+ fmt.Fprintf(ftable, "\nfunc (st *%sSymType) %sUnion() %s {\n", prefix, member, tt.typename)
+ fmt.Fprintf(ftable, "\tv, _ := st.union.(%s)\n", tt.typename)
+ fmt.Fprintf(ftable, "\treturn v\n")
+ fmt.Fprintf(ftable, "}\n")
+ }
+}
+
+//
+// copy the union declaration to the output, and the define file if present
+//
+func parsetypes(union bool) {
+ var member, typ bytes.Buffer
+ state := startUnion
+
+out:
+ for {
+ c := getrune(finput)
+ if c == EOF {
+ errorf("EOF encountered while processing %%union")
+ }
+ switch c {
+ case '\n':
+ lineno++
+ if state == readingType {
+ gotypes[member.String()] = &gotypeinfo{
+ typename: typ.String(),
+ union: union,
+ }
+ if !union {
+ fmt.Fprintf(ftypes, "\n\t%s %s", member.Bytes(), typ.Bytes())
+ }
+ member.Reset()
+ typ.Reset()
+ }
+ state = skippingLeadingBlanks
+ default:
+ switch state {
+ case skippingLeadingBlanks:
+ if c == ' ' || c == '\t' {
+ continue
+ }
+ if c == '}' {
+ break out
+ }
+ state = readingMember
+ member.WriteRune(c)
+ case readingMember:
+ if c == ' ' || c == '\t' {
+ state = skippingLaterBlanks
+ continue
+ }
+ member.WriteRune(c)
+ case skippingLaterBlanks:
+ if c == ' ' || c == '\t' {
+ continue
+ }
+ state = readingType
+ typ.WriteRune(c)
+ case readingType:
+ typ.WriteRune(c)
+ }
+ }
+ }
+}
+
+//
+// saves code between %{ and %}
+// adds an import for __fmt__ the first time
+//
+func cpycode() {
+ lno := lineno
+
+ c := getrune(finput)
+ if c == '\n' {
+ c = getrune(finput)
+ lineno++
+ }
+ if !lflag {
+ fmt.Fprintf(ftable, "\n//line %v:%v\n", infile, lineno)
+ }
+ // accumulate until %}
+ code := make([]rune, 0, 1024)
+ for c != EOF {
+ if c == '%' {
+ c = getrune(finput)
+ if c == '}' {
+ emitcode(code, lno+1)
+ return
+ }
+ code = append(code, '%')
+ }
+ code = append(code, c)
+ if c == '\n' {
+ lineno++
+ }
+ c = getrune(finput)
+ }
+ lineno = lno
+ errorf("eof before %%}")
+}
+
+//
+// emits code saved up from between %{ and %}
+// called by cpycode
+// adds an import for __yyfmt__ after the package clause
+//
+func emitcode(code []rune, lineno int) {
+ for i, line := range lines(code) {
+ writecode(line)
+ if !writtenImports && isPackageClause(line) {
+ fmt.Fprintln(ftable, `import (`)
+ fmt.Fprintln(ftable, `__yyfmt__ "fmt"`)
+ fmt.Fprintln(ftable, `__yyunsafe__ "unsafe"`)
+ fmt.Fprintln(ftable, `)`)
+ if !lflag {
+ fmt.Fprintf(ftable, "//line %v:%v\n\t\t", infile, lineno+i)
+ }
+ writtenImports = true
+ }
+ }
+}
+
+//
+// does this line look like a package clause? not perfect: might be confused by early comments.
+//
+func isPackageClause(line []rune) bool {
+ line = skipspace(line)
+
+ // must be big enough.
+ if len(line) < len("package X\n") {
+ return false
+ }
+
+ // must start with "package"
+ for i, r := range []rune("package") {
+ if line[i] != r {
+ return false
+ }
+ }
+ line = skipspace(line[len("package"):])
+
+ // must have another identifier.
+ if len(line) == 0 || (!unicode.IsLetter(line[0]) && line[0] != '_') {
+ return false
+ }
+ for len(line) > 0 {
+ if !unicode.IsLetter(line[0]) && !unicode.IsDigit(line[0]) && line[0] != '_' {
+ break
+ }
+ line = line[1:]
+ }
+ line = skipspace(line)
+
+ // eol, newline, or comment must follow
+ if len(line) == 0 {
+ return true
+ }
+ if line[0] == '\r' || line[0] == '\n' {
+ return true
+ }
+ if len(line) >= 2 {
+ return line[0] == '/' && (line[1] == '/' || line[1] == '*')
+ }
+ return false
+}
+
+//
+// skip initial spaces
+//
+func skipspace(line []rune) []rune {
+ for len(line) > 0 {
+ if line[0] != ' ' && line[0] != '\t' {
+ break
+ }
+ line = line[1:]
+ }
+ return line
+}
+
+//
+// break code into lines
+//
+func lines(code []rune) [][]rune {
+ l := make([][]rune, 0, 100)
+ for len(code) > 0 {
+ // one line per loop
+ var i int
+ for i = range code {
+ if code[i] == '\n' {
+ break
+ }
+ }
+ l = append(l, code[:i+1])
+ code = code[i+1:]
+ }
+ return l
+}
+
+//
+// writes code to ftable
+//
+func writecode(code []rune) {
+ for _, r := range code {
+ ftable.WriteRune(r)
+ }
+}
+
+//
+// skip over comments
+// skipcom is called after reading a '/'
+//
+func skipcom() int {
+ c := getrune(finput)
+ if c == '/' {
+ for c != EOF {
+ if c == '\n' {
+ return 1
+ }
+ c = getrune(finput)
+ }
+ errorf("EOF inside comment")
+ return 0
+ }
+ if c != '*' {
+ errorf("illegal comment")
+ }
+
+ nl := 0 // lines skipped
+ c = getrune(finput)
+
+l1:
+ switch c {
+ case '*':
+ c = getrune(finput)
+ if c == '/' {
+ break
+ }
+ goto l1
+
+ case '\n':
+ nl++
+ fallthrough
+
+ default:
+ c = getrune(finput)
+ goto l1
+ }
+ return nl
+}
+
+var fastAppendRe = regexp.MustCompile(`\s+append\(\$[$1],`)
+
+func cpyyvalaccess(fcode *bytes.Buffer, curprod []int, tok int, unionType *string) {
+ if ntypes == 0 {
+ fmt.Fprintf(fcode, "%sVAL", prefix)
+ return
+ }
+
+ if tok < 0 {
+ tok, _ = fdtype(curprod[0])
+ }
+ ti, ok := gotypes[typeset[tok]]
+ if !ok {
+ errorf("missing Go type information for %s", typeset[tok])
+ }
+ if !ti.union {
+ fmt.Fprintf(fcode, "%sVAL.%s", prefix, typeset[tok])
+ return
+ }
+
+ var buf bytes.Buffer
+ lvalue := false
+ fastAppend := false
+
+loop:
+ for {
+ c := getrune(finput)
+
+ switch c {
+ case ' ', '\t':
+ buf.WriteRune(c)
+
+ case '=':
+ lvalue = true
+ if allowFastAppend && *unionType == "" {
+ peek, err := finput.Peek(16)
+ if err != nil {
+ errorf("failed to scan forward: %v", err)
+ }
+ match := fastAppendRe.Find(peek)
+ if len(match) > 0 {
+ fastAppend = true
+ for range match {
+ _ = getrune(finput)
+ }
+ } else {
+ buf.WriteRune(c)
+ }
+ break loop
+ }
+
+ buf.WriteRune(c)
+ break loop
+
+ default:
+ buf.WriteRune(c)
+ break loop
+ }
+ }
+
+ if fastAppend {
+ fmt.Fprintf(fcode, "\t%sSLICE := (*%s)(%sIaddr(%sVAL.union))\n", prefix, ti.typename, prefix, prefix)
+ fmt.Fprintf(fcode, "\t*%sSLICE = append(*%sSLICE, ", prefix, prefix)
+ } else if lvalue {
+ fmt.Fprintf(fcode, "%sLOCAL", prefix)
+ *unionType = ti.typename
+ } else if *unionType == "" {
+ fmt.Fprintf(fcode, "%sVAL.%sUnion()", prefix, typeset[tok])
+ } else {
+ fmt.Fprintf(fcode, "%sLOCAL", prefix)
+ }
+ fcode.Write(buf.Bytes())
+}
+
+//
+// copy action to the next ; or closing }
+//
+func cpyact(fcode *bytes.Buffer, curprod []int, max int, unionType *string) {
+ if !lflag {
+ fmt.Fprintf(fcode, "\n//line %v:%v", infile, lineno)
+ }
+ fmt.Fprint(fcode, "\n\t\t")
+
+ lno := lineno
+ brac := 0
+
+loop:
+ for {
+ c := getrune(finput)
+
+ swt:
+ switch c {
+ case ';':
+ if brac == 0 {
+ fcode.WriteRune(c)
+ return
+ }
+
+ case '{':
+ brac++
+
+ case '$':
+ s := 1
+ tok := -1
+ c = getrune(finput)
+
+ // type description
+ if c == '<' {
+ ungetrune(finput, c)
+ if gettok() != TYPENAME {
+ errorf("bad syntax on $ clause")
+ }
+ tok = numbval
+ c = getrune(finput)
+ }
+ if c == '$' {
+ cpyyvalaccess(fcode, curprod, tok, unionType)
+ continue loop
+ }
+ if c == '-' {
+ s = -s
+ c = getrune(finput)
+ }
+ j := 0
+ if isdigit(c) {
+ for isdigit(c) {
+ j = j*10 + int(c-'0')
+ c = getrune(finput)
+ }
+ ungetrune(finput, c)
+ j = j * s
+ if j >= max {
+ errorf("Illegal use of $%v", j)
+ }
+ } else if isword(c) || c == '.' {
+ // look for $name
+ ungetrune(finput, c)
+ if gettok() != IDENTIFIER {
+ errorf("$ must be followed by an identifier")
+ }
+ tokn := chfind(2, tokname)
+ fnd := -1
+ c = getrune(finput)
+ if c != '@' {
+ ungetrune(finput, c)
+ } else if gettok() != NUMBER {
+ errorf("@ must be followed by number")
+ } else {
+ fnd = numbval
+ }
+ for j = 1; j < max; j++ {
+ if tokn == curprod[j] {
+ fnd--
+ if fnd <= 0 {
+ break
+ }
+ }
+ }
+ if j >= max {
+ errorf("$name or $name@number not found")
+ }
+ } else {
+ fcode.WriteRune('$')
+ if s < 0 {
+ fcode.WriteRune('-')
+ }
+ ungetrune(finput, c)
+ continue loop
+ }
+ fmt.Fprintf(fcode, "%sDollar[%v]", prefix, j)
+
+ // put out the proper tag
+ if ntypes != 0 {
+ if j <= 0 && tok < 0 {
+ errorf("must specify type of $%v", j)
+ }
+ if tok < 0 {
+ tok, _ = fdtype(curprod[j])
+ }
+ ti, ok := gotypes[typeset[tok]]
+ if !ok {
+ errorf("missing Go type information for %s", typeset[tok])
+ }
+ if ti.union {
+ fmt.Fprintf(fcode, ".%sUnion()", typeset[tok])
+ } else {
+ fmt.Fprintf(fcode, ".%s", typeset[tok])
+ }
+ }
+ continue loop
+
+ case '}':
+ brac--
+ if brac != 0 {
+ break
+ }
+ fcode.WriteRune(c)
+ return
+
+ case '/':
+ nc := getrune(finput)
+ if nc != '/' && nc != '*' {
+ ungetrune(finput, nc)
+ break
+ }
+ // a comment
+ fcode.WriteRune(c)
+ fcode.WriteRune(nc)
+ c = getrune(finput)
+ for c != EOF {
+ switch {
+ case c == '\n':
+ lineno++
+ if nc == '/' { // end of // comment
+ break swt
+ }
+ case c == '*' && nc == '*': // end of /* comment?
+ nnc := getrune(finput)
+ if nnc == '/' {
+ fcode.WriteRune('*')
+ fcode.WriteRune('/')
+ continue loop
+ }
+ ungetrune(finput, nnc)
+ }
+ fcode.WriteRune(c)
+ c = getrune(finput)
+ }
+ errorf("EOF inside comment")
+
+ case '\'', '"':
+ // character string or constant
+ match := c
+ fcode.WriteRune(c)
+ c = getrune(finput)
+ for c != EOF {
+ if c == '\\' {
+ fcode.WriteRune(c)
+ c = getrune(finput)
+ if c == '\n' {
+ lineno++
+ }
+ } else if c == match {
+ break swt
+ }
+ if c == '\n' {
+ errorf("newline in string or char const")
+ }
+ fcode.WriteRune(c)
+ c = getrune(finput)
+ }
+ errorf("EOF in string or character constant")
+
+ case EOF:
+ lineno = lno
+ errorf("action does not terminate")
+
+ case '\n':
+ fmt.Fprint(fcode, "\n\t")
+ lineno++
+ continue loop
+ }
+
+ fcode.WriteRune(c)
+ }
+}
+
+func openup() {
+ infile = flag.Arg(0)
+ finput = open(infile)
+ if finput == nil {
+ errorf("cannot open %v", infile)
+ }
+
+ foutput = nil
+ if vflag != "" {
+ foutput = create(vflag)
+ if foutput == nil {
+ errorf("can't create file %v", vflag)
+ }
+ }
+
+ ftable = nil
+ if oflag == "" {
+ oflag = "y.go"
+ }
+ ftable = create(oflag)
+ if ftable == nil {
+ errorf("can't create file %v", oflag)
+ }
+
+}
+
+//
+// return a pointer to the name of symbol i
+//
+func symnam(i int) string {
+ var s string
+
+ if i >= NTBASE {
+ s = nontrst[i-NTBASE].name
+ } else {
+ s = tokset[i].name
+ }
+ return s
+}
+
+//
+// set elements 0 through n-1 to c
+//
+func aryfil(v []int, n, c int) {
+ for i := 0; i < n; i++ {
+ v[i] = c
+ }
+}
+
+//
+// compute an array with the beginnings of productions yielding given nonterminals
+// The array pres points to these lists
+// the array pyield has the lists: the total size is only NPROD+1
+//
+func cpres() {
+ pres = make([][][]int, nnonter+1)
+ curres := make([][]int, nprod)
+
+ if false {
+ for j := 0; j <= nnonter; j++ {
+ fmt.Printf("nnonter[%v] = %v\n", j, nontrst[j].name)
+ }
+ for j := 0; j < nprod; j++ {
+ fmt.Printf("prdptr[%v][0] = %v+NTBASE\n", j, prdptr[j][0]-NTBASE)
+ }
+ }
+
+ fatfl = 0 // make undefined symbols nonfatal
+ for i := 0; i <= nnonter; i++ {
+ n := 0
+ c := i + NTBASE
+ for j := 0; j < nprod; j++ {
+ if prdptr[j][0] == c {
+ curres[n] = prdptr[j][1:]
+ n++
+ }
+ }
+ if n == 0 {
+ errorf("nonterminal %v not defined", nontrst[i].name)
+ continue
+ }
+ pres[i] = make([][]int, n)
+ copy(pres[i], curres)
+ }
+ fatfl = 1
+ if nerrors != 0 {
+ summary()
+ exit(1)
+ }
+}
+
+//
+// mark nonterminals which derive the empty string
+// also, look for nonterminals which don't derive any token strings
+//
+func cempty() {
+ var i, p, np int
+ var prd []int
+
+ pempty = make([]int, nnonter+1)
+
+ // first, use the array pempty to detect productions that can never be reduced
+ // set pempty to WHONOWS
+ aryfil(pempty, nnonter+1, WHOKNOWS)
+
+ // now, look at productions, marking nonterminals which derive something
+more:
+ for {
+ for i = 0; i < nprod; i++ {
+ prd = prdptr[i]
+ if pempty[prd[0]-NTBASE] != 0 {
+ continue
+ }
+ np = len(prd) - 1
+ for p = 1; p < np; p++ {
+ if prd[p] >= NTBASE && pempty[prd[p]-NTBASE] == WHOKNOWS {
+ break
+ }
+ }
+ // production can be derived
+ if p == np {
+ pempty[prd[0]-NTBASE] = OK
+ continue more
+ }
+ }
+ break
+ }
+
+ // now, look at the nonterminals, to see if they are all OK
+ for i = 0; i <= nnonter; i++ {
+ // the added production rises or falls as the start symbol ...
+ if i == 0 {
+ continue
+ }
+ if pempty[i] != OK {
+ fatfl = 0
+ errorf("nonterminal " + nontrst[i].name + " never derives any token string")
+ }
+ }
+
+ if nerrors != 0 {
+ summary()
+ exit(1)
+ }
+
+ // now, compute the pempty array, to see which nonterminals derive the empty string
+ // set pempty to WHOKNOWS
+ aryfil(pempty, nnonter+1, WHOKNOWS)
+
+ // loop as long as we keep finding empty nonterminals
+
+again:
+ for {
+ next:
+ for i = 1; i < nprod; i++ {
+ // not known to be empty
+ prd = prdptr[i]
+ if pempty[prd[0]-NTBASE] != WHOKNOWS {
+ continue
+ }
+ np = len(prd) - 1
+ for p = 1; p < np; p++ {
+ if prd[p] < NTBASE || pempty[prd[p]-NTBASE] != EMPTY {
+ continue next
+ }
+ }
+
+ // we have a nontrivially empty nonterminal
+ pempty[prd[0]-NTBASE] = EMPTY
+
+ // got one ... try for another
+ continue again
+ }
+ return
+ }
+}
+
+//
+// compute an array with the first of nonterminals
+//
+func cpfir() {
+ var s, n, p, np, ch, i int
+ var curres [][]int
+ var prd []int
+
+ wsets = make([]Wset, nnonter+WSETINC)
+ pfirst = make([]Lkset, nnonter+1)
+ for i = 0; i <= nnonter; i++ {
+ wsets[i].ws = mkset()
+ pfirst[i] = mkset()
+ curres = pres[i]
+ n = len(curres)
+
+ // initially fill the sets
+ for s = 0; s < n; s++ {
+ prd = curres[s]
+ np = len(prd) - 1
+ for p = 0; p < np; p++ {
+ ch = prd[p]
+ if ch < NTBASE {
+ setbit(pfirst[i], ch)
+ break
+ }
+ if pempty[ch-NTBASE] == 0 {
+ break
+ }
+ }
+ }
+ }
+
+ // now, reflect transitivity
+ changes := 1
+ for changes != 0 {
+ changes = 0
+ for i = 0; i <= nnonter; i++ {
+ curres = pres[i]
+ n = len(curres)
+ for s = 0; s < n; s++ {
+ prd = curres[s]
+ np = len(prd) - 1
+ for p = 0; p < np; p++ {
+ ch = prd[p] - NTBASE
+ if ch < 0 {
+ break
+ }
+ changes |= setunion(pfirst[i], pfirst[ch])
+ if pempty[ch] == 0 {
+ break
+ }
+ }
+ }
+ }
+ }
+
+ if indebug == 0 {
+ return
+ }
+ if foutput != nil {
+ for i = 0; i <= nnonter; i++ {
+ fmt.Fprintf(foutput, "\n%v: %v %v\n",
+ nontrst[i].name, pfirst[i], pempty[i])
+ }
+ }
+}
+
+//
+// generate the states
+//
+func stagen() {
+ // initialize
+ nstate = 0
+ tstates = make([]int, ntokens+1) // states generated by terminal gotos
+ ntstates = make([]int, nnonter+1) // states generated by nonterminal gotos
+ amem = make([]int, ACTSIZE)
+ memp = 0
+
+ clset = mkset()
+ pstate[0] = 0
+ pstate[1] = 0
+ aryfil(clset, tbitset, 0)
+ putitem(Pitem{prdptr[0], 0, 0, 0}, clset)
+ tystate[0] = MUSTDO
+ nstate = 1
+ pstate[2] = pstate[1]
+
+ //
+ // now, the main state generation loop
+ // first pass generates all of the states
+ // later passes fix up lookahead
+ // could be sped up a lot by remembering
+ // results of the first pass rather than recomputing
+ //
+ first := 1
+ for more := 1; more != 0; first = 0 {
+ more = 0
+ for i := 0; i < nstate; i++ {
+ if tystate[i] != MUSTDO {
+ continue
+ }
+
+ tystate[i] = DONE
+ aryfil(temp1, nnonter+1, 0)
+
+ // take state i, close it, and do gotos
+ closure(i)
+
+ // generate goto's
+ for p := 0; p < cwp; p++ {
+ pi := wsets[p]
+ if pi.flag != 0 {
+ continue
+ }
+ wsets[p].flag = 1
+ c := pi.pitem.first
+ if c <= 1 {
+ if pstate[i+1]-pstate[i] <= p {
+ tystate[i] = MUSTLOOKAHEAD
+ }
+ continue
+ }
+
+ // do a goto on c
+ putitem(wsets[p].pitem, wsets[p].ws)
+ for q := p + 1; q < cwp; q++ {
+ // this item contributes to the goto
+ if c == wsets[q].pitem.first {
+ putitem(wsets[q].pitem, wsets[q].ws)
+ wsets[q].flag = 1
+ }
+ }
+
+ if c < NTBASE {
+ state(c) // register new state
+ } else {
+ temp1[c-NTBASE] = state(c)
+ }
+ }
+
+ if gsdebug != 0 && foutput != nil {
+ fmt.Fprintf(foutput, "%v: ", i)
+ for j := 0; j <= nnonter; j++ {
+ if temp1[j] != 0 {
+ fmt.Fprintf(foutput, "%v %v,", nontrst[j].name, temp1[j])
+ }
+ }
+ fmt.Fprintf(foutput, "\n")
+ }
+
+ if first != 0 {
+ indgo[i] = apack(temp1[1:], nnonter-1) - 1
+ }
+
+ more++
+ }
+ }
+}
+
+//
+// generate the closure of state i
+//
+func closure(i int) {
+ zzclose++
+
+ // first, copy kernel of state i to wsets
+ cwp = 0
+ q := pstate[i+1]
+ for p := pstate[i]; p < q; p++ {
+ wsets[cwp].pitem = statemem[p].pitem
+ wsets[cwp].flag = 1 // this item must get closed
+ copy(wsets[cwp].ws, statemem[p].look)
+ cwp++
+ }
+
+ // now, go through the loop, closing each item
+ work := 1
+ for work != 0 {
+ work = 0
+ for u := 0; u < cwp; u++ {
+ if wsets[u].flag == 0 {
+ continue
+ }
+
+ // dot is before c
+ c := wsets[u].pitem.first
+ if c < NTBASE {
+ wsets[u].flag = 0
+ // only interesting case is where . is before nonterminal
+ continue
+ }
+
+ // compute the lookahead
+ aryfil(clset, tbitset, 0)
+
+ // find items involving c
+ for v := u; v < cwp; v++ {
+ if wsets[v].flag != 1 || wsets[v].pitem.first != c {
+ continue
+ }
+ pi := wsets[v].pitem.prod
+ ipi := wsets[v].pitem.off + 1
+
+ wsets[v].flag = 0
+ if nolook != 0 {
+ continue
+ }
+
+ ch := pi[ipi]
+ ipi++
+ for ch > 0 {
+ // terminal symbol
+ if ch < NTBASE {
+ setbit(clset, ch)
+ break
+ }
+
+ // nonterminal symbol
+ setunion(clset, pfirst[ch-NTBASE])
+ if pempty[ch-NTBASE] == 0 {
+ break
+ }
+ ch = pi[ipi]
+ ipi++
+ }
+ if ch <= 0 {
+ setunion(clset, wsets[v].ws)
+ }
+ }
+
+ //
+ // now loop over productions derived from c
+ //
+ curres := pres[c-NTBASE]
+ n := len(curres)
+
+ nexts:
+ // initially fill the sets
+ for s := 0; s < n; s++ {
+ prd := curres[s]
+
+ //
+ // put these items into the closure
+ // is the item there
+ //
+ for v := 0; v < cwp; v++ {
+ // yes, it is there
+ if wsets[v].pitem.off == 0 &&
+ aryeq(wsets[v].pitem.prod, prd) != 0 {
+ if nolook == 0 &&
+ setunion(wsets[v].ws, clset) != 0 {
+ wsets[v].flag = 1
+ work = 1
+ }
+ continue nexts
+ }
+ }
+
+ // not there; make a new entry
+ if cwp >= len(wsets) {
+ awsets := make([]Wset, cwp+WSETINC)
+ copy(awsets, wsets)
+ wsets = awsets
+ }
+ wsets[cwp].pitem = Pitem{prd, 0, prd[0], -prd[len(prd)-1]}
+ wsets[cwp].flag = 1
+ wsets[cwp].ws = mkset()
+ if nolook == 0 {
+ work = 1
+ copy(wsets[cwp].ws, clset)
+ }
+ cwp++
+ }
+ }
+ }
+
+ // have computed closure; flags are reset; return
+ if cldebug != 0 && foutput != nil {
+ fmt.Fprintf(foutput, "\nState %v, nolook = %v\n", i, nolook)
+ for u := 0; u < cwp; u++ {
+ if wsets[u].flag != 0 {
+ fmt.Fprintf(foutput, "flag set\n")
+ }
+ wsets[u].flag = 0
+ fmt.Fprintf(foutput, "\t%v", writem(wsets[u].pitem))
+ prlook(wsets[u].ws)
+ fmt.Fprintf(foutput, "\n")
+ }
+ }
+}
+
+//
+// sorts last state,and sees if it equals earlier ones. returns state number
+//
+func state(c int) int {
+ zzstate++
+ p1 := pstate[nstate]
+ p2 := pstate[nstate+1]
+ if p1 == p2 {
+ return 0 // null state
+ }
+
+ // sort the items
+ var k, l int
+ for k = p1 + 1; k < p2; k++ { // make k the biggest
+ for l = k; l > p1; l-- {
+ if statemem[l].pitem.prodno < statemem[l-1].pitem.prodno ||
+ statemem[l].pitem.prodno == statemem[l-1].pitem.prodno &&
+ statemem[l].pitem.off < statemem[l-1].pitem.off {
+ s := statemem[l]
+ statemem[l] = statemem[l-1]
+ statemem[l-1] = s
+ } else {
+ break
+ }
+ }
+ }
+
+ size1 := p2 - p1 // size of state
+
+ var i int
+ if c >= NTBASE {
+ i = ntstates[c-NTBASE]
+ } else {
+ i = tstates[c]
+ }
+
+look:
+ for ; i != 0; i = mstates[i] {
+ // get ith state
+ q1 := pstate[i]
+ q2 := pstate[i+1]
+ size2 := q2 - q1
+ if size1 != size2 {
+ continue
+ }
+ k = p1
+ for l = q1; l < q2; l++ {
+ if aryeq(statemem[l].pitem.prod, statemem[k].pitem.prod) == 0 ||
+ statemem[l].pitem.off != statemem[k].pitem.off {
+ continue look
+ }
+ k++
+ }
+
+ // found it
+ pstate[nstate+1] = pstate[nstate] // delete last state
+
+ // fix up lookaheads
+ if nolook != 0 {
+ return i
+ }
+ k = p1
+ for l = q1; l < q2; l++ {
+ if setunion(statemem[l].look, statemem[k].look) != 0 {
+ tystate[i] = MUSTDO
+ }
+ k++
+ }
+ return i
+ }
+
+ // state is new
+ zznewstate++
+ if nolook != 0 {
+ errorf("yacc state/nolook error")
+ }
+ pstate[nstate+2] = p2
+ if nstate+1 >= NSTATES {
+ errorf("too many states")
+ }
+ if c >= NTBASE {
+ mstates[nstate] = ntstates[c-NTBASE]
+ ntstates[c-NTBASE] = nstate
+ } else {
+ mstates[nstate] = tstates[c]
+ tstates[c] = nstate
+ }
+ tystate[nstate] = MUSTDO
+ nstate++
+ return nstate - 1
+}
+
+func putitem(p Pitem, set Lkset) {
+ p.off++
+ p.first = p.prod[p.off]
+
+ if pidebug != 0 && foutput != nil {
+ fmt.Fprintf(foutput, "putitem(%v), state %v\n", writem(p), nstate)
+ }
+ j := pstate[nstate+1]
+ if j >= len(statemem) {
+ asm := make([]Item, j+STATEINC)
+ copy(asm, statemem)
+ statemem = asm
+ }
+ statemem[j].pitem = p
+ if nolook == 0 {
+ s := mkset()
+ copy(s, set)
+ statemem[j].look = s
+ }
+ j++
+ pstate[nstate+1] = j
+}
+
+//
+// creates output string for item pointed to by pp
+//
+func writem(pp Pitem) string {
+ var i int
+
+ p := pp.prod
+ q := chcopy(nontrst[prdptr[pp.prodno][0]-NTBASE].name) + ": "
+ npi := pp.off
+
+ pi := aryeq(p, prdptr[pp.prodno])
+
+ for {
+ c := ' '
+ if pi == npi {
+ c = '.'
+ }
+ q += string(c)
+
+ i = p[pi]
+ pi++
+ if i <= 0 {
+ break
+ }
+ q += chcopy(symnam(i))
+ }
+
+ // an item calling for a reduction
+ i = p[npi]
+ if i < 0 {
+ q += fmt.Sprintf(" (%v)", -i)
+ }
+
+ return q
+}
+
+//
+// pack state i from temp1 into amem
+//
+func apack(p []int, n int) int {
+ //
+ // we don't need to worry about checking because
+ // we will only look at entries known to be there...
+ // eliminate leading and trailing 0's
+ //
+ off := 0
+ pp := 0
+ for ; pp <= n && p[pp] == 0; pp++ {
+ off--
+ }
+
+ // no actions
+ if pp > n {
+ return 0
+ }
+ for ; n > pp && p[n] == 0; n-- {
+ }
+ p = p[pp : n+1]
+
+ // now, find a place for the elements from p to q, inclusive
+ r := len(amem) - len(p)
+
+nextk:
+ for rr := 0; rr <= r; rr++ {
+ qq := rr
+ for pp = 0; pp < len(p); pp++ {
+ if p[pp] != 0 {
+ if p[pp] != amem[qq] && amem[qq] != 0 {
+ continue nextk
+ }
+ }
+ qq++
+ }
+
+ // we have found an acceptable k
+ if pkdebug != 0 && foutput != nil {
+ fmt.Fprintf(foutput, "off = %v, k = %v\n", off+rr, rr)
+ }
+ qq = rr
+ for pp = 0; pp < len(p); pp++ {
+ if p[pp] != 0 {
+ if qq > memp {
+ memp = qq
+ }
+ amem[qq] = p[pp]
+ }
+ qq++
+ }
+ if pkdebug != 0 && foutput != nil {
+ for pp = 0; pp <= memp; pp += 10 {
+ fmt.Fprintf(foutput, "\n")
+ for qq = pp; qq <= pp+9; qq++ {
+ fmt.Fprintf(foutput, "%v ", amem[qq])
+ }
+ fmt.Fprintf(foutput, "\n")
+ }
+ }
+ return off + rr
+ }
+ errorf("no space in action table")
+ return 0
+}
+
+//
+// print the output for the states
+//
+func output() {
+ var c, u, v int
+
+ if !lflag {
+ fmt.Fprintf(ftable, "\n//line yacctab:1")
+ }
+ fmt.Fprintf(ftable, "\nvar %sExca = [...]int{\n", prefix)
+
+ if len(errors) > 0 {
+ stateTable = make([]Row, nstate)
+ }
+
+ noset := mkset()
+
+ // output the stuff for state i
+ for i := 0; i < nstate; i++ {
+ nolook = 0
+ if tystate[i] != MUSTLOOKAHEAD {
+ nolook = 1
+ }
+ closure(i)
+
+ // output actions
+ nolook = 1
+ aryfil(temp1, ntokens+nnonter+1, 0)
+ for u = 0; u < cwp; u++ {
+ c = wsets[u].pitem.first
+ if c > 1 && c < NTBASE && temp1[c] == 0 {
+ for v = u; v < cwp; v++ {
+ if c == wsets[v].pitem.first {
+ putitem(wsets[v].pitem, noset)
+ }
+ }
+ temp1[c] = state(c)
+ } else if c > NTBASE {
+ c -= NTBASE
+ if temp1[c+ntokens] == 0 {
+ temp1[c+ntokens] = amem[indgo[i]+c]
+ }
+ }
+ }
+ if i == 1 {
+ temp1[1] = ACCEPTCODE
+ }
+
+ // now, we have the shifts; look at the reductions
+ lastred = 0
+ for u = 0; u < cwp; u++ {
+ c = wsets[u].pitem.first
+
+ // reduction
+ if c > 0 {
+ continue
+ }
+ lastred = -c
+ us := wsets[u].ws
+ for k := 0; k <= ntokens; k++ {
+ if bitset(us, k) == 0 {
+ continue
+ }
+ if temp1[k] == 0 {
+ temp1[k] = c
+ } else if temp1[k] < 0 { // reduce/reduce conflict
+ if foutput != nil {
+ fmt.Fprintf(foutput,
+ "\n %v: reduce/reduce conflict (red'ns "+
+ "%v and %v) on %v",
+ i, -temp1[k], lastred, symnam(k))
+ }
+ if -temp1[k] > lastred {
+ temp1[k] = -lastred
+ }
+ zzrrconf++
+ } else {
+ // potential shift/reduce conflict
+ precftn(lastred, k, i)
+ }
+ }
+ }
+ wract(i)
+ }
+
+ fmt.Fprintf(ftable, "}\n")
+ ftable.WriteRune('\n')
+ fmt.Fprintf(ftable, "const %sPrivate = %v\n", prefix, PRIVATE)
+}
+
+//
+// decide a shift/reduce conflict by precedence.
+// r is a rule number, t a token number
+// the conflict is in state s
+// temp1[t] is changed to reflect the action
+//
+func precftn(r, t, s int) {
+ var action int
+
+ lp := levprd[r]
+ lt := toklev[t]
+ if PLEVEL(lt) == 0 || PLEVEL(lp) == 0 {
+ // conflict
+ if foutput != nil {
+ fmt.Fprintf(foutput,
+ "\n%v: shift/reduce conflict (shift %v(%v), red'n %v(%v)) on %v",
+ s, temp1[t], PLEVEL(lt), r, PLEVEL(lp), symnam(t))
+ }
+ zzsrconf++
+ return
+ }
+ if PLEVEL(lt) == PLEVEL(lp) {
+ action = ASSOC(lt)
+ } else if PLEVEL(lt) > PLEVEL(lp) {
+ action = RASC // shift
+ } else {
+ action = LASC
+ } // reduce
+ switch action {
+ case BASC: // error action
+ temp1[t] = ERRCODE
+ case LASC: // reduce
+ temp1[t] = -r
+ }
+}
+
+//
+// output state i
+// temp1 has the actions, lastred the default
+//
+func wract(i int) {
+ var p, p1 int
+
+ // find the best choice for lastred
+ lastred = 0
+ ntimes := 0
+ for j := 0; j <= ntokens; j++ {
+ if temp1[j] >= 0 {
+ continue
+ }
+ if temp1[j]+lastred == 0 {
+ continue
+ }
+ // count the number of appearances of temp1[j]
+ count := 0
+ tred := -temp1[j]
+ levprd[tred] |= REDFLAG
+ for p = 0; p <= ntokens; p++ {
+ if temp1[p]+tred == 0 {
+ count++
+ }
+ }
+ if count > ntimes {
+ lastred = tred
+ ntimes = count
+ }
+ }
+
+ //
+ // for error recovery, arrange that, if there is a shift on the
+ // error recovery token, `error', that the default be the error action
+ //
+ if temp1[2] > 0 {
+ lastred = 0
+ }
+
+ // clear out entries in temp1 which equal lastred
+ // count entries in optst table
+ n := 0
+ for p = 0; p <= ntokens; p++ {
+ p1 = temp1[p]
+ if p1+lastred == 0 {
+ temp1[p] = 0
+ p1 = 0
+ }
+ if p1 > 0 && p1 != ACCEPTCODE && p1 != ERRCODE {
+ n++
+ }
+ }
+
+ wrstate(i)
+ defact[i] = lastred
+ flag := 0
+ os := make([]int, n*2)
+ n = 0
+ for p = 0; p <= ntokens; p++ {
+ p1 = temp1[p]
+ if p1 != 0 {
+ if p1 < 0 {
+ p1 = -p1
+ } else if p1 == ACCEPTCODE {
+ p1 = -1
+ } else if p1 == ERRCODE {
+ p1 = 0
+ } else {
+ os[n] = p
+ n++
+ os[n] = p1
+ n++
+ zzacent++
+ continue
+ }
+ if flag == 0 {
+ fmt.Fprintf(ftable, "\t-1, %v,\n", i)
+ }
+ flag++
+ fmt.Fprintf(ftable, "\t%v, %v,\n", p, p1)
+ zzexcp++
+ }
+ }
+ if flag != 0 {
+ defact[i] = -2
+ fmt.Fprintf(ftable, "\t-2, %v,\n", lastred)
+ }
+ optst[i] = os
+}
+
+//
+// writes state i
+//
+func wrstate(i int) {
+ var j0, j1, u int
+ var pp, qq int
+
+ if len(errors) > 0 {
+ actions := append([]int(nil), temp1...)
+ defaultAction := ERRCODE
+ if lastred != 0 {
+ defaultAction = -lastred
+ }
+ stateTable[i] = Row{actions, defaultAction}
+ }
+
+ if foutput == nil {
+ return
+ }
+ fmt.Fprintf(foutput, "\nstate %v\n", i)
+ qq = pstate[i+1]
+ for pp = pstate[i]; pp < qq; pp++ {
+ fmt.Fprintf(foutput, "\t%v\n", writem(statemem[pp].pitem))
+ }
+ if tystate[i] == MUSTLOOKAHEAD {
+ // print out empty productions in closure
+ for u = pstate[i+1] - pstate[i]; u < cwp; u++ {
+ if wsets[u].pitem.first < 0 {
+ fmt.Fprintf(foutput, "\t%v\n", writem(wsets[u].pitem))
+ }
+ }
+ }
+
+ // check for state equal to another
+ for j0 = 0; j0 <= ntokens; j0++ {
+ j1 = temp1[j0]
+ if j1 != 0 {
+ fmt.Fprintf(foutput, "\n\t%v ", symnam(j0))
+
+ // shift, error, or accept
+ if j1 > 0 {
+ if j1 == ACCEPTCODE {
+ fmt.Fprintf(foutput, "accept")
+ } else if j1 == ERRCODE {
+ fmt.Fprintf(foutput, "error")
+ } else {
+ fmt.Fprintf(foutput, "shift %v", j1)
+ }
+ } else {
+ fmt.Fprintf(foutput, "reduce %v (src line %v)", -j1, rlines[-j1])
+ }
+ }
+ }
+
+ // output the final production
+ if lastred != 0 {
+ fmt.Fprintf(foutput, "\n\t. reduce %v (src line %v)\n\n",
+ lastred, rlines[lastred])
+ } else {
+ fmt.Fprintf(foutput, "\n\t. error\n\n")
+ }
+
+ // now, output nonterminal actions
+ j1 = ntokens
+ for j0 = 1; j0 <= nnonter; j0++ {
+ j1++
+ if temp1[j1] != 0 {
+ fmt.Fprintf(foutput, "\t%v goto %v\n", symnam(j0+NTBASE), temp1[j1])
+ }
+ }
+}
+
+//
+// output the gotos for the nontermninals
+//
+func go2out() {
+ for i := 1; i <= nnonter; i++ {
+ go2gen(i)
+
+ // find the best one to make default
+ best := -1
+ times := 0
+
+ // is j the most frequent
+ for j := 0; j < nstate; j++ {
+ if tystate[j] == 0 {
+ continue
+ }
+ if tystate[j] == best {
+ continue
+ }
+
+ // is tystate[j] the most frequent
+ count := 0
+ cbest := tystate[j]
+ for k := j; k < nstate; k++ {
+ if tystate[k] == cbest {
+ count++
+ }
+ }
+ if count > times {
+ best = cbest
+ times = count
+ }
+ }
+
+ // best is now the default entry
+ zzgobest += times - 1
+ n := 0
+ for j := 0; j < nstate; j++ {
+ if tystate[j] != 0 && tystate[j] != best {
+ n++
+ }
+ }
+ goent := make([]int, 2*n+1)
+ n = 0
+ for j := 0; j < nstate; j++ {
+ if tystate[j] != 0 && tystate[j] != best {
+ goent[n] = j
+ n++
+ goent[n] = tystate[j]
+ n++
+ zzgoent++
+ }
+ }
+
+ // now, the default
+ if best == -1 {
+ best = 0
+ }
+
+ zzgoent++
+ goent[n] = best
+ yypgo[i] = goent
+ }
+}
+
+//
+// output the gotos for nonterminal c
+//
+func go2gen(c int) {
+ var i, cc, p, q int
+
+ // first, find nonterminals with gotos on c
+ aryfil(temp1, nnonter+1, 0)
+ temp1[c] = 1
+ work := 1
+ for work != 0 {
+ work = 0
+ for i = 0; i < nprod; i++ {
+ // cc is a nonterminal with a goto on c
+ cc = prdptr[i][1] - NTBASE
+ if cc >= 0 && temp1[cc] != 0 {
+ // thus, the left side of production i does too
+ cc = prdptr[i][0] - NTBASE
+ if temp1[cc] == 0 {
+ work = 1
+ temp1[cc] = 1
+ }
+ }
+ }
+ }
+
+ // now, we have temp1[c] = 1 if a goto on c in closure of cc
+ if g2debug != 0 && foutput != nil {
+ fmt.Fprintf(foutput, "%v: gotos on ", nontrst[c].name)
+ for i = 0; i <= nnonter; i++ {
+ if temp1[i] != 0 {
+ fmt.Fprintf(foutput, "%v ", nontrst[i].name)
+ }
+ }
+ fmt.Fprintf(foutput, "\n")
+ }
+
+ // now, go through and put gotos into tystate
+ aryfil(tystate, nstate, 0)
+ for i = 0; i < nstate; i++ {
+ q = pstate[i+1]
+ for p = pstate[i]; p < q; p++ {
+ cc = statemem[p].pitem.first
+ if cc >= NTBASE {
+ // goto on c is possible
+ if temp1[cc-NTBASE] != 0 {
+ tystate[i] = amem[indgo[i]+c]
+ break
+ }
+ }
+ }
+ }
+}
+
+//
+// in order to free up the mem and amem arrays for the optimizer,
+// and still be able to output yyr1, etc., after the sizes of
+// the action array is known, we hide the nonterminals
+// derived by productions in levprd.
+//
+func hideprod() {
+ nred := 0
+ levprd[0] = 0
+ for i := 1; i < nprod; i++ {
+ if (levprd[i] & REDFLAG) == 0 {
+ if foutput != nil {
+ fmt.Fprintf(foutput, "Rule not reduced: %v\n",
+ writem(Pitem{prdptr[i], 0, 0, i}))
+ }
+ fmt.Printf("rule %v never reduced\n", writem(Pitem{prdptr[i], 0, 0, i}))
+ nred++
+ }
+ levprd[i] = prdptr[i][0] - NTBASE
+ }
+ if nred != 0 {
+ fmt.Printf("%v rules never reduced\n", nred)
+ }
+}
+
+func callopt() {
+ var j, k, p, q, i int
+ var v []int
+
+ pgo = make([]int, nnonter+1)
+ pgo[0] = 0
+ maxoff = 0
+ maxspr = 0
+ for i = 0; i < nstate; i++ {
+ k = 32000
+ j = 0
+ v = optst[i]
+ q = len(v)
+ for p = 0; p < q; p += 2 {
+ if v[p] > j {
+ j = v[p]
+ }
+ if v[p] < k {
+ k = v[p]
+ }
+ }
+
+ // nontrivial situation
+ if k <= j {
+ // j is now the range
+ // j -= k; // call scj
+ if k > maxoff {
+ maxoff = k
+ }
+ }
+ tystate[i] = q + 2*j
+ if j > maxspr {
+ maxspr = j
+ }
+ }
+
+ // initialize ggreed table
+ ggreed = make([]int, nnonter+1)
+ for i = 1; i <= nnonter; i++ {
+ ggreed[i] = 1
+ j = 0
+
+ // minimum entry index is always 0
+ v = yypgo[i]
+ q = len(v) - 1
+ for p = 0; p < q; p += 2 {
+ ggreed[i] += 2
+ if v[p] > j {
+ j = v[p]
+ }
+ }
+ ggreed[i] = ggreed[i] + 2*j
+ if j > maxoff {
+ maxoff = j
+ }
+ }
+
+ // now, prepare to put the shift actions into the amem array
+ for i = 0; i < ACTSIZE; i++ {
+ amem[i] = 0
+ }
+ maxa = 0
+ for i = 0; i < nstate; i++ {
+ if tystate[i] == 0 && adb > 1 {
+ fmt.Fprintf(ftable, "State %v: null\n", i)
+ }
+ indgo[i] = yyFlag
+ }
+
+ i = nxti()
+ for i != NOMORE {
+ if i >= 0 {
+ stin(i)
+ } else {
+ gin(-i)
+ }
+ i = nxti()
+ }
+
+ // print amem array
+ if adb > 2 {
+ for p = 0; p <= maxa; p += 10 {
+ fmt.Fprintf(ftable, "%v ", p)
+ for i = 0; i < 10; i++ {
+ fmt.Fprintf(ftable, "%v ", amem[p+i])
+ }
+ ftable.WriteRune('\n')
+ }
+ }
+
+ aoutput()
+ osummary()
+}
+
+//
+// finds the next i
+//
+func nxti() int {
+ max := 0
+ maxi := 0
+ for i := 1; i <= nnonter; i++ {
+ if ggreed[i] >= max {
+ max = ggreed[i]
+ maxi = -i
+ }
+ }
+ for i := 0; i < nstate; i++ {
+ if tystate[i] >= max {
+ max = tystate[i]
+ maxi = i
+ }
+ }
+ if max == 0 {
+ return NOMORE
+ }
+ return maxi
+}
+
+func gin(i int) {
+ var s int
+
+ // enter gotos on nonterminal i into array amem
+ ggreed[i] = 0
+
+ q := yypgo[i]
+ nq := len(q) - 1
+
+ // now, find amem place for it
+nextgp:
+ for p := 0; p < ACTSIZE; p++ {
+ if amem[p] != 0 {
+ continue
+ }
+ for r := 0; r < nq; r += 2 {
+ s = p + q[r] + 1
+ if s > maxa {
+ maxa = s
+ if maxa >= ACTSIZE {
+ errorf("a array overflow")
+ }
+ }
+ if amem[s] != 0 {
+ continue nextgp
+ }
+ }
+
+ // we have found amem spot
+ amem[p] = q[nq]
+ if p > maxa {
+ maxa = p
+ }
+ for r := 0; r < nq; r += 2 {
+ s = p + q[r] + 1
+ amem[s] = q[r+1]
+ }
+ pgo[i] = p
+ if adb > 1 {
+ fmt.Fprintf(ftable, "Nonterminal %v, entry at %v\n", i, pgo[i])
+ }
+ return
+ }
+ errorf("cannot place goto %v\n", i)
+}
+
+func stin(i int) {
+ var s int
+
+ tystate[i] = 0
+
+ // enter state i into the amem array
+ q := optst[i]
+ nq := len(q)
+
+nextn:
+ // find an acceptable place
+ for n := -maxoff; n < ACTSIZE; n++ {
+ flag := 0
+ for r := 0; r < nq; r += 2 {
+ s = q[r] + n
+ if s < 0 || s > ACTSIZE {
+ continue nextn
+ }
+ if amem[s] == 0 {
+ flag++
+ } else if amem[s] != q[r+1] {
+ continue nextn
+ }
+ }
+
+ // check the position equals another only if the states are identical
+ for j := 0; j < nstate; j++ {
+ if indgo[j] == n {
+
+ // we have some disagreement
+ if flag != 0 {
+ continue nextn
+ }
+ if nq == len(optst[j]) {
+
+ // states are equal
+ indgo[i] = n
+ if adb > 1 {
+ fmt.Fprintf(ftable, "State %v: entry at"+
+ "%v equals state %v\n",
+ i, n, j)
+ }
+ return
+ }
+
+ // we have some disagreement
+ continue nextn
+ }
+ }
+
+ for r := 0; r < nq; r += 2 {
+ s = q[r] + n
+ if s > maxa {
+ maxa = s
+ }
+ if amem[s] != 0 && amem[s] != q[r+1] {
+ errorf("clobber of a array, pos'n %v, by %v", s, q[r+1])
+ }
+ amem[s] = q[r+1]
+ }
+ indgo[i] = n
+ if adb > 1 {
+ fmt.Fprintf(ftable, "State %v: entry at %v\n", i, indgo[i])
+ }
+ return
+ }
+ errorf("Error; failure to place state %v", i)
+}
+
+//
+// this version is for limbo
+// write out the optimized parser
+//
+func aoutput() {
+ ftable.WriteRune('\n')
+ fmt.Fprintf(ftable, "const %sLast = %v\n", prefix, maxa+1)
+ arout("Act", amem, maxa+1)
+ arout("Pact", indgo, nstate)
+ arout("Pgo", pgo, nnonter+1)
+}
+
+//
+// put out other arrays, copy the parsers
+//
+func others() {
+ var i, j int
+
+ arout("R1", levprd, nprod)
+ aryfil(temp1, nprod, 0)
+
+ //
+ //yyr2 is the number of rules for each production
+ //
+ for i = 1; i < nprod; i++ {
+ temp1[i] = len(prdptr[i]) - 2
+ }
+ arout("R2", temp1, nprod)
+
+ aryfil(temp1, nstate, -1000)
+ for i = 0; i <= ntokens; i++ {
+ for j := tstates[i]; j != 0; j = mstates[j] {
+ temp1[j] = i
+ }
+ }
+ for i = 0; i <= nnonter; i++ {
+ for j = ntstates[i]; j != 0; j = mstates[j] {
+ temp1[j] = -i
+ }
+ }
+ arout("Chk", temp1, nstate)
+ arout("Def", defact, nstate)
+
+ // put out token translation tables
+ // table 1 has 0-256
+ aryfil(temp1, 256, 0)
+ c := 0
+ for i = 1; i <= ntokens; i++ {
+ j = tokset[i].value
+ if j >= 0 && j < 256 {
+ if temp1[j] != 0 {
+ fmt.Print("yacc bug -- cannot have 2 different Ts with same value\n")
+ fmt.Printf(" %s and %s\n", tokset[i].name, tokset[temp1[j]].name)
+ nerrors++
+ }
+ temp1[j] = i
+ if j > c {
+ c = j
+ }
+ }
+ }
+ for i = 0; i <= c; i++ {
+ if temp1[i] == 0 {
+ temp1[i] = YYLEXUNK
+ }
+ }
+ arout("Tok1", temp1, c+1)
+
+ // table 2 has PRIVATE-PRIVATE+256
+ aryfil(temp1, 256, 0)
+ c = 0
+ for i = 1; i <= ntokens; i++ {
+ j = tokset[i].value - PRIVATE
+ if j >= 0 && j < 256 {
+ if temp1[j] != 0 {
+ fmt.Print("yacc bug -- cannot have 2 different Ts with same value\n")
+ fmt.Printf(" %s and %s\n", tokset[i].name, tokset[temp1[j]].name)
+ nerrors++
+ }
+ temp1[j] = i
+ if j > c {
+ c = j
+ }
+ }
+ }
+ arout("Tok2", temp1, c+1)
+
+ // table 3 has everything else
+ ftable.WriteRune('\n')
+ fmt.Fprintf(ftable, "var %sTok3 = [...]int{\n\t", prefix)
+ c = 0
+ for i = 1; i <= ntokens; i++ {
+ j = tokset[i].value
+ if j >= 0 && j < 256 {
+ continue
+ }
+ if j >= PRIVATE && j < 256+PRIVATE {
+ continue
+ }
+
+ if c%5 != 0 {
+ ftable.WriteRune(' ')
+ }
+ fmt.Fprintf(ftable, "%d, %d,", j, i)
+ c++
+ if c%5 == 0 {
+ fmt.Fprint(ftable, "\n\t")
+ }
+ }
+ if c%5 != 0 {
+ ftable.WriteRune(' ')
+ }
+ fmt.Fprintf(ftable, "%d,\n}\n", 0)
+
+ // Custom error messages.
+ fmt.Fprintf(ftable, "\n")
+ fmt.Fprintf(ftable, "var %sErrorMessages = [...]struct {\n", prefix)
+ fmt.Fprintf(ftable, "\tstate int\n")
+ fmt.Fprintf(ftable, "\ttoken int\n")
+ fmt.Fprintf(ftable, "\tmsg string\n")
+ fmt.Fprintf(ftable, "}{\n")
+ for _, error := range errors {
+ lineno = error.lineno
+ state, token := runMachine(error.tokens)
+ fmt.Fprintf(ftable, "\t{%v, %v, %s},\n", state, token, error.msg)
+ }
+ fmt.Fprintf(ftable, "}\n")
+
+ // copy parser text
+ ch := getrune(finput)
+ for ch != EOF {
+ ftable.WriteRune(ch)
+ ch = getrune(finput)
+ }
+
+ // copy yaccpar
+ if !lflag {
+ fmt.Fprintf(ftable, "\n//line yaccpar:1\n")
+ }
+
+ parts := strings.SplitN(yaccpar, prefix+"run()", 2)
+ fmt.Fprintf(ftable, "%v", parts[0])
+ ftable.Write(fcode.Bytes())
+ fmt.Fprintf(ftable, "%v", parts[1])
+}
+
+func runMachine(tokens []string) (state, token int) {
+ var stack []int
+ i := 0
+ token = -1
+
+Loop:
+ if token < 0 {
+ token = chfind(2, tokens[i])
+ i++
+ }
+
+ row := stateTable[state]
+
+ c := token
+ if token >= NTBASE {
+ c = token - NTBASE + ntokens
+ }
+ action := row.actions[c]
+ if action == 0 {
+ action = row.defaultAction
+ }
+
+ switch {
+ case action == ACCEPTCODE:
+ errorf("tokens are accepted")
+ return
+ case action == ERRCODE:
+ if token >= NTBASE {
+ errorf("error at non-terminal token %s", symnam(token))
+ }
+ return
+ case action > 0:
+ // Shift to state action.
+ stack = append(stack, state)
+ state = action
+ token = -1
+ goto Loop
+ default:
+ // Reduce by production -action.
+ prod := prdptr[-action]
+ if rhsLen := len(prod) - 2; rhsLen > 0 {
+ n := len(stack) - rhsLen
+ state = stack[n]
+ stack = stack[:n]
+ }
+ if token >= 0 {
+ i--
+ }
+ token = prod[0]
+ goto Loop
+ }
+}
+
+func arout(s string, v []int, n int) {
+ s = prefix + s
+ ftable.WriteRune('\n')
+ fmt.Fprintf(ftable, "var %v = [...]int{", s)
+ for i := 0; i < n; i++ {
+ if i%10 == 0 {
+ fmt.Fprintf(ftable, "\n\t")
+ } else {
+ ftable.WriteRune(' ')
+ }
+ fmt.Fprintf(ftable, "%d,", v[i])
+ }
+ fmt.Fprintf(ftable, "\n}\n")
+}
+
+//
+// output the summary on y.output
+//
+func summary() {
+ if foutput != nil {
+ fmt.Fprintf(foutput, "\n%v terminals, %v nonterminals\n", ntokens, nnonter+1)
+ fmt.Fprintf(foutput, "%v grammar rules, %v/%v states\n", nprod, nstate, NSTATES)
+ fmt.Fprintf(foutput, "%v shift/reduce, %v reduce/reduce conflicts reported\n", zzsrconf, zzrrconf)
+ fmt.Fprintf(foutput, "%v working sets used\n", len(wsets))
+ fmt.Fprintf(foutput, "memory: parser %v/%v\n", memp, ACTSIZE)
+ fmt.Fprintf(foutput, "%v extra closures\n", zzclose-2*nstate)
+ fmt.Fprintf(foutput, "%v shift entries, %v exceptions\n", zzacent, zzexcp)
+ fmt.Fprintf(foutput, "%v goto entries\n", zzgoent)
+ fmt.Fprintf(foutput, "%v entries saved by goto default\n", zzgobest)
+ }
+ if zzsrconf != 0 || zzrrconf != 0 {
+ fmt.Printf("\nconflicts: ")
+ if zzsrconf != 0 {
+ fmt.Printf("%v shift/reduce", zzsrconf)
+ }
+ if zzsrconf != 0 && zzrrconf != 0 {
+ fmt.Printf(", ")
+ }
+ if zzrrconf != 0 {
+ fmt.Printf("%v reduce/reduce", zzrrconf)
+ }
+ fmt.Printf("\n")
+ }
+}
+
+//
+// write optimizer summary
+//
+func osummary() {
+ if foutput == nil {
+ return
+ }
+ i := 0
+ for p := maxa; p >= 0; p-- {
+ if amem[p] == 0 {
+ i++
+ }
+ }
+
+ fmt.Fprintf(foutput, "Optimizer space used: output %v/%v\n", maxa+1, ACTSIZE)
+ fmt.Fprintf(foutput, "%v table entries, %v zero\n", maxa+1, i)
+ fmt.Fprintf(foutput, "maximum spread: %v, maximum offset: %v\n", maxspr, maxoff)
+}
+
+//
+// copies and protects "'s in q
+//
+func chcopy(q string) string {
+ s := ""
+ i := 0
+ j := 0
+ for i = 0; i < len(q); i++ {
+ if q[i] == '"' {
+ s += q[j:i] + "\\"
+ j = i
+ }
+ }
+ return s + q[j:i]
+}
+
+func usage() {
+ fmt.Fprintf(stderr, "usage: yacc [-o output] [-v parsetable] input\n")
+ exit(1)
+}
+
+func bitset(set Lkset, bit int) int { return set[bit>>5] & (1 << uint(bit&31)) }
+
+func setbit(set Lkset, bit int) { set[bit>>5] |= (1 << uint(bit&31)) }
+
+func mkset() Lkset { return make([]int, tbitset) }
+
+//
+// set a to the union of a and b
+// return 1 if b is not a subset of a, 0 otherwise
+//
+func setunion(a, b []int) int {
+ sub := 0
+ for i := 0; i < tbitset; i++ {
+ x := a[i]
+ y := x | b[i]
+ a[i] = y
+ if y != x {
+ sub = 1
+ }
+ }
+ return sub
+}
+
+func prlook(p Lkset) {
+ if p == nil {
+ fmt.Fprintf(foutput, "\tNULL")
+ return
+ }
+ fmt.Fprintf(foutput, " { ")
+ for j := 0; j <= ntokens; j++ {
+ if bitset(p, j) != 0 {
+ fmt.Fprintf(foutput, "%v ", symnam(j))
+ }
+ }
+ fmt.Fprintf(foutput, "}")
+}
+
+//
+// utility routines
+//
+var peekrune rune
+
+func isdigit(c rune) bool { return c >= '0' && c <= '9' }
+
+func isword(c rune) bool {
+ return c >= 0xa0 || c == '_' || (c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z')
+}
+
+//
+// return 1 if 2 arrays are equal
+// return 0 if not equal
+//
+func aryeq(a []int, b []int) int {
+ n := len(a)
+ if len(b) != n {
+ return 0
+ }
+ for ll := 0; ll < n; ll++ {
+ if a[ll] != b[ll] {
+ return 0
+ }
+ }
+ return 1
+}
+
+func getrune(f *bufio.Reader) rune {
+ var r rune
+
+ if peekrune != 0 {
+ if peekrune == EOF {
+ return EOF
+ }
+ r = peekrune
+ peekrune = 0
+ return r
+ }
+
+ c, n, err := f.ReadRune()
+ if n == 0 {
+ return EOF
+ }
+ if err != nil {
+ errorf("read error: %v", err)
+ }
+ //fmt.Printf("rune = %v n=%v\n", string(c), n);
+ return c
+}
+
+func ungetrune(f *bufio.Reader, c rune) {
+ if f != finput {
+ panic("ungetc - not finput")
+ }
+ if peekrune != 0 {
+ panic("ungetc - 2nd unget")
+ }
+ peekrune = c
+}
+
+func open(s string) *bufio.Reader {
+ fi, err := os.Open(s)
+ if err != nil {
+ errorf("error opening %v: %v", s, err)
+ }
+ //fmt.Printf("open %v\n", s);
+ return bufio.NewReader(fi)
+}
+
+func create(s string) *bufio.Writer {
+ fo, err := os.Create(s)
+ if err != nil {
+ errorf("error creating %v: %v", s, err)
+ }
+ //fmt.Printf("create %v mode %v\n", s);
+ return bufio.NewWriter(fo)
+}
+
+//
+// write out error comment
+//
+func lerrorf(lineno int, s string, v ...interface{}) {
+ nerrors++
+ fmt.Fprintf(stderr, s, v...)
+ fmt.Fprintf(stderr, ": %v:%v\n", infile, lineno)
+ if fatfl != 0 {
+ summary()
+ exit(1)
+ }
+}
+
+func errorf(s string, v ...interface{}) {
+ lerrorf(lineno, s, v...)
+}
+
+func exit(status int) {
+ if ftable != nil {
+ ftable.Flush()
+ ftable = nil
+ gofmt()
+ }
+ if foutput != nil {
+ foutput.Flush()
+ foutput = nil
+ }
+ if stderr != nil {
+ stderr.Flush()
+ stderr = nil
+ }
+ os.Exit(status)
+}
+
+func gofmt() {
+ src, err := ioutil.ReadFile(oflag)
+ if err != nil {
+ return
+ }
+ src, err = format.Source(src)
+ if err != nil {
+ return
+ }
+ ioutil.WriteFile(oflag, src, 0666)
+}
+
+var yaccpar string // will be processed version of yaccpartext: s/$$/prefix/g
+var yaccpartext = `
+/* parser for yacc output */
+
+func $$Iaddr(v interface{}) __yyunsafe__.Pointer {
+ type h struct {
+ t __yyunsafe__.Pointer
+ p __yyunsafe__.Pointer
+ }
+ return (*h)(__yyunsafe__.Pointer(&v)).p
+}
+
+var (
+ $$Debug = 0
+ $$ErrorVerbose = false
+)
+
+type $$Lexer interface {
+ Lex(lval *$$SymType) int
+ Error(s string)
+}
+
+type $$Parser interface {
+ Parse($$Lexer) int
+ Lookahead() int
+}
+
+type $$ParserImpl struct {
+ lval $$SymType
+ stack [$$InitialStackSize]$$SymType
+ char int
+}
+
+func (p *$$ParserImpl) Lookahead() int {
+ return p.char
+}
+
+func $$NewParser() $$Parser {
+ return &$$ParserImpl{}
+}
+
+const $$Flag = -1000
+
+func $$Tokname(c int) string {
+ if c >= 1 && c-1 < len($$Toknames) {
+ if $$Toknames[c-1] != "" {
+ return $$Toknames[c-1]
+ }
+ }
+ return __yyfmt__.Sprintf("tok-%v", c)
+}
+
+func $$Statname(s int) string {
+ if s >= 0 && s < len($$Statenames) {
+ if $$Statenames[s] != "" {
+ return $$Statenames[s]
+ }
+ }
+ return __yyfmt__.Sprintf("state-%v", s)
+}
+
+func $$ErrorMessage(state, lookAhead int) string {
+ const TOKSTART = 4
+
+ if !$$ErrorVerbose {
+ return "syntax error"
+ }
+
+ for _, e := range $$ErrorMessages {
+ if e.state == state && e.token == lookAhead {
+ return "syntax error: " + e.msg
+ }
+ }
+
+ res := "syntax error: unexpected " + $$Tokname(lookAhead)
+
+ // To match Bison, suggest at most four expected tokens.
+ expected := make([]int, 0, 4)
+
+ // Look for shiftable tokens.
+ base := $$Pact[state]
+ for tok := TOKSTART; tok-1 < len($$Toknames); tok++ {
+ if n := base + tok; n >= 0 && n < $$Last && $$Chk[$$Act[n]] == tok {
+ if len(expected) == cap(expected) {
+ return res
+ }
+ expected = append(expected, tok)
+ }
+ }
+
+ if $$Def[state] == -2 {
+ i := 0
+ for $$Exca[i] != -1 || $$Exca[i+1] != state {
+ i += 2
+ }
+
+ // Look for tokens that we accept or reduce.
+ for i += 2; $$Exca[i] >= 0; i += 2 {
+ tok := $$Exca[i]
+ if tok < TOKSTART || $$Exca[i+1] == 0 {
+ continue
+ }
+ if len(expected) == cap(expected) {
+ return res
+ }
+ expected = append(expected, tok)
+ }
+
+ // If the default action is to accept or reduce, give up.
+ if $$Exca[i+1] != 0 {
+ return res
+ }
+ }
+
+ for i, tok := range expected {
+ if i == 0 {
+ res += ", expecting "
+ } else {
+ res += " or "
+ }
+ res += $$Tokname(tok)
+ }
+ return res
+}
+
+func $$lex1(lex $$Lexer, lval *$$SymType) (char, token int) {
+ token = 0
+ char = lex.Lex(lval)
+ if char <= 0 {
+ token = $$Tok1[0]
+ goto out
+ }
+ if char < len($$Tok1) {
+ token = $$Tok1[char]
+ goto out
+ }
+ if char >= $$Private {
+ if char < $$Private+len($$Tok2) {
+ token = $$Tok2[char-$$Private]
+ goto out
+ }
+ }
+ for i := 0; i < len($$Tok3); i += 2 {
+ token = $$Tok3[i+0]
+ if token == char {
+ token = $$Tok3[i+1]
+ goto out
+ }
+ }
+
+out:
+ if token == 0 {
+ token = $$Tok2[1] /* unknown char */
+ }
+ if $$Debug >= 3 {
+ __yyfmt__.Printf("lex %s(%d)\n", $$Tokname(token), uint(char))
+ }
+ return char, token
+}
+
+func $$Parse($$lex $$Lexer) int {
+ return $$NewParser().Parse($$lex)
+}
+
+func ($$rcvr *$$ParserImpl) Parse($$lex $$Lexer) int {
+ var $$n int
+ var $$VAL $$SymType
+ var $$Dollar []$$SymType
+ _ = $$Dollar // silence set and not used
+ $$S := $$rcvr.stack[:]
+
+ Nerrs := 0 /* number of errors */
+ Errflag := 0 /* error recovery flag */
+ $$state := 0
+ $$rcvr.char = -1
+ $$token := -1 // $$rcvr.char translated into internal numbering
+ defer func() {
+ // Make sure we report no lookahead when not parsing.
+ $$state = -1
+ $$rcvr.char = -1
+ $$token = -1
+ }()
+ $$p := -1
+ goto $$stack
+
+ret0:
+ return 0
+
+ret1:
+ return 1
+
+$$stack:
+ /* put a state and value onto the stack */
+ if $$Debug >= 4 {
+ __yyfmt__.Printf("char %v in %v\n", $$Tokname($$token), $$Statname($$state))
+ }
+
+ $$p++
+ if $$p >= len($$S) {
+ nyys := make([]$$SymType, len($$S)*2)
+ copy(nyys, $$S)
+ $$S = nyys
+ }
+ $$S[$$p] = $$VAL
+ $$S[$$p].yys = $$state
+
+$$newstate:
+ $$n = $$Pact[$$state]
+ if $$n <= $$Flag {
+ goto $$default /* simple state */
+ }
+ if $$rcvr.char < 0 {
+ $$rcvr.char, $$token = $$lex1($$lex, &$$rcvr.lval)
+ }
+ $$n += $$token
+ if $$n < 0 || $$n >= $$Last {
+ goto $$default
+ }
+ $$n = $$Act[$$n]
+ if $$Chk[$$n] == $$token { /* valid shift */
+ $$rcvr.char = -1
+ $$token = -1
+ $$VAL = $$rcvr.lval
+ $$state = $$n
+ if Errflag > 0 {
+ Errflag--
+ }
+ goto $$stack
+ }
+
+$$default:
+ /* default state action */
+ $$n = $$Def[$$state]
+ if $$n == -2 {
+ if $$rcvr.char < 0 {
+ $$rcvr.char, $$token = $$lex1($$lex, &$$rcvr.lval)
+ }
+
+ /* look through exception table */
+ xi := 0
+ for {
+ if $$Exca[xi+0] == -1 && $$Exca[xi+1] == $$state {
+ break
+ }
+ xi += 2
+ }
+ for xi += 2; ; xi += 2 {
+ $$n = $$Exca[xi+0]
+ if $$n < 0 || $$n == $$token {
+ break
+ }
+ }
+ $$n = $$Exca[xi+1]
+ if $$n < 0 {
+ goto ret0
+ }
+ }
+ if $$n == 0 {
+ /* error ... attempt to resume parsing */
+ switch Errflag {
+ case 0: /* brand new error */
+ $$lex.Error($$ErrorMessage($$state, $$token))
+ Nerrs++
+ if $$Debug >= 1 {
+ __yyfmt__.Printf("%s", $$Statname($$state))
+ __yyfmt__.Printf(" saw %s\n", $$Tokname($$token))
+ }
+ fallthrough
+
+ case 1, 2: /* incompletely recovered error ... try again */
+ Errflag = 3
+
+ /* find a state where "error" is a legal shift action */
+ for $$p >= 0 {
+ $$n = $$Pact[$$S[$$p].yys] + $$ErrCode
+ if $$n >= 0 && $$n < $$Last {
+ $$state = $$Act[$$n] /* simulate a shift of "error" */
+ if $$Chk[$$state] == $$ErrCode {
+ goto $$stack
+ }
+ }
+
+ /* the current p has no shift on "error", pop stack */
+ if $$Debug >= 2 {
+ __yyfmt__.Printf("error recovery pops state %d\n", $$S[$$p].yys)
+ }
+ $$p--
+ }
+ /* there is no state on the stack with an error shift ... abort */
+ goto ret1
+
+ case 3: /* no shift yet; clobber input char */
+ if $$Debug >= 2 {
+ __yyfmt__.Printf("error recovery discards %s\n", $$Tokname($$token))
+ }
+ if $$token == $$EofCode {
+ goto ret1
+ }
+ $$rcvr.char = -1
+ $$token = -1
+ goto $$newstate /* try again in the same state */
+ }
+ }
+
+ /* reduction by production $$n */
+ if $$Debug >= 2 {
+ __yyfmt__.Printf("reduce %v in:\n\t%v\n", $$n, $$Statname($$state))
+ }
+
+ $$nt := $$n
+ $$pt := $$p
+ _ = $$pt // guard against "declared and not used"
+
+ $$p -= $$R2[$$n]
+ // $$p is now the index of $0. Perform the default action. Iff the
+ // reduced production is ε, $1 is possibly out of range.
+ if $$p+1 >= len($$S) {
+ nyys := make([]$$SymType, len($$S)*2)
+ copy(nyys, $$S)
+ $$S = nyys
+ }
+ $$VAL = $$S[$$p+1]
+
+ /* consult goto table to find next state */
+ $$n = $$R1[$$n]
+ $$g := $$Pgo[$$n]
+ $$j := $$g + $$S[$$p].yys + 1
+
+ if $$j >= $$Last {
+ $$state = $$Act[$$g]
+ } else {
+ $$state = $$Act[$$j]
+ if $$Chk[$$state] != -$$n {
+ $$state = $$Act[$$g]
+ }
+ }
+ // dummy call; replaced with literal code
+ $$run()
+ goto $$stack /* stack new state and value */
+}
+`
diff --git a/go/vt/sqlparser/keywords.go b/go/vt/sqlparser/keywords.go
new file mode 100644
index 00000000000..253daed0390
--- /dev/null
+++ b/go/vt/sqlparser/keywords.go
@@ -0,0 +1,641 @@
+package sqlparser
+
+import (
+ "fmt"
+ "sort"
+ "strings"
+)
+
+type keyword struct {
+ name string
+ id int
+}
+
+func (k *keyword) match(input []byte) bool {
+ if len(input) != len(k.name) {
+ return false
+ }
+ for i, c := range input {
+ if 'A' <= c && c <= 'Z' {
+ c += 'a' - 'A'
+ }
+ if k.name[i] != c {
+ return false
+ }
+ }
+ return true
+}
+
+func (k *keyword) matchStr(input string) bool {
+ return keywordASCIIMatch(input, k.name)
+}
+
+func keywordASCIIMatch(input string, expected string) bool {
+ if len(input) != len(expected) {
+ return false
+ }
+ for i := 0; i < len(input); i++ {
+ c := input[i]
+ if 'A' <= c && c <= 'Z' {
+ c += 'a' - 'A'
+ }
+ if expected[i] != c {
+ return false
+ }
+ }
+ return true
+}
+
+// keywords is a table of mysql keywords that fall into two categories:
+// 1) keywords considered reserved by MySQL
+// 2) keywords for us to handle specially in sql.y
+//
+// Those marked as UNUSED are likely reserved keywords. We add them here so that
+// when rewriting queries we can properly backtick quote them so they don't cause issues
+//
+// NOTE: If you add new keywords, add them also to the reserved_keywords or
+// non_reserved_keywords grammar in sql.y -- this will allow the keyword to be used
+// in identifiers. See the docs for each grammar to determine which one to put it into.
+var keywords = []keyword{
+ {"accessible", UNUSED},
+ {"action", ACTION},
+ {"add", ADD},
+ {"after", AFTER},
+ {"against", AGAINST},
+ {"algorithm", ALGORITHM},
+ {"all", ALL},
+ {"alter", ALTER},
+ {"analyze", ANALYZE},
+ {"and", AND},
+ {"as", AS},
+ {"asc", ASC},
+ {"asensitive", UNUSED},
+ {"auto_increment", AUTO_INCREMENT},
+ {"avg_row_length", AVG_ROW_LENGTH},
+ {"before", UNUSED},
+ {"begin", BEGIN},
+ {"between", BETWEEN},
+ {"bigint", BIGINT},
+ {"binary", BINARY},
+ {"_binary", UNDERSCORE_BINARY},
+ {"_utf8mb4", UNDERSCORE_UTF8MB4},
+ {"_utf8", UNDERSCORE_UTF8},
+ {"_latin1", UNDERSCORE_LATIN1},
+ {"bit", BIT},
+ {"blob", BLOB},
+ {"bool", BOOL},
+ {"boolean", BOOLEAN},
+ {"both", UNUSED},
+ {"by", BY},
+ {"call", CALL},
+ {"cancel", CANCEL},
+ {"cascade", CASCADE},
+ {"cascaded", CASCADED},
+ {"case", CASE},
+ {"cast", CAST},
+ {"channel", CHANNEL},
+ {"change", CHANGE},
+ {"char", CHAR},
+ {"character", CHARACTER},
+ {"charset", CHARSET},
+ {"check", CHECK},
+ {"checksum", CHECKSUM},
+ {"coalesce", COALESCE},
+ {"code", CODE},
+ {"collate", COLLATE},
+ {"collation", COLLATION},
+ {"column", COLUMN},
+ {"columns", COLUMNS},
+ {"comment", COMMENT_KEYWORD},
+ {"committed", COMMITTED},
+ {"commit", COMMIT},
+ {"compact", COMPACT},
+ {"complete", COMPLETE},
+ {"compressed", COMPRESSED},
+ {"compression", COMPRESSION},
+ {"condition", UNUSED},
+ {"connection", CONNECTION},
+ {"constraint", CONSTRAINT},
+ {"continue", UNUSED},
+ {"convert", CONVERT},
+ {"copy", COPY},
+ {"substr", SUBSTR},
+ {"substring", SUBSTRING},
+ {"create", CREATE},
+ {"cross", CROSS},
+ {"csv", CSV},
+ {"current_date", CURRENT_DATE},
+ {"current_time", CURRENT_TIME},
+ {"current_timestamp", CURRENT_TIMESTAMP},
+ {"current_user", CURRENT_USER},
+ {"cursor", UNUSED},
+ {"data", DATA},
+ {"database", DATABASE},
+ {"databases", DATABASES},
+ {"day_hour", UNUSED},
+ {"day_microsecond", UNUSED},
+ {"day_minute", UNUSED},
+ {"day_second", UNUSED},
+ {"date", DATE},
+ {"datetime", DATETIME},
+ {"dec", UNUSED},
+ {"decimal", DECIMAL},
+ {"declare", UNUSED},
+ {"default", DEFAULT},
+ {"definer", DEFINER},
+ {"delay_key_write", DELAY_KEY_WRITE},
+ {"delayed", UNUSED},
+ {"delete", DELETE},
+ {"desc", DESC},
+ {"describe", DESCRIBE},
+ {"deterministic", UNUSED},
+ {"directory", DIRECTORY},
+ {"disable", DISABLE},
+ {"discard", DISCARD},
+ {"disk", DISK},
+ {"distinct", DISTINCT},
+ {"distinctrow", DISTINCTROW},
+ {"div", DIV},
+ {"double", DOUBLE},
+ {"do", DO},
+ {"drop", DROP},
+ {"dumpfile", DUMPFILE},
+ {"duplicate", DUPLICATE},
+ {"dynamic", DYNAMIC},
+ {"each", UNUSED},
+ {"else", ELSE},
+ {"elseif", UNUSED},
+ {"enable", ENABLE},
+ {"enclosed", ENCLOSED},
+ {"encryption", ENCRYPTION},
+ {"end", END},
+ {"enforced", ENFORCED},
+ {"engine", ENGINE},
+ {"engines", ENGINES},
+ {"enum", ENUM},
+ {"error", ERROR},
+ {"escape", ESCAPE},
+ {"escaped", ESCAPED},
+ {"event", EVENT},
+ {"exchange", EXCHANGE},
+ {"exclusive", EXCLUSIVE},
+ {"exists", EXISTS},
+ {"exit", UNUSED},
+ {"explain", EXPLAIN},
+ {"expansion", EXPANSION},
+ {"export", EXPORT},
+ {"extended", EXTENDED},
+ {"false", FALSE},
+ {"fetch", UNUSED},
+ {"fields", FIELDS},
+ {"first", FIRST},
+ {"fixed", FIXED},
+ {"float", FLOAT_TYPE},
+ {"float4", UNUSED},
+ {"float8", UNUSED},
+ {"flush", FLUSH},
+ {"for", FOR},
+ {"force", FORCE},
+ {"foreign", FOREIGN},
+ {"format", FORMAT},
+ {"from", FROM},
+ {"full", FULL},
+ {"fulltext", FULLTEXT},
+ {"function", FUNCTION},
+ {"general", GENERAL},
+ {"generated", UNUSED},
+ {"geometry", GEOMETRY},
+ {"geometrycollection", GEOMETRYCOLLECTION},
+ {"get", UNUSED},
+ {"global", GLOBAL},
+ {"grant", UNUSED},
+ {"group", GROUP},
+ {"group_concat", GROUP_CONCAT},
+ {"having", HAVING},
+ {"header", HEADER},
+ {"high_priority", UNUSED},
+ {"hosts", HOSTS},
+ {"hour_microsecond", UNUSED},
+ {"hour_minute", UNUSED},
+ {"hour_second", UNUSED},
+ {"if", IF},
+ {"ignore", IGNORE},
+ {"import", IMPORT},
+ {"in", IN},
+ {"index", INDEX},
+ {"indexes", INDEXES},
+ {"infile", UNUSED},
+ {"inout", UNUSED},
+ {"inner", INNER},
+ {"inplace", INPLACE},
+ {"insensitive", UNUSED},
+ {"insert", INSERT},
+ {"insert_method", INSERT_METHOD},
+ {"int", INT},
+ {"int1", UNUSED},
+ {"int2", UNUSED},
+ {"int3", UNUSED},
+ {"int4", UNUSED},
+ {"int8", UNUSED},
+ {"integer", INTEGER},
+ {"interval", INTERVAL},
+ {"into", INTO},
+ {"io_after_gtids", UNUSED},
+ {"is", IS},
+ {"isolation", ISOLATION},
+ {"iterate", UNUSED},
+ {"invoker", INVOKER},
+ {"join", JOIN},
+ {"json", JSON},
+ {"key", KEY},
+ {"keys", KEYS},
+ {"keyspaces", KEYSPACES},
+ {"key_block_size", KEY_BLOCK_SIZE},
+ {"kill", UNUSED},
+ {"last", LAST},
+ {"language", LANGUAGE},
+ {"last_insert_id", LAST_INSERT_ID},
+ {"leading", UNUSED},
+ {"leave", UNUSED},
+ {"left", LEFT},
+ {"less", LESS},
+ {"level", LEVEL},
+ {"like", LIKE},
+ {"limit", LIMIT},
+ {"linear", UNUSED},
+ {"lines", LINES},
+ {"linestring", LINESTRING},
+ {"load", LOAD},
+ {"local", LOCAL},
+ {"localtime", LOCALTIME},
+ {"localtimestamp", LOCALTIMESTAMP},
+ {"lock", LOCK},
+ {"logs", LOGS},
+ {"long", UNUSED},
+ {"longblob", LONGBLOB},
+ {"longtext", LONGTEXT},
+ {"loop", UNUSED},
+ {"low_priority", LOW_PRIORITY},
+ {"manifest", MANIFEST},
+ {"master_bind", UNUSED},
+ {"match", MATCH},
+ {"max_rows", MAX_ROWS},
+ {"maxvalue", MAXVALUE},
+ {"mediumblob", MEDIUMBLOB},
+ {"mediumint", MEDIUMINT},
+ {"mediumtext", MEDIUMTEXT},
+ {"memory", MEMORY},
+ {"merge", MERGE},
+ {"middleint", UNUSED},
+ {"min_rows", MIN_ROWS},
+ {"minute_microsecond", UNUSED},
+ {"minute_second", UNUSED},
+ {"mod", MOD},
+ {"mode", MODE},
+ {"modify", MODIFY},
+ {"modifies", UNUSED},
+ {"multilinestring", MULTILINESTRING},
+ {"multipoint", MULTIPOINT},
+ {"multipolygon", MULTIPOLYGON},
+ {"name", NAME},
+ {"names", NAMES},
+ {"natural", NATURAL},
+ {"nchar", NCHAR},
+ {"next", NEXT},
+ {"no", NO},
+ {"none", NONE},
+ {"not", NOT},
+ {"no_write_to_binlog", NO_WRITE_TO_BINLOG},
+ {"null", NULL},
+ {"numeric", NUMERIC},
+ {"off", OFF},
+ {"offset", OFFSET},
+ {"on", ON},
+ {"only", ONLY},
+ {"open", OPEN},
+ {"optimize", OPTIMIZE},
+ {"optimizer_costs", OPTIMIZER_COSTS},
+ {"option", OPTION},
+ {"optionally", OPTIONALLY},
+ {"or", OR},
+ {"order", ORDER},
+ {"out", UNUSED},
+ {"outer", OUTER},
+ {"outfile", OUTFILE},
+ {"overwrite", OVERWRITE},
+ {"pack_keys", PACK_KEYS},
+ {"parser", PARSER},
+ {"partition", PARTITION},
+ {"partitioning", PARTITIONING},
+ {"password", PASSWORD},
+ {"plugins", PLUGINS},
+ {"point", POINT},
+ {"polygon", POLYGON},
+ {"precision", UNUSED},
+ {"primary", PRIMARY},
+ {"privileges", PRIVILEGES},
+ {"processlist", PROCESSLIST},
+ {"procedure", PROCEDURE},
+ {"query", QUERY},
+ {"range", UNUSED},
+ {"read", READ},
+ {"reads", UNUSED},
+ {"read_write", UNUSED},
+ {"real", REAL},
+ {"rebuild", REBUILD},
+ {"redundant", REDUNDANT},
+ {"references", REFERENCES},
+ {"regexp", REGEXP},
+ {"relay", RELAY},
+ {"release", RELEASE},
+ {"remove", REMOVE},
+ {"rename", RENAME},
+ {"reorganize", REORGANIZE},
+ {"repair", REPAIR},
+ {"repeat", UNUSED},
+ {"repeatable", REPEATABLE},
+ {"replace", REPLACE},
+ {"require", UNUSED},
+ {"resignal", UNUSED},
+ {"restrict", RESTRICT},
+ {"return", UNUSED},
+ {"retry", RETRY},
+ {"revert", REVERT},
+ {"revoke", UNUSED},
+ {"right", RIGHT},
+ {"rlike", REGEXP},
+ {"rollback", ROLLBACK},
+ {"row_format", ROW_FORMAT},
+ {"s3", S3},
+ {"savepoint", SAVEPOINT},
+ {"schema", SCHEMA},
+ {"schemas", SCHEMAS},
+ {"second_microsecond", UNUSED},
+ {"security", SECURITY},
+ {"select", SELECT},
+ {"sensitive", UNUSED},
+ {"separator", SEPARATOR},
+ {"sequence", SEQUENCE},
+ {"serializable", SERIALIZABLE},
+ {"session", SESSION},
+ {"set", SET},
+ {"share", SHARE},
+ {"shared", SHARED},
+ {"show", SHOW},
+ {"signal", UNUSED},
+ {"signed", SIGNED},
+ {"slow", SLOW},
+ {"smallint", SMALLINT},
+ {"spatial", SPATIAL},
+ {"specific", UNUSED},
+ {"sql", SQL},
+ {"sqlexception", UNUSED},
+ {"sqlstate", UNUSED},
+ {"sqlwarning", UNUSED},
+ {"sql_big_result", UNUSED},
+ {"sql_cache", SQL_CACHE},
+ {"sql_calc_found_rows", SQL_CALC_FOUND_ROWS},
+ {"sql_no_cache", SQL_NO_CACHE},
+ {"sql_small_result", UNUSED},
+ {"ssl", UNUSED},
+ {"start", START},
+ {"starting", STARTING},
+ {"stats_auto_recalc", STATS_AUTO_RECALC},
+ {"stats_persistent", STATS_PERSISTENT},
+ {"stats_sample_pages", STATS_SAMPLE_PAGES},
+ {"status", STATUS},
+ {"storage", STORAGE},
+ {"stored", UNUSED},
+ {"straight_join", STRAIGHT_JOIN},
+ {"stream", STREAM},
+ {"vstream", VSTREAM},
+ {"table", TABLE},
+ {"tables", TABLES},
+ {"tablespace", TABLESPACE},
+ {"temporary", TEMPORARY},
+ {"temptable", TEMPTABLE},
+ {"terminated", TERMINATED},
+ {"text", TEXT},
+ {"than", THAN},
+ {"then", THEN},
+ {"time", TIME},
+ {"timestamp", TIMESTAMP},
+ {"timestampadd", TIMESTAMPADD},
+ {"timestampdiff", TIMESTAMPDIFF},
+ {"tinyblob", TINYBLOB},
+ {"tinyint", TINYINT},
+ {"tinytext", TINYTEXT},
+ {"to", TO},
+ {"trailing", UNUSED},
+ {"transaction", TRANSACTION},
+ {"tree", TREE},
+ {"traditional", TRADITIONAL},
+ {"trigger", TRIGGER},
+ {"triggers", TRIGGERS},
+ {"true", TRUE},
+ {"truncate", TRUNCATE},
+ {"uncommitted", UNCOMMITTED},
+ {"undefined", UNDEFINED},
+ {"undo", UNUSED},
+ {"union", UNION},
+ {"unique", UNIQUE},
+ {"unlock", UNLOCK},
+ {"unsigned", UNSIGNED},
+ {"update", UPDATE},
+ {"upgrade", UPGRADE},
+ {"usage", UNUSED},
+ {"use", USE},
+ {"user", USER},
+ {"user_resources", USER_RESOURCES},
+ {"using", USING},
+ {"utc_date", UTC_DATE},
+ {"utc_time", UTC_TIME},
+ {"utc_timestamp", UTC_TIMESTAMP},
+ {"validation", VALIDATION},
+ {"values", VALUES},
+ {"variables", VARIABLES},
+ {"varbinary", VARBINARY},
+ {"varchar", VARCHAR},
+ {"varcharacter", UNUSED},
+ {"varying", UNUSED},
+ {"virtual", UNUSED},
+ {"vindex", VINDEX},
+ {"vindexes", VINDEXES},
+ {"view", VIEW},
+ {"vitess", VITESS},
+ {"vitess_keyspaces", VITESS_KEYSPACES},
+ {"vitess_metadata", VITESS_METADATA},
+ {"vitess_shards", VITESS_SHARDS},
+ {"vitess_tablets", VITESS_TABLETS},
+ {"vitess_migration", VITESS_MIGRATION},
+ {"vitess_migrations", VITESS_MIGRATIONS},
+ {"vschema", VSCHEMA},
+ {"warnings", WARNINGS},
+ {"when", WHEN},
+ {"where", WHERE},
+ {"while", UNUSED},
+ {"with", WITH},
+ {"without", WITHOUT},
+ {"work", WORK},
+ {"write", WRITE},
+ {"xor", XOR},
+ {"year", YEAR},
+ {"year_month", UNUSED},
+ {"zerofill", ZEROFILL},
+}
+
+// keywordStrings contains the reverse mapping of token to keyword strings
+var keywordStrings = map[int]string{}
+
+// keywordLookupTable is a perfect hash map that maps **case insensitive** keyword names to their ids
+var keywordLookupTable *perfectTable
+
+func init() {
+ for _, kw := range keywords {
+ if kw.id == UNUSED {
+ continue
+ }
+ if kw.name != strings.ToLower(kw.name) {
+ panic(fmt.Sprintf("keyword %q must be lowercase in table", kw.name))
+ }
+ keywordStrings[kw.id] = kw.name
+ }
+
+ keywordLookupTable = buildKeywordTable(keywords)
+}
+
+// KeywordString returns the string corresponding to the given keyword
+func KeywordString(id int) string {
+ str, ok := keywordStrings[id]
+ if !ok {
+ return ""
+ }
+ return str
+}
+
+type perfectTable struct {
+ keys []keyword
+ level0 []uint32 // power of 2 size
+ level0Mask int // len(Level0) - 1
+ level1 []uint32 // power of 2 size >= len(keys)
+ level1Mask int // len(Level1) - 1
+}
+
+const offset64 = uint64(14695981039346656037)
+const prime64 = uint64(1099511628211)
+
+func fnv1aI(h uint64, s []byte) uint64 {
+ for _, c := range s {
+ if 'A' <= c && c <= 'Z' {
+ c += 'a' - 'A'
+ }
+ h = (h ^ uint64(c)) * prime64
+ }
+ return h
+}
+
+func fnv1aIstr(h uint64, s string) uint64 {
+ for i := 0; i < len(s); i++ {
+ c := s[i]
+ if 'A' <= c && c <= 'Z' {
+ c += 'a' - 'A'
+ }
+ h = (h ^ uint64(c)) * prime64
+ }
+ return h
+}
+
+// buildKeywordTable generates a perfect hash map for all the keywords using the "Hash, displace, and compress"
+// algorithm described in http://cmph.sourceforge.net/papers/esa09.pdf.
+func buildKeywordTable(keywords []keyword) *perfectTable {
+ type indexBucket struct {
+ n int
+ vals []int
+ }
+
+ nextPow2 := func(n int) int {
+ for i := 1; ; i *= 2 {
+ if i >= n {
+ return i
+ }
+ }
+ }
+
+ var (
+ level0 = make([]uint32, nextPow2(len(keywords)/4))
+ level0Mask = len(level0) - 1
+ level1 = make([]uint32, nextPow2(len(keywords)))
+ level1Mask = len(level1) - 1
+ sparseBuckets = make([][]int, len(level0))
+ zeroSeed = offset64
+ )
+ for i, kw := range keywords {
+ n := int(fnv1aIstr(zeroSeed, kw.name)) & level0Mask
+ sparseBuckets[n] = append(sparseBuckets[n], i)
+ }
+ var buckets []indexBucket
+ for n, vals := range sparseBuckets {
+ if len(vals) > 0 {
+ buckets = append(buckets, indexBucket{n, vals})
+ }
+ }
+ sort.Slice(buckets, func(i, j int) bool {
+ return len(buckets[i].vals) > len(buckets[j].vals)
+ })
+
+ occ := make([]bool, len(level1))
+ var tmpOcc []int
+ for _, bucket := range buckets {
+ var seed uint64
+ trySeed:
+ tmpOcc = tmpOcc[:0]
+ for _, i := range bucket.vals {
+ n := int(fnv1aIstr(seed, keywords[i].name)) & level1Mask
+ if occ[n] {
+ for _, n := range tmpOcc {
+ occ[n] = false
+ }
+ seed++
+ goto trySeed
+ }
+ occ[n] = true
+ tmpOcc = append(tmpOcc, n)
+ level1[n] = uint32(i)
+ }
+ level0[bucket.n] = uint32(seed)
+ }
+
+ return &perfectTable{
+ keys: keywords,
+ level0: level0,
+ level0Mask: level0Mask,
+ level1: level1,
+ level1Mask: level1Mask,
+ }
+}
+
+// Lookup looks up the given keyword on the perfect map for keywords.
+// The provided bytes are not modified and are compared **case insensitively**
+func (t *perfectTable) Lookup(keyword []byte) (int, bool) {
+ i0 := int(fnv1aI(offset64, keyword)) & t.level0Mask
+ seed := t.level0[i0]
+ i1 := int(fnv1aI(uint64(seed), keyword)) & t.level1Mask
+ cell := &t.keys[int(t.level1[i1])]
+ if cell.match(keyword) {
+ return cell.id, true
+ }
+ return 0, false
+}
+
+// LookupString looks up the given keyword on the perfect map for keywords.
+// The provided string is compared **case insensitively**
+func (t *perfectTable) LookupString(keyword string) (int, bool) {
+ i0 := int(fnv1aIstr(offset64, keyword)) & t.level0Mask
+ seed := t.level0[i0]
+ i1 := int(fnv1aIstr(uint64(seed), keyword)) & t.level1Mask
+ cell := &t.keys[int(t.level1[i1])]
+ if cell.matchStr(keyword) {
+ return cell.id, true
+ }
+ return 0, false
+}
diff --git a/go/vt/sqlparser/keywords_test.go b/go/vt/sqlparser/keywords_test.go
new file mode 100644
index 00000000000..903ef18a87f
--- /dev/null
+++ b/go/vt/sqlparser/keywords_test.go
@@ -0,0 +1,15 @@
+package sqlparser
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/require"
+)
+
+func TestKeywordTable(t *testing.T) {
+ for _, kw := range keywords {
+ lookup, ok := keywordLookupTable.LookupString(kw.name)
+ require.Truef(t, ok, "keyword %q failed to match", kw.name)
+ require.Equalf(t, lookup, kw.id, "keyword %q matched to %d (expected %d)", kw.name, lookup, kw.id)
+ }
+}
diff --git a/go/vt/sqlparser/normalizer.go b/go/vt/sqlparser/normalizer.go
index ea5f7c3ee08..e4626a57b6d 100644
--- a/go/vt/sqlparser/normalizer.go
+++ b/go/vt/sqlparser/normalizer.go
@@ -24,6 +24,9 @@ import (
querypb "vitess.io/vitess/go/vt/proto/query"
)
+// BindVars is a set of reserved bind variables from a SQL statement
+type BindVars map[string]struct{}
+
// Normalize changes the statement to use bind values, and
// updates the bind vars to those values. The supplied prefix
// is used to generate the bind var names. The function ensures
@@ -31,9 +34,10 @@ import (
// Within Select constructs, bind vars are deduped. This allows
// us to identify vindex equality. Otherwise, every value is
// treated as distinct.
-func Normalize(stmt Statement, bindVars map[string]*querypb.BindVariable, prefix string) {
- nz := newNormalizer(stmt, bindVars, prefix)
- Rewrite(stmt, nz.WalkStatement, nil)
+func Normalize(stmt Statement, known BindVars, bindVars map[string]*querypb.BindVariable, prefix string) error {
+ nz := newNormalizer(known, bindVars, prefix)
+ _ = Rewrite(stmt, nz.WalkStatement, nil)
+ return nz.err
}
type normalizer struct {
@@ -42,13 +46,14 @@ type normalizer struct {
reserved map[string]struct{}
counter int
vals map[string]string
+ err error
}
-func newNormalizer(stmt Statement, bindVars map[string]*querypb.BindVariable, prefix string) *normalizer {
+func newNormalizer(reserved map[string]struct{}, bindVars map[string]*querypb.BindVariable, prefix string) *normalizer {
return &normalizer{
bindVars: bindVars,
prefix: prefix,
- reserved: GetBindvars(stmt),
+ reserved: reserved,
counter: 1,
vals: make(map[string]string),
}
@@ -63,7 +68,7 @@ func (nz *normalizer) WalkStatement(cursor *Cursor) bool {
case *Set, *Show, *Begin, *Commit, *Rollback, *Savepoint, *SetTransaction, DDLStatement, *SRollback, *Release, *OtherAdmin, *OtherRead:
return false
case *Select:
- Rewrite(node, nz.WalkSelect, nil)
+ _ = Rewrite(node, nz.WalkSelect, nil)
// Don't continue
return false
case *Literal:
@@ -77,7 +82,7 @@ func (nz *normalizer) WalkStatement(cursor *Cursor) bool {
case *ConvertType: // we should not rewrite the type description
return false
}
- return true
+ return nz.err == nil // only continue if we haven't found any errors
}
// WalkSelect normalizes the AST in Select mode.
@@ -98,7 +103,7 @@ func (nz *normalizer) WalkSelect(cursor *Cursor) bool {
// we should not rewrite the type description
return false
}
- return true
+ return nz.err == nil // only continue if we haven't found any errors
}
func (nz *normalizer) convertLiteralDedup(node *Literal, cursor *Cursor) {
@@ -123,9 +128,9 @@ func (nz *normalizer) convertLiteralDedup(node *Literal, cursor *Cursor) {
// Prefixing strings with "'" ensures that a string
// and number that have the same representation don't
// collide.
- key = "'" + string(node.Val)
+ key = "'" + node.Val
} else {
- key = string(node.Val)
+ key = node.Val
}
bvname, ok := nz.vals[key]
if !ok {
@@ -136,7 +141,7 @@ func (nz *normalizer) convertLiteralDedup(node *Literal, cursor *Cursor) {
}
// Modify the AST node to a bindvar.
- cursor.Replace(NewArgument([]byte(":" + bvname)))
+ cursor.Replace(NewArgument(":" + bvname))
}
// convertLiteral converts an Literal without the dedup.
@@ -149,7 +154,7 @@ func (nz *normalizer) convertLiteral(node *Literal, cursor *Cursor) {
bvname := nz.newName()
nz.bindVars[bvname] = bval
- cursor.Replace(NewArgument([]byte(":" + bvname)))
+ cursor.Replace(NewArgument(":" + bvname))
}
// convertComparison attempts to convert IN clauses to
@@ -192,11 +197,11 @@ func (nz *normalizer) sqlToBindvar(node SQLNode) *querypb.BindVariable {
var err error
switch node.Type {
case StrVal:
- v, err = sqltypes.NewValue(sqltypes.VarBinary, node.Val)
+ v, err = sqltypes.NewValue(sqltypes.VarBinary, node.Bytes())
case IntVal:
- v, err = sqltypes.NewValue(sqltypes.Int64, node.Val)
+ v, err = sqltypes.NewValue(sqltypes.Int64, node.Bytes())
case FloatVal:
- v, err = sqltypes.NewValue(sqltypes.Float64, node.Val)
+ v, err = sqltypes.NewValue(sqltypes.Float64, node.Bytes())
default:
return nil
}
@@ -220,8 +225,6 @@ func (nz *normalizer) newName() string {
}
// GetBindvars returns a map of the bind vars referenced in the statement.
-// TODO(sougou); This function gets called again from vtgate/planbuilder.
-// Ideally, this should be done only once.
func GetBindvars(stmt Statement) map[string]struct{} {
bindvars := make(map[string]struct{})
_ = Walk(func(node SQLNode) (kontinue bool, err error) {
diff --git a/go/vt/sqlparser/normalizer_test.go b/go/vt/sqlparser/normalizer_test.go
index c28d3c61ba5..09bee85773f 100644
--- a/go/vt/sqlparser/normalizer_test.go
+++ b/go/vt/sqlparser/normalizer_test.go
@@ -21,6 +21,8 @@ import (
"reflect"
"testing"
+ "github.com/stretchr/testify/require"
+
"vitess.io/vitess/go/sqltypes"
querypb "vitess.io/vitess/go/vt/proto/query"
)
@@ -228,8 +230,10 @@ func TestNormalize(t *testing.T) {
t.Error(err)
continue
}
+ known := GetBindvars(stmt)
bv := make(map[string]*querypb.BindVariable)
- Normalize(stmt, bv, prefix)
+ require.NoError(t,
+ Normalize(stmt, known, bv, prefix))
outstmt := String(stmt)
if outstmt != tc.outstmt {
t.Errorf("Query:\n%s:\n%s, want\n%s", tc.in, outstmt, tc.outstmt)
@@ -266,11 +270,85 @@ BenchmarkNormalize-8 500000 3620 ns/op 1461 B/op
*/
func BenchmarkNormalize(b *testing.B) {
sql := "select 'abcd', 20, 30.0, eid from a where 1=eid and name='3'"
- ast, err := Parse(sql)
+ ast, reservedVars, err := Parse2(sql)
if err != nil {
b.Fatal(err)
}
for i := 0; i < b.N; i++ {
- Normalize(ast, map[string]*querypb.BindVariable{}, "")
+ require.NoError(b,
+ Normalize(ast, reservedVars, map[string]*querypb.BindVariable{}, ""))
+ }
+}
+
+func BenchmarkNormalizeTraces(b *testing.B) {
+ for _, trace := range []string{"django_queries.txt", "lobsters.sql.gz"} {
+ b.Run(trace, func(b *testing.B) {
+ queries := loadQueries(b, trace)
+ if len(queries) > 10000 {
+ queries = queries[:10000]
+ }
+
+ parsed := make([]Statement, 0, len(queries))
+ reservedVars := make([]BindVars, 0, len(queries))
+ for _, q := range queries {
+ pp, kb, err := Parse2(q)
+ if err != nil {
+ b.Fatal(err)
+ }
+ parsed = append(parsed, pp)
+ reservedVars = append(reservedVars, kb)
+ }
+
+ b.ResetTimer()
+ b.ReportAllocs()
+
+ for i := 0; i < b.N; i++ {
+ for i, query := range parsed {
+ _ = Normalize(query, reservedVars[i], map[string]*querypb.BindVariable{}, "")
+ }
+ }
+ })
+ }
+}
+
+func BenchmarkNormalizeVTGate(b *testing.B) {
+ const keyspace = "main_keyspace"
+
+ queries := loadQueries(b, "lobsters.sql.gz")
+ if len(queries) > 10000 {
+ queries = queries[:10000]
+ }
+
+ b.ResetTimer()
+ b.ReportAllocs()
+
+ for i := 0; i < b.N; i++ {
+ for _, sql := range queries {
+ stmt, reservedVars, err := Parse2(sql)
+ if err != nil {
+ b.Fatal(err)
+ }
+
+ query := sql
+ statement := stmt
+ bindVarNeeds := &BindVarNeeds{}
+ bindVars := make(map[string]*querypb.BindVariable)
+ _ = IgnoreMaxMaxMemoryRowsDirective(stmt)
+
+ // Normalize if possible and retry.
+ if CanNormalize(stmt) || MustRewriteAST(stmt) {
+ result, err := PrepareAST(stmt, reservedVars, bindVars, "vtg", true, keyspace)
+ if err != nil {
+ b.Fatal(err)
+ }
+ statement = result.AST
+ bindVarNeeds = result.BindVarNeeds
+ query = String(statement)
+ }
+
+ _ = query
+ _ = statement
+ _ = bindVarNeeds
+ }
}
}
diff --git a/go/vt/sqlparser/parse_next_test.go b/go/vt/sqlparser/parse_next_test.go
index 9f4e9c486d9..493afa4a698 100644
--- a/go/vt/sqlparser/parse_next_test.go
+++ b/go/vt/sqlparser/parse_next_test.go
@@ -32,7 +32,7 @@ func TestParseNextValid(t *testing.T) {
sql.WriteRune(';')
}
- tokens := NewTokenizer(&sql)
+ tokens := NewStringTokenizer(sql.String())
for i, tcase := range validSQL {
input := tcase.input + ";"
want := tcase.output
diff --git a/go/vt/sqlparser/parse_test.go b/go/vt/sqlparser/parse_test.go
index bda582166d7..96a23114341 100644
--- a/go/vt/sqlparser/parse_test.go
+++ b/go/vt/sqlparser/parse_test.go
@@ -19,9 +19,12 @@ package sqlparser
import (
"bufio"
"bytes"
+ "compress/gzip"
"fmt"
+ "io"
"math/rand"
"os"
+ "path"
"strings"
"sync"
"testing"
@@ -65,6 +68,14 @@ var (
input: "select a from t",
}, {
input: "select $ from t",
+ }, {
+ // shift/reduce conflict on CHARSET, should throw an error on shifting which will be ignored as it is a DDL
+ input: "alter database charset = 'utf16';",
+ output: "alter database",
+ partialDDL: true,
+ }, {
+ input: "alter database charset charset = 'utf16'",
+ output: "alter database `charset` character set 'utf16'",
}, {
input: "select a.b as a$b from $test$",
}, {
@@ -77,7 +88,7 @@ var (
input: "select 1 from t # aa\n",
output: "select 1 from t",
}, {
- input: "select 1 --aa\nfrom t",
+ input: "select 1 -- aa\nfrom t",
output: "select 1 from t",
}, {
input: "select 1 #aa\nfrom t",
@@ -447,7 +458,8 @@ var (
input: "select /* % no space */ 1 from t where a = b%c",
output: "select /* % no space */ 1 from t where a = b % c",
}, {
- input: "select /* u+ */ 1 from t where a = +b",
+ input: "select /* u+ */ 1 from t where a = +b",
+ output: "select /* u+ */ 1 from t where a = b",
}, {
input: "select /* u- */ 1 from t where a = -b",
}, {
@@ -607,7 +619,8 @@ var (
input: "select /* binary unary */ a- -b from t",
output: "select /* binary unary */ a - -b from t",
}, {
- input: "select /* - - */ - -b from t",
+ input: "select /* - - */ - -b from t",
+ output: "select /* - - */ b from t",
}, {
input: "select /* binary binary */ binary binary b from t",
}, {
@@ -732,10 +745,10 @@ var (
}, {
input: "insert /* bool expression on duplicate */ into a values (1, 2) on duplicate key update b = func(a), c = a > d",
}, {
- input: "insert into user(username, `status`) values ('Chuck', default(`status`))",
+ input: "insert into `user`(username, `status`) values ('Chuck', default(`status`))",
}, {
input: "insert into user(format, tree, vitess) values ('Chuck', 42, 'Barry')",
- output: "insert into user(`format`, `tree`, `vitess`) values ('Chuck', 42, 'Barry')",
+ output: "insert into `user`(`format`, `tree`, `vitess`) values ('Chuck', 42, 'Barry')",
}, {
input: "insert into customer () values ()",
output: "insert into customer values ()",
@@ -840,6 +853,9 @@ var (
}, {
input: "set character set 'utf8'",
output: "set charset 'utf8'",
+ }, {
+ input: "set s = 1--4",
+ output: "set s = 1 - -4",
}, {
input: "set character set \"utf8\"",
output: "set charset 'utf8'",
@@ -901,6 +917,12 @@ var (
input: "set @variable = 42",
}, {
input: "set @period.variable = 42",
+ }, {
+ input: "set S= +++-++-+(4+1)",
+ output: "set S = 4 + 1",
+ }, {
+ input: "set S= +- - - - -(4+1)",
+ output: "set S = -(4 + 1)",
}, {
input: "alter table a add foo int first v",
output: "alter table a add column foo int first v",
@@ -996,6 +1018,8 @@ var (
}, {
input: "alter table a partition by range (id) (partition p0 values less than (10), partition p1 values less than (maxvalue))",
output: "alter table a",
+ }, {
+ input: "alter table `Post With Space` drop foreign key `Post With Space_ibfk_1`",
}, {
input: "alter table a add column (id int, id2 char(23))",
}, {
@@ -1021,7 +1045,7 @@ var (
output: "alter table a add constraint b unique key c (id)",
}, {
input: "alter table a add constraint check (id)",
- output: "alter table a add check (id) enforced",
+ output: "alter table a add check (id)",
}, {
input: "alter table a add id int",
output: "alter table a add column id int",
@@ -1051,6 +1075,12 @@ var (
}, {
input: "alter table a drop id",
output: "alter table a drop column id",
+ }, {
+ input: "ALTER TABLE `product115s` CHANGE `part_number` `part_number` varchar(255) DEFAULT '0' NOT NULL",
+ output: "alter table product115s change column part_number part_number varchar(255) not null default '0'",
+ }, {
+ input: "ALTER TABLE distributors ADD CONSTRAINT zipchk CHECK (char_length(zipcode) = 5)",
+ output: "alter table distributors add constraint zipchk check (char_length(zipcode) = 5)",
}, {
input: "alter database character set geostd8",
}, {
@@ -1078,6 +1108,12 @@ var (
output: "alter database d collate 'utf8_bin' character set geostd8 character set geostd8",
}, {
input: "create table a",
+ }, {
+ input: "CREATE TABLE a",
+ output: "create table a",
+ }, {
+ input: "create table `a`",
+ output: "create table a",
}, {
input: "create table a (\n\t`a` int\n)",
output: "create table a (\n\ta int\n)",
@@ -1085,9 +1121,21 @@ var (
input: "create table `by` (\n\t`by` char\n)",
}, {
input: "create table test (\n\t__year year(4)\n)",
+ }, {
+ input: "create table a (\n\ta int not null\n)",
+ }, {
+ input: "create table a (\n\ta int not null default 0\n)",
+ }, {
+ input: "create table a (a int not null default 0, primary key(a))",
+ output: "create table a (\n\ta int not null default 0,\n\tprimary key (a)\n)",
+ }, {
+ input: "create table a (`a column` int)",
+ output: "create table a (\n\t`a column` int\n)",
+ }, {
+ input: "create table a (\n\ta varchar(32) not null default ''\n)",
}, {
input: "create table if not exists a (\n\t`a` int\n)",
- output: "create table a (\n\ta int\n)",
+ output: "create table if not exists a (\n\ta int\n)",
}, {
input: "create table a ignore me this is garbage",
output: "create table a",
@@ -1097,6 +1145,26 @@ var (
}, {
input: "create table a (b1 bool not null primary key, b2 boolean not null)",
output: "create table a (\n\tb1 bool not null primary key,\n\tb2 boolean not null\n)",
+ }, {
+ input: "create table a (b1 bool NOT NULL PRIMARY KEY, b2 boolean not null, KEY b2_idx(b))",
+ output: "create table a (\n\tb1 bool not null primary key,\n\tb2 boolean not null,\n\tKEY b2_idx (b)\n)",
+ }, {
+ input: "create temporary table a (\n\tid bigint\n)",
+ }, {
+ input: "CREATE TABLE pkai (id INT PRIMARY KEY AUTO_INCREMENT);",
+ output: "create table pkai (\n\tid INT auto_increment primary key\n)",
+ }, {
+ input: "CREATE TABLE aipk (id INT AUTO_INCREMENT PRIMARY KEY)",
+ output: "create table aipk (\n\tid INT auto_increment primary key\n)",
+ }, {
+ // This test case is added because MySQL supports this behaviour.
+ // It allows the user to specify null and not null multiple times.
+ // The last value specified is used.
+ input: "create table foo (f timestamp null not null , g timestamp not null null)",
+ output: "create table foo (\n\tf timestamp not null,\n\tg timestamp null\n)",
+ }, {
+ // Tests unicode character §
+ input: "create table invalid_enum_value_name (\n\there_be_enum enum('$§!') default null\n)",
}, {
input: "alter vschema create vindex hash_vdx using hash",
}, {
@@ -1147,7 +1215,7 @@ var (
output: "alter vschema on a add vindex hash (id) using hash",
}, {
input: "alter vschema on user add vindex name_lookup_vdx (name) using lookup_hash with owner=user, table=name_user_idx, from=name, to=user_id",
- output: "alter vschema on user add vindex name_lookup_vdx (`name`) using lookup_hash with owner=user, table=name_user_idx, from=name, to=user_id",
+ output: "alter vschema on `user` add vindex name_lookup_vdx (`name`) using lookup_hash with owner=user, table=name_user_idx, from=name, to=user_id",
}, {
input: "alter vschema on user2 add vindex name_lastname_lookup_vdx (name,lastname) using lookup with owner=`user`, table=`name_lastname_keyspace_id_map`, from=`name,lastname`, to=`keyspace_id`",
output: "alter vschema on user2 add vindex name_lastname_lookup_vdx (`name`, lastname) using lookup with owner=user, table=name_lastname_keyspace_id_map, from=name,lastname, to=keyspace_id",
@@ -1181,11 +1249,14 @@ var (
output: "alter table b add spatial index a (col1)",
}, {
input: "create fulltext index a on b (col1) key_block_size=12 with parser a comment 'string' algorithm inplace lock none",
- output: "alter table b add fulltext index a (col1) key_block_size 12 with parser a comment 'string' algorithm inplace lock none",
+ output: "alter table b add fulltext index a (col1) key_block_size 12 with parser a comment 'string', algorithm = inplace, lock none",
}, {
input: "create index a on b ((col1 + col2), (col1*col2))",
output: "alter table b add index a ()",
partialDDL: true,
+ }, {
+ input: "create fulltext index b using btree on A (col1 desc, col2) algorithm = inplace lock = none",
+ output: "alter table A add fulltext index b (col1 desc, col2) using btree, algorithm = inplace, lock none",
}, {
input: "create algorithm = merge sql security definer view a as select * from e",
}, {
@@ -1213,8 +1284,8 @@ var (
input: "rename table a to b",
output: "rename table a to b",
}, {
- input: "rename table a to b, b to c",
- output: "rename table a to b, b to c",
+ input: "rename table x.a to b, b to c",
+ output: "rename table x.a to b, b to c",
}, {
input: "drop view a,B,c",
output: "drop view a, b, c",
@@ -1227,21 +1298,35 @@ var (
}, {
input: "drop table if exists a,b restrict",
output: "drop table if exists a, b",
+ }, {
+ input: "drop temporary table if exists a, b",
}, {
input: "drop view if exists a cascade",
output: "drop view if exists a",
}, {
- input: "drop index b on a",
- output: "alter table a",
+ input: "drop index b on a lock = none algorithm default",
+ output: "alter table a drop key b, lock none, algorithm = default",
+ }, {
+ input: "drop index `PRIMARY` on a lock none",
+ output: "alter table a drop primary key, lock none",
}, {
input: "analyze table a",
output: "otherread",
}, {
- input: "flush tables",
- output: "flush",
+ input: "flush tables",
}, {
- input: "flush tables with read lock",
- output: "flush",
+ input: "flush tables with read lock",
+ }, {
+ input: "flush tables a, c.v, b",
+ }, {
+ input: "flush local tables a, c.v, b with read lock",
+ }, {
+ input: "flush tables a, c.v, b for export",
+ }, {
+ input: "flush local binary logs, engine logs, error logs, general logs, hosts, logs, privileges, optimizer_costs",
+ }, {
+ input: "flush no_write_to_binlog slow logs, status, user_resources, relay logs, relay logs for channel s",
+ output: "flush local slow logs, status, user_resources, relay logs, relay logs for channel s",
}, {
input: "show binary logs",
output: "show binary logs",
@@ -1273,28 +1358,22 @@ var (
input: "show collation where `Charset` = 'utf8' and `Collation` = 'utf8_bin'",
output: "show collation where `Charset` = 'utf8' and `Collation` = 'utf8_bin'",
}, {
- input: "show create database d",
- output: "show create database",
+ input: "show create database d",
}, {
- input: "show create event e",
- output: "show create event",
+ input: "show create event e",
}, {
input: "show create function f",
}, {
- input: "show create procedure p",
- output: "show create procedure",
+ input: "show create procedure p",
}, {
- input: "show create table t",
- output: "show create table t",
+ input: "show create table t",
}, {
- input: "show create trigger t",
- output: "show create trigger",
+ input: "show create trigger t",
}, {
input: "show create user u",
output: "show create user",
}, {
- input: "show create view v",
- output: "show create view",
+ input: "show create view v",
}, {
input: "show databases",
output: "show databases",
@@ -1327,17 +1406,18 @@ var (
input: "show grants for 'root@localhost'",
output: "show grants",
}, {
- input: "show index from t",
+ input: "show index from t",
+ output: "show indexes from t",
}, {
input: "show indexes from t",
}, {
- input: "show keys from t",
+ input: "show keys from t",
+ output: "show indexes from t",
}, {
input: "show master status",
output: "show master",
}, {
- input: "show open tables",
- output: "show open",
+ input: "show open tables",
}, {
input: "show plugins",
output: "show plugins",
@@ -1443,10 +1523,10 @@ var (
output: "show variables",
}, {
input: "show vitess_keyspaces",
- output: "show databases",
+ output: "show keyspaces",
}, {
input: "show vitess_keyspaces like '%'",
- output: "show databases like '%'",
+ output: "show keyspaces like '%'",
}, {
input: "show vitess_shards",
}, {
@@ -1463,6 +1543,26 @@ var (
input: "show vschema vindexes",
}, {
input: "show vschema vindexes on t",
+ }, {
+ input: "show vitess_migrations",
+ }, {
+ input: "show vitess_migrations from ks",
+ }, {
+ input: "show vitess_migrations from ks where col = 42",
+ }, {
+ input: `show vitess_migrations from ks like '%pattern'`,
+ }, {
+ input: "show vitess_migrations like '9748c3b7_7fdb_11eb_ac2c_f875a4d24e90'",
+ }, {
+ input: "revert vitess_migration '9748c3b7_7fdb_11eb_ac2c_f875a4d24e90'",
+ }, {
+ input: "alter vitess_migration '9748c3b7_7fdb_11eb_ac2c_f875a4d24e90' retry",
+ }, {
+ input: "alter vitess_migration '9748c3b7_7fdb_11eb_ac2c_f875a4d24e90' complete",
+ }, {
+ input: "alter vitess_migration '9748c3b7_7fdb_11eb_ac2c_f875a4d24e90' cancel",
+ }, {
+ input: "alter vitess_migration cancel all",
}, {
input: "show warnings",
output: "show warnings",
@@ -1498,13 +1598,13 @@ var (
output: "explain select * from t",
}, {
input: "desc foobar",
- output: "otherread",
+ output: "explain foobar",
}, {
- input: "explain t1",
- output: "otherread",
+ input: "explain t1",
}, {
- input: "explain t1 col",
- output: "otherread",
+ input: "explain t1 col",
+ }, {
+ input: "explain t1 '%col%'",
}, {
input: "explain select * from t",
}, {
@@ -1696,12 +1796,12 @@ var (
}, {
input: "rollback",
}, {
- input: "create database test_db",
+ input: "create database /* simple */ test_db",
}, {
input: "create schema test_db",
output: "create database test_db",
}, {
- input: "create database if not exists test_db",
+ input: "create database /* simple */ if not exists test_db",
}, {
input: "create schema if not exists test_db",
output: "create database if not exists test_db",
@@ -1714,12 +1814,15 @@ var (
output: "create database test_db",
partialDDL: true,
}, {
- input: "drop database test_db",
+ input: "CREATE DATABASE /*!32312 IF NOT EXISTS*/ `mysql` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */;",
+ output: "create database if not exists mysql default character set utf8mb4 collate utf8mb4_0900_ai_ci",
+ }, {
+ input: "drop database /* simple */ test_db",
}, {
input: "drop schema test_db",
output: "drop database test_db",
}, {
- input: "drop database if exists test_db",
+ input: "drop database /* simple */ if exists test_db",
}, {
input: "delete a.*, b.* from tbl_a a, tbl_b b where a.id = b.id and b.name = 'test'",
output: "delete a, b from tbl_a as a, tbl_b as b where a.id = b.id and b.`name` = 'test'",
@@ -1728,6 +1831,12 @@ var (
output: "select distinct a.* from (select 1 from dual union all select 1 from dual) as a",
}, {
input: "select `weird function name`() from t",
+ }, {
+ input: "select all* from t",
+ output: "select * from t",
+ }, {
+ input: "select distinct* from t",
+ output: "select distinct * from t",
}, {
input: "select status() from t", // should not escape function names that are keywords
}, {
@@ -1740,22 +1849,22 @@ var (
output: "show full columns from AO_E8B6CC_ISSUE_MAPPING from jiradb like '%'",
}, {
input: "SHOW KEYS FROM `AO_E8B6CC_ISSUE_MAPPING` FROM `jiradb`",
- output: "show keys from AO_E8B6CC_ISSUE_MAPPING from jiradb",
+ output: "show indexes from AO_E8B6CC_ISSUE_MAPPING from jiradb",
}, {
input: "SHOW CREATE TABLE `jiradb`.`AO_E8B6CC_ISSUE_MAPPING`",
output: "show create table jiradb.AO_E8B6CC_ISSUE_MAPPING",
}, {
input: "SHOW INDEX FROM `AO_E8B6CC_ISSUE_MAPPING` FROM `jiradb`",
- output: "show index from AO_E8B6CC_ISSUE_MAPPING from jiradb",
+ output: "show indexes from AO_E8B6CC_ISSUE_MAPPING from jiradb",
}, {
input: "SHOW FULL TABLES FROM `jiradb` LIKE '%'",
output: "show full tables from jiradb like '%'",
}, {
input: "SHOW EXTENDED INDEX FROM `AO_E8B6CC_PROJECT_MAPPING` FROM `jiradb`",
- output: "show extended index from AO_E8B6CC_PROJECT_MAPPING from jiradb",
+ output: "show indexes from AO_E8B6CC_PROJECT_MAPPING from jiradb",
}, {
input: "SHOW EXTENDED KEYS FROM `AO_E8B6CC_ISSUE_MAPPING` FROM `jiradb`",
- output: "show extended keys from AO_E8B6CC_ISSUE_MAPPING from jiradb",
+ output: "show indexes from AO_E8B6CC_ISSUE_MAPPING from jiradb",
}, {
input: "SHOW CREATE TABLE `jiradb`.`AO_E8B6CC_ISSUE_MAPPING`",
output: "show create table jiradb.AO_E8B6CC_ISSUE_MAPPING",
@@ -1765,12 +1874,12 @@ var (
"\tc1 int,\n" +
"\tc2 int,\n" +
"\tc3 int,\n" +
- "\tcheck (c1 != c2) enforced,\n" +
- "\tcheck (c1 > 10) enforced,\n" +
- "\tconstraint c2_positive check (c2 > 0) enforced,\n" +
- "\tcheck (c3 < 100) enforced,\n" +
- "\tconstraint c1_nonzero check (c1 != 0) enforced,\n" +
- "\tcheck (c1 > c3) enforced\n)",
+ "\tcheck (c1 != c2),\n" +
+ "\tcheck (c1 > 10),\n" +
+ "\tconstraint c2_positive check (c2 > 0),\n" +
+ "\tcheck (c3 < 100),\n" +
+ "\tconstraint c1_nonzero check (c1 != 0),\n" +
+ "\tcheck (c1 > c3)\n)",
}, {
input: "SHOW INDEXES FROM `AO_E8B6CC_ISSUE_MAPPING` FROM `jiradb`",
output: "show indexes from AO_E8B6CC_ISSUE_MAPPING from jiradb",
@@ -1779,10 +1888,10 @@ var (
output: "show full tables from jiradb like '%'",
}, {
input: "SHOW EXTENDED INDEXES FROM `AO_E8B6CC_PROJECT_MAPPING` FROM `jiradb`",
- output: "show extended indexes from AO_E8B6CC_PROJECT_MAPPING from jiradb",
+ output: "show indexes from AO_E8B6CC_PROJECT_MAPPING from jiradb",
}, {
input: "SHOW EXTENDED INDEXES IN `AO_E8B6CC_PROJECT_MAPPING` IN `jiradb`",
- output: "show extended indexes from AO_E8B6CC_PROJECT_MAPPING from jiradb",
+ output: "show indexes from AO_E8B6CC_PROJECT_MAPPING from jiradb",
}, {
input: "do 1",
output: "otheradmin",
@@ -1810,6 +1919,14 @@ var (
input: "release savepoint a",
}, {
input: "release savepoint `@@@;a`",
+ }, {
+ input: "call proc()",
+ }, {
+ input: "call qualified.proc()",
+ }, {
+ input: "call proc(1, 'foo')",
+ }, {
+ input: "call proc(@param)",
}}
)
@@ -1826,12 +1943,10 @@ func TestValid(t *testing.T) {
t.Errorf("Parsing failed. \nExpected/Got:\n%s\n%s", tcase.output, out)
}
- // CREATE INDEX currently only has 5.7 specifications.
+ // Some statements currently only have 5.7 specifications.
// For mysql 8.0 syntax, the query is not entirely parsed.
// Add more structs as we go on adding full parsing support for DDL constructs for 5.7 syntax.
switch x := tree.(type) {
- case *CreateIndex:
- assert.Equal(t, !tcase.partialDDL, x.IsFullyParsed())
case *CreateDatabase:
assert.Equal(t, !tcase.partialDDL, x.IsFullyParsed())
case *AlterDatabase:
@@ -1887,7 +2002,7 @@ func TestInvalid(t *testing.T) {
err: "syntax error",
}, {
input: "/*!*/",
- err: "empty statement",
+ err: "Query was empty",
}}
for _, tcase := range invalidSQL {
@@ -1924,6 +2039,9 @@ func TestCaseSensitivity(t *testing.T) {
}, {
input: "alter table A rename to B",
output: "alter table A rename B",
+ }, {
+ input: "alter table `A r` rename to `B r`",
+ output: "alter table `A r` rename `B r`",
}, {
input: "rename table A to B",
}, {
@@ -1934,7 +2052,7 @@ func TestCaseSensitivity(t *testing.T) {
output: "drop table if exists B",
}, {
input: "drop index b on A",
- output: "alter table A",
+ output: "alter table A drop key b",
}, {
input: "select a from B",
}, {
@@ -2196,7 +2314,7 @@ func TestConvert(t *testing.T) {
output: "syntax error at position 33",
}, {
input: "/* a comment */",
- output: "empty statement",
+ output: "Query was empty",
}, {
input: "set transaction isolation level 12345",
output: "syntax error at position 38 near '12345'",
@@ -2217,12 +2335,16 @@ func TestSelectInto(t *testing.T) {
}{{
input: "select * from t order by name limit 100 into outfile s3 'out_file_name'",
output: "select * from t order by `name` asc limit 100 into outfile s3 'out_file_name'",
+ }, {
+ input: `select * from TestPerson into outfile s3 's3://test-bucket/export_import/export/users.csv' fields terminated by ',' enclosed by '\"' escaped by '\\' overwrite on`,
}, {
input: "select * from t into dumpfile 'out_file_name'",
}, {
- input: "select * from t into outfile 'out_file_name' character set binary fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n'",
+ input: "select * from t into outfile 'out_file_name' character set binary fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\\n'",
+ }, {
+ input: "select * from t into outfile s3 'out_file_name' character set binary format csv header fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\\n' manifest on overwrite off",
}, {
- input: "select * from t into outfile s3 'out_file_name' character set binary format csv header fields terminated by 'term' optionally enclosed by 'c' escaped by 'e' lines starting by 'a' terminated by '\n' manifest on overwrite off",
+ input: "select * from t into outfile s3 'out_file_name' character set binary lines terminated by '\\n' starting by 'a' manifest on overwrite off",
}, {
input: "select * from (select * from t union select * from t2) as t3 where t3.name in (select col from t4) into outfile s3 'out_file_name'",
output: "select * from (select * from t union select * from t2) as t3 where t3.`name` in (select col from t4) into outfile s3 'out_file_name'",
@@ -2231,6 +2353,12 @@ func TestSelectInto(t *testing.T) {
input: "select * from t limit 100 into outfile s3 'out_file_name' union select * from t2",
}, {
input: "select * from (select * from t into outfile s3 'inner_outfile') as t2 into outfile s3 'out_file_name'",
+ }, {
+ input: `select * from TestPerson into outfile s3 's3://test-bucket/export_import/export/users.csv' character set 'utf8' overwrite on`,
+ }, {
+ input: `select * from t1 into outfile '/tmp/foo.csv' fields escaped by '\\' terminated by '\n'`,
+ }, {
+ input: `select * from t1 into outfile '/tmp/foo.csv' fields escaped by 'c' terminated by '\n' enclosed by '\t'`,
}}
for _, tcase := range validSQL {
@@ -2271,28 +2399,28 @@ func TestPositionedErr(t *testing.T) {
output PositionedErr
}{{
input: "select convert('abc' as date) from t",
- output: PositionedErr{"syntax error", 24, []byte("as")},
+ output: PositionedErr{"syntax error", 24, "as"},
}, {
input: "select convert from t",
- output: PositionedErr{"syntax error", 20, []byte("from")},
+ output: PositionedErr{"syntax error", 20, "from"},
}, {
input: "select cast('foo', decimal) from t",
- output: PositionedErr{"syntax error", 19, nil},
+ output: PositionedErr{"syntax error", 19, ""},
}, {
input: "select convert('abc', datetime(4+9)) from t",
- output: PositionedErr{"syntax error", 34, nil},
+ output: PositionedErr{"syntax error", 34, ""},
}, {
input: "select convert('abc', decimal(4+9)) from t",
- output: PositionedErr{"syntax error", 33, nil},
+ output: PositionedErr{"syntax error", 33, ""},
}, {
input: "set transaction isolation level 12345",
- output: PositionedErr{"syntax error", 38, []byte("12345")},
+ output: PositionedErr{"syntax error", 38, "12345"},
}, {
input: "select * from a left join b",
- output: PositionedErr{"syntax error", 28, nil},
+ output: PositionedErr{"syntax error", 28, ""},
}, {
input: "select a from (select * from tbl)",
- output: PositionedErr{"syntax error", 34, nil},
+ output: PositionedErr{"syntax error", 34, ""},
}}
for _, tcase := range invalidSQL {
@@ -2301,7 +2429,7 @@ func TestPositionedErr(t *testing.T) {
if posErr, ok := err.(PositionedErr); !ok {
t.Errorf("%s: %v expected PositionedErr, got (%T) %v", tcase.input, err, err, tcase.output)
- } else if posErr.Pos != tcase.output.Pos || !bytes.Equal(posErr.Near, tcase.output.Near) || err.Error() != tcase.output.Error() {
+ } else if posErr.Pos != tcase.output.Pos || posErr.Near != tcase.output.Near || err.Error() != tcase.output.Error() {
t.Errorf("%s: %v, want: %v", tcase.input, err, tcase.output)
}
}
@@ -2453,6 +2581,14 @@ func TestCreateTable(t *testing.T) {
" col_multipolygon2 multipolygon not null\n" +
")",
+ // test null columns
+ "create table foo (\n" +
+ " id int primary key,\n" +
+ " a varchar(255) null,\n" +
+ " b varchar(255) null default 'foo',\n" +
+ " c timestamp null default current_timestamp()\n" +
+ ")",
+
// test defining indexes separately
"create table t (\n" +
" id int auto_increment,\n" +
@@ -2529,6 +2665,15 @@ func TestCreateTable(t *testing.T) {
" constraint second_ibfk_1 foreign key (k, j) references simple (a, b) on update cascade\n" +
")",
+ // constraint name with spaces
+ "create table `Post With Space` (\n" +
+ " id int(11) not null auto_increment,\n" +
+ " user_id int(11) not null,\n" +
+ " primary key (id),\n" +
+ " unique key post_user_unique (user_id),\n" +
+ " constraint `Post With Space_ibfk_1` foreign key (user_id) references `User` (id)\n" +
+ ") ENGINE Innodb",
+
// table options
"create table t (\n" +
" id int auto_increment\n" +
@@ -2972,11 +3117,6 @@ var (
input: "select /* aa",
output: "syntax error at position 13 near '/* aa'",
excludeMulti: true,
- }, {
- // non_reserved keywords are currently not permitted everywhere
- input: "create database repair",
- output: "syntax error at position 23 near 'repair'",
- excludeMulti: true,
}}
)
@@ -3024,120 +3164,137 @@ func TestSkipToEnd(t *testing.T) {
}
}
-func TestParseDjangoQueries(t *testing.T) {
-
- file, err := os.Open("./test_queries/django_queries.txt")
- if err != nil {
- t.Errorf(" Error: %v", err)
- }
+func loadQueries(t testing.TB, filename string) (queries []string) {
+ file, err := os.Open(path.Join("testdata", filename))
+ require.NoError(t, err)
defer file.Close()
- scanner := bufio.NewScanner(file)
-
- for scanner.Scan() {
- _, err := Parse(string(scanner.Text()))
+ var read io.Reader
+ if strings.HasSuffix(filename, ".gz") {
+ gzread, err := gzip.NewReader(file)
if err != nil {
- t.Error(scanner.Text())
- t.Errorf(" Error: %v", err)
+ t.Fatal(err)
}
+ defer gzread.Close()
+ read = gzread
+ } else {
+ read = file
}
-}
-// Benchmark run on 6/23/17, prior to improvements:
-// BenchmarkParse1-4 100000 16334 ns/op
-// BenchmarkParse2-4 30000 44121 ns/op
-
-// Benchmark run on 9/3/18, comparing pooled parser performance.
-//
-// benchmark old ns/op new ns/op delta
-// BenchmarkNormalize-4 2540 2533 -0.28%
-// BenchmarkParse1-4 18269 13330 -27.03%
-// BenchmarkParse2-4 46703 41255 -11.67%
-// BenchmarkParse2Parallel-4 22246 20707 -6.92%
-// BenchmarkParse3-4 4064743 4083135 +0.45%
-//
-// benchmark old allocs new allocs delta
-// BenchmarkNormalize-4 27 27 +0.00%
-// BenchmarkParse1-4 75 74 -1.33%
-// BenchmarkParse2-4 264 263 -0.38%
-// BenchmarkParse2Parallel-4 176 175 -0.57%
-// BenchmarkParse3-4 360 361 +0.28%
-//
-// benchmark old bytes new bytes delta
-// BenchmarkNormalize-4 821 821 +0.00%
-// BenchmarkParse1-4 22776 2307 -89.87%
-// BenchmarkParse2-4 28352 7881 -72.20%
-// BenchmarkParse2Parallel-4 25712 5235 -79.64%
-// BenchmarkParse3-4 6352082 6336307 -0.25%
-
-const (
- sql1 = "select 'abcd', 20, 30.0, eid from a where 1=eid and name='3'"
- sql2 = "select aaaa, bbb, ccc, ddd, eeee, ffff, gggg, hhhh, iiii from tttt, ttt1, ttt3 where aaaa = bbbb and bbbb = cccc and dddd+1 = eeee group by fff, gggg having hhhh = iiii and iiii = jjjj order by kkkk, llll limit 3, 4"
-)
+ scanner := bufio.NewScanner(read)
+ for scanner.Scan() {
+ queries = append(queries, scanner.Text())
+ }
+ return queries
+}
-func BenchmarkParse1(b *testing.B) {
- sql := sql1
- for i := 0; i < b.N; i++ {
- ast, err := Parse(sql)
+func TestParseDjangoQueries(t *testing.T) {
+ for _, query := range loadQueries(t, "django_queries.txt") {
+ _, err := Parse(query)
if err != nil {
- b.Fatal(err)
+ t.Errorf("failed to parse %q: %v", query, err)
}
- _ = String(ast)
}
}
-func BenchmarkParse2(b *testing.B) {
- sql := sql2
- for i := 0; i < b.N; i++ {
- ast, err := Parse(sql)
+func TestParseLobstersQueries(t *testing.T) {
+ for _, query := range loadQueries(t, "lobsters.sql.gz") {
+ _, err := Parse(query)
if err != nil {
- b.Fatal(err)
+ t.Errorf("failed to parse %q: %v", query, err)
}
- _ = String(ast)
}
}
-func BenchmarkParse2Parallel(b *testing.B) {
- sql := sql2
- b.RunParallel(func(pb *testing.PB) {
- for pb.Next() {
- ast, err := Parse(sql)
- if err != nil {
- b.Fatal(err)
+func BenchmarkParseTraces(b *testing.B) {
+ for _, trace := range []string{"django_queries.txt", "lobsters.sql.gz"} {
+ b.Run(trace, func(b *testing.B) {
+ queries := loadQueries(b, trace)
+ if len(queries) > 10000 {
+ queries = queries[:10000]
}
- _ = ast
- }
- })
-}
+ b.ResetTimer()
+ b.ReportAllocs()
+
+ for i := 0; i < b.N; i++ {
+ for _, query := range queries {
+ _, err := Parse(query)
+ if err != nil {
+ b.Fatal(err)
+ }
+ }
+ }
+ })
+ }
-var benchQuery string
+}
-func init() {
- // benchQuerySize is the approximate size of the query.
- benchQuerySize := 1000000
+func BenchmarkParseStress(b *testing.B) {
+ const (
+ sql1 = "select 'abcd', 20, 30.0, eid from a where 1=eid and name='3'"
+ sql2 = "select aaaa, bbb, ccc, ddd, eeee, ffff, gggg, hhhh, iiii from tttt, ttt1, ttt3 where aaaa = bbbb and bbbb = cccc and dddd+1 = eeee group by fff, gggg having hhhh = iiii and iiii = jjjj order by kkkk, llll limit 3, 4"
+ )
- // Size of value is 1/10 size of query. Then we add
- // 10 such values to the where clause.
- var baseval bytes.Buffer
- for i := 0; i < benchQuerySize/100; i++ {
- // Add an escape character: This will force the upcoming
- // tokenizer improvement to still create a copy of the string.
- // Then we can see if avoiding the copy will be worth it.
- baseval.WriteString("\\'123456789")
- }
+ for i, sql := range []string{sql1, sql2} {
+ b.Run(fmt.Sprintf("sql%d", i), func(b *testing.B) {
+ var buf bytes.Buffer
+ buf.WriteString(sql)
+ querySQL := buf.String()
+ b.ReportAllocs()
+ b.ResetTimer()
- var buf bytes.Buffer
- buf.WriteString("select a from t1 where v = 1")
- for i := 0; i < 10; i++ {
- fmt.Fprintf(&buf, " and v%d = \"%d%s\"", i, i, baseval.String())
+ for i := 0; i < b.N; i++ {
+ _, err := Parse(querySQL)
+ if err != nil {
+ b.Fatal(err)
+ }
+ }
+ })
}
- benchQuery = buf.String()
}
func BenchmarkParse3(b *testing.B) {
- for i := 0; i < b.N; i++ {
- if _, err := Parse(benchQuery); err != nil {
- b.Fatal(err)
+ largeQueryBenchmark := func(b *testing.B, escape bool) {
+ b.Helper()
+
+ // benchQuerySize is the approximate size of the query.
+ benchQuerySize := 1000000
+
+ // Size of value is 1/10 size of query. Then we add
+ // 10 such values to the where clause.
+ var baseval bytes.Buffer
+ for i := 0; i < benchQuerySize/100; i++ {
+ // Add an escape character: This will force the upcoming
+ // tokenizer improvement to still create a copy of the string.
+ // Then we can see if avoiding the copy will be worth it.
+ if escape {
+ baseval.WriteString("\\'123456789")
+ } else {
+ baseval.WriteString("123456789")
+ }
+ }
+
+ var buf bytes.Buffer
+ buf.WriteString("select a from t1 where v = 1")
+ for i := 0; i < 10; i++ {
+ fmt.Fprintf(&buf, " and v%d = \"%d%s\"", i, i, baseval.String())
+ }
+ benchQuery := buf.String()
+ b.ResetTimer()
+ b.ReportAllocs()
+
+ for i := 0; i < b.N; i++ {
+ if _, err := Parse(benchQuery); err != nil {
+ b.Fatal(err)
+ }
}
}
+
+ b.Run("normal", func(b *testing.B) {
+ largeQueryBenchmark(b, false)
+ })
+
+ b.Run("escaped", func(b *testing.B) {
+ largeQueryBenchmark(b, true)
+ })
}
diff --git a/go/vt/sqlparser/parser.go b/go/vt/sqlparser/parser.go
index 08df99efb65..c06cb662e6c 100644
--- a/go/vt/sqlparser/parser.go
+++ b/go/vt/sqlparser/parser.go
@@ -17,10 +17,8 @@ limitations under the License.
package sqlparser
import (
- "errors"
"fmt"
"io"
- "runtime/debug"
"sync"
"vitess.io/vitess/go/vt/log"
@@ -30,33 +28,27 @@ import (
)
// parserPool is a pool for parser objects.
-var parserPool = sync.Pool{}
+var parserPool = sync.Pool{
+ New: func() interface{} {
+ return &yyParserImpl{}
+ },
+}
// zeroParser is a zero-initialized parser to help reinitialize the parser for pooling.
-var zeroParser = *(yyNewParser().(*yyParserImpl))
+var zeroParser yyParserImpl
+
+// MySQLVersion is the version of MySQL that the parser would emulate
+var MySQLVersion string = "50709"
// yyParsePooled is a wrapper around yyParse that pools the parser objects. There isn't a
-// particularly good reason to use yyParse directly, since it immediately discards its parser. What
-// would be ideal down the line is to actually pool the stacks themselves rather than the parser
-// objects, as per https://github.com/cznic/goyacc/blob/master/main.go. However, absent an upstream
-// change to goyacc, this is the next best option.
+// particularly good reason to use yyParse directly, since it immediately discards its parser.
//
// N.B: Parser pooling means that you CANNOT take references directly to parse stack variables (e.g.
// $$ = &$4) in sql.y rules. You must instead add an intermediate reference like so:
// showCollationFilterOpt := $4
// $$ = &Show{Type: string($2), ShowCollationFilterOpt: &showCollationFilterOpt}
func yyParsePooled(yylex yyLexer) int {
- // Being very particular about using the base type and not an interface type b/c we depend on
- // the implementation to know how to reinitialize the parser.
- var parser *yyParserImpl
-
- i := parserPool.Get()
- if i != nil {
- parser = i.(*yyParserImpl)
- } else {
- parser = yyNewParser().(*yyParserImpl)
- }
-
+ parser := parserPool.Get().(*yyParserImpl)
defer func() {
*parser = zeroParser
parserPool.Put(parser)
@@ -76,28 +68,34 @@ func yyParsePooled(yylex yyLexer) int {
// a set of types, define the function as iTypeName.
// This will help avoid name collisions.
-// Parse parses the SQL in full and returns a Statement, which
-// is the AST representation of the query. If a DDL statement
+// Parse2 parses the SQL in full and returns a Statement, which
+// is the AST representation of the query, and a set of BindVars, which are all the
+// bind variables that were found in the original SQL query. If a DDL statement
// is partially parsed but still contains a syntax error, the
// error is ignored and the DDL is returned anyway.
-func Parse(sql string) (Statement, error) {
+func Parse2(sql string) (Statement, BindVars, error) {
tokenizer := NewStringTokenizer(sql)
if yyParsePooled(tokenizer) != 0 {
if tokenizer.partialDDL != nil {
if typ, val := tokenizer.Scan(); typ != 0 {
- return nil, fmt.Errorf("extra characters encountered after end of DDL: '%s'", string(val))
+ return nil, nil, fmt.Errorf("extra characters encountered after end of DDL: '%s'", string(val))
}
log.Warningf("ignoring error parsing DDL '%s': %v", sql, tokenizer.LastError)
tokenizer.ParseTree = tokenizer.partialDDL
- return tokenizer.ParseTree, nil
+ return tokenizer.ParseTree, tokenizer.BindVars, nil
}
- return nil, vterrors.New(vtrpcpb.Code_INVALID_ARGUMENT, tokenizer.LastError.Error())
+ return nil, nil, vterrors.New(vtrpcpb.Code_INVALID_ARGUMENT, tokenizer.LastError.Error())
}
if tokenizer.ParseTree == nil {
- log.Infof("Empty Statement: %s", debug.Stack())
- return nil, ErrEmpty
+ return nil, nil, ErrEmpty
}
- return tokenizer.ParseTree, nil
+ return tokenizer.ParseTree, tokenizer.BindVars, nil
+}
+
+// Parse behaves like Parse2 but does not return a set of bind variables
+func Parse(sql string) (Statement, error) {
+ stmt, _, err := Parse2(sql)
+ return stmt, err
}
// ParseStrictDDL is the same as Parse except it errors on
@@ -108,8 +106,6 @@ func ParseStrictDDL(sql string) (Statement, error) {
return nil, tokenizer.LastError
}
if tokenizer.ParseTree == nil {
- log.Infof("Empty Statement DDL: %s", debug.Stack())
-
return nil, ErrEmpty
}
return tokenizer.ParseTree, nil
@@ -137,11 +133,11 @@ func ParseNextStrictDDL(tokenizer *Tokenizer) (Statement, error) {
}
func parseNext(tokenizer *Tokenizer, strict bool) (Statement, error) {
- if tokenizer.lastChar == ';' {
- tokenizer.next()
+ if tokenizer.cur() == ';' {
+ tokenizer.skip(1)
tokenizer.skipBlank()
}
- if tokenizer.lastChar == eofChar {
+ if tokenizer.cur() == eofChar {
return nil, io.EOF
}
@@ -161,7 +157,7 @@ func parseNext(tokenizer *Tokenizer, strict bool) (Statement, error) {
}
// ErrEmpty is a sentinel error returned when parsing empty statements.
-var ErrEmpty = errors.New("empty statement")
+var ErrEmpty = vterrors.NewErrorf(vtrpcpb.Code_INVALID_ARGUMENT, vterrors.EmptyQuery, "Query was empty")
// SplitStatement returns the first sql statement up to either a ; or EOF
// and the remainder from the given buffer
@@ -178,7 +174,7 @@ func SplitStatement(blob string) (string, string, error) {
return "", "", tokenizer.LastError
}
if tkn == ';' {
- return blob[:tokenizer.Position-2], blob[tokenizer.Position-1:], nil
+ return blob[:tokenizer.Pos-1], blob[tokenizer.Pos:], nil
}
return blob, "", nil
}
@@ -198,14 +194,14 @@ loop:
tkn, _ = tokenizer.Scan()
switch tkn {
case ';':
- stmt = blob[stmtBegin : tokenizer.Position-2]
+ stmt = blob[stmtBegin : tokenizer.Pos-1]
if !emptyStatement {
pieces = append(pieces, stmt)
emptyStatement = true
}
- stmtBegin = tokenizer.Position - 1
+ stmtBegin = tokenizer.Pos
case 0, eofChar:
- blobTail := tokenizer.Position - 2
+ blobTail := tokenizer.Pos - 1
if stmtBegin < blobTail {
stmt = blob[stmtBegin : blobTail+1]
if !emptyStatement {
@@ -229,6 +225,6 @@ func String(node SQLNode) string {
}
buf := NewTrackedBuffer(nil)
- buf.Myprintf("%v", node)
+ node.formatFast(buf)
return buf.String()
}
diff --git a/go/vt/sqlparser/precedence_test.go b/go/vt/sqlparser/precedence_test.go
index 801a8faa1d2..7b917f8e698 100644
--- a/go/vt/sqlparser/precedence_test.go
+++ b/go/vt/sqlparser/precedence_test.go
@@ -132,6 +132,7 @@ func TestParens(t *testing.T) {
{in: "(a & b) | c", expected: "a & b | c"},
{in: "not (a=b and c=d)", expected: "not (a = b and c = d)"},
{in: "not (a=b) and c=d", expected: "not a = b and c = d"},
+ {in: "(not (a=b)) and c=d", expected: "not a = b and c = d"},
{in: "-(12)", expected: "-12"},
{in: "-(12 + 12)", expected: "-(12 + 12)"},
{in: "(1 > 2) and (1 = b)", expected: "1 > 2 and 1 = b"},
diff --git a/go/vt/sqlparser/random_expr.go b/go/vt/sqlparser/random_expr.go
index a2c1638c1de..61ab7ed6536 100644
--- a/go/vt/sqlparser/random_expr.go
+++ b/go/vt/sqlparser/random_expr.go
@@ -126,13 +126,13 @@ func (g *generator) randomBool() bool {
func (g *generator) intLiteral() Expr {
t := fmt.Sprintf("%d", g.r.Intn(1000)-g.r.Intn((1000)))
- return NewIntLiteral([]byte(t))
+ return NewIntLiteral(t)
}
var words = []string{"ox", "ant", "ape", "asp", "bat", "bee", "boa", "bug", "cat", "cod", "cow", "cub", "doe", "dog", "eel", "eft", "elf", "elk", "emu", "ewe", "fly", "fox", "gar", "gnu", "hen", "hog", "imp", "jay", "kid", "kit", "koi", "lab", "man", "owl", "pig", "pug", "pup", "ram", "rat", "ray", "yak", "bass", "bear", "bird", "boar", "buck", "bull", "calf", "chow", "clam", "colt", "crab", "crow", "dane", "deer", "dodo", "dory", "dove", "drum", "duck", "fawn", "fish", "flea", "foal", "fowl", "frog", "gnat", "goat", "grub", "gull", "hare", "hawk", "ibex", "joey", "kite", "kiwi", "lamb", "lark", "lion", "loon", "lynx", "mako", "mink", "mite", "mole", "moth", "mule", "mutt", "newt", "orca", "oryx", "pika", "pony", "puma", "seal", "shad", "slug", "sole", "stag", "stud", "swan", "tahr", "teal", "tick", "toad", "tuna", "wasp", "wolf", "worm", "wren", "yeti", "adder", "akita", "alien", "aphid", "bison", "boxer", "bream", "bunny", "burro", "camel", "chimp", "civet", "cobra", "coral", "corgi", "crane", "dingo", "drake", "eagle", "egret", "filly", "finch", "gator", "gecko", "ghost", "ghoul", "goose", "guppy", "heron", "hippo", "horse", "hound", "husky", "hyena", "koala", "krill", "leech", "lemur", "liger", "llama", "louse", "macaw", "midge", "molly", "moose", "moray", "mouse", "panda", "perch", "prawn", "quail", "racer", "raven", "rhino", "robin", "satyr", "shark", "sheep", "shrew", "skink", "skunk", "sloth", "snail", "snake", "snipe", "squid", "stork", "swift", "swine", "tapir", "tetra", "tiger", "troll", "trout", "viper", "wahoo", "whale", "zebra", "alpaca", "amoeba", "baboon", "badger", "beagle", "bedbug", "beetle", "bengal", "bobcat", "caiman", "cattle", "cicada", "collie", "condor", "cougar", "coyote", "dassie", "donkey", "dragon", "earwig", "falcon", "feline", "ferret", "gannet", "gibbon", "glider", "goblin", "gopher", "grouse", "guinea", "hermit", "hornet", "iguana", "impala", "insect", "jackal", "jaguar", "jennet", "kitten", "kodiak", "lizard", "locust", "maggot", "magpie", "mammal", "mantis", "marlin", "marmot", "marten", "martin", "mayfly", "minnow", "monkey", "mullet", "muskox", "ocelot", "oriole", "osprey", "oyster", "parrot", "pigeon", "piglet", "poodle", "possum", "python", "quagga", "rabbit", "raptor", "rodent", "roughy", "salmon", "sawfly", "serval", "shiner", "shrimp", "spider", "sponge", "tarpon", "thrush", "tomcat", "toucan", "turkey", "turtle", "urchin", "vervet", "walrus", "weasel", "weevil", "wombat", "anchovy", "anemone", "bluejay", "buffalo", "bulldog", "buzzard", "caribou", "catfish", "chamois", "cheetah", "chicken", "chigger", "cowbird", "crappie", "crawdad", "cricket", "dogfish", "dolphin", "firefly", "garfish", "gazelle", "gelding", "giraffe", "gobbler", "gorilla", "goshawk", "grackle", "griffon", "grizzly", "grouper", "haddock", "hagfish", "halibut", "hamster", "herring", "jackass", "javelin", "jawfish", "jaybird", "katydid", "ladybug", "lamprey", "lemming", "leopard", "lioness", "lobster", "macaque", "mallard", "mammoth", "manatee", "mastiff", "meerkat", "mollusk", "monarch", "mongrel", "monitor", "monster", "mudfish", "muskrat", "mustang", "narwhal", "oarfish", "octopus", "opossum", "ostrich", "panther", "peacock", "pegasus", "pelican", "penguin", "phoenix", "piranha", "polecat", "primate", "quetzal", "raccoon", "rattler", "redbird", "redfish", "reptile", "rooster", "sawfish", "sculpin", "seagull", "skylark", "snapper", "spaniel", "sparrow", "sunbeam", "sunbird", "sunfish", "tadpole", "termite", "terrier", "unicorn", "vulture", "wallaby", "walleye", "warthog", "whippet", "wildcat", "aardvark", "airedale", "albacore", "anteater", "antelope", "arachnid", "barnacle", "basilisk", "blowfish", "bluebird", "bluegill", "bonefish", "bullfrog", "cardinal", "chipmunk", "cockatoo", "crayfish", "dinosaur", "doberman", "duckling", "elephant", "escargot", "flamingo", "flounder", "foxhound", "glowworm", "goldfish", "grubworm", "hedgehog", "honeybee", "hookworm", "humpback", "kangaroo", "killdeer", "kingfish", "labrador", "lacewing", "ladybird", "lionfish", "longhorn", "mackerel", "malamute", "marmoset", "mastodon", "moccasin", "mongoose", "monkfish", "mosquito", "pangolin", "parakeet", "pheasant", "pipefish", "platypus", "polliwog", "porpoise", "reindeer", "ringtail", "sailfish", "scorpion", "seahorse", "seasnail", "sheepdog", "shepherd", "silkworm", "squirrel", "stallion", "starfish", "starling", "stingray", "stinkbug", "sturgeon", "terrapin", "titmouse", "tortoise", "treefrog", "werewolf", "woodcock"}
func (g *generator) stringLiteral() Expr {
- return NewStrLiteral([]byte(g.randomOfS(words)))
+ return NewStrLiteral(g.randomOfS(words))
}
func (g *generator) stringExpr() Expr {
diff --git a/go/vt/sqlparser/redact_query.go b/go/vt/sqlparser/redact_query.go
index 55b760178f8..04295c1509f 100644
--- a/go/vt/sqlparser/redact_query.go
+++ b/go/vt/sqlparser/redact_query.go
@@ -23,13 +23,16 @@ func RedactSQLQuery(sql string) (string, error) {
bv := map[string]*querypb.BindVariable{}
sqlStripped, comments := SplitMarginComments(sql)
- stmt, err := Parse(sqlStripped)
+ stmt, reservedVars, err := Parse2(sqlStripped)
if err != nil {
return "", err
}
prefix := "redacted"
- Normalize(stmt, bv, prefix)
+ err = Normalize(stmt, reservedVars, bv, prefix)
+ if err != nil {
+ return "", err
+ }
return comments.Leading + String(stmt) + comments.Trailing, nil
}
diff --git a/go/vt/sqlparser/rewriter.go b/go/vt/sqlparser/rewriter.go
deleted file mode 100644
index 4cda2deca5e..00000000000
--- a/go/vt/sqlparser/rewriter.go
+++ /dev/null
@@ -1,1747 +0,0 @@
-// Code generated by visitorgen/main/main.go. DO NOT EDIT.
-
-package sqlparser
-
-//go:generate go run ./visitorgen/main -input=ast.go -output=rewriter.go
-
-import (
- "reflect"
-)
-
-type replacerFunc func(newNode, parent SQLNode)
-
-// application carries all the shared data so we can pass it around cheaply.
-type application struct {
- pre, post ApplyFunc
- cursor Cursor
-}
-
-func replaceAddColumnsAfter(newNode, parent SQLNode) {
- parent.(*AddColumns).After = newNode.(*ColName)
-}
-
-type replaceAddColumnsColumns int
-
-func (r *replaceAddColumnsColumns) replace(newNode, container SQLNode) {
- container.(*AddColumns).Columns[int(*r)] = newNode.(*ColumnDefinition)
-}
-
-func (r *replaceAddColumnsColumns) inc() {
- *r++
-}
-
-func replaceAddColumnsFirst(newNode, parent SQLNode) {
- parent.(*AddColumns).First = newNode.(*ColName)
-}
-
-func replaceAddConstraintDefinitionConstraintDefinition(newNode, parent SQLNode) {
- parent.(*AddConstraintDefinition).ConstraintDefinition = newNode.(*ConstraintDefinition)
-}
-
-func replaceAddIndexDefinitionIndexDefinition(newNode, parent SQLNode) {
- parent.(*AddIndexDefinition).IndexDefinition = newNode.(*IndexDefinition)
-}
-
-func replaceAliasedExprAs(newNode, parent SQLNode) {
- parent.(*AliasedExpr).As = newNode.(ColIdent)
-}
-
-func replaceAliasedExprExpr(newNode, parent SQLNode) {
- parent.(*AliasedExpr).Expr = newNode.(Expr)
-}
-
-func replaceAliasedTableExprAs(newNode, parent SQLNode) {
- parent.(*AliasedTableExpr).As = newNode.(TableIdent)
-}
-
-func replaceAliasedTableExprExpr(newNode, parent SQLNode) {
- parent.(*AliasedTableExpr).Expr = newNode.(SimpleTableExpr)
-}
-
-func replaceAliasedTableExprHints(newNode, parent SQLNode) {
- parent.(*AliasedTableExpr).Hints = newNode.(*IndexHints)
-}
-
-func replaceAliasedTableExprPartitions(newNode, parent SQLNode) {
- parent.(*AliasedTableExpr).Partitions = newNode.(Partitions)
-}
-
-func replaceAlterColumnColumn(newNode, parent SQLNode) {
- parent.(*AlterColumn).Column = newNode.(*ColName)
-}
-
-func replaceAlterColumnDefaultVal(newNode, parent SQLNode) {
- parent.(*AlterColumn).DefaultVal = newNode.(Expr)
-}
-
-type replaceAlterTableAlterOptions int
-
-func (r *replaceAlterTableAlterOptions) replace(newNode, container SQLNode) {
- container.(*AlterTable).AlterOptions[int(*r)] = newNode.(AlterOption)
-}
-
-func (r *replaceAlterTableAlterOptions) inc() {
- *r++
-}
-
-func replaceAlterTablePartitionSpec(newNode, parent SQLNode) {
- parent.(*AlterTable).PartitionSpec = newNode.(*PartitionSpec)
-}
-
-func replaceAlterTableTable(newNode, parent SQLNode) {
- parent.(*AlterTable).Table = newNode.(TableName)
-}
-
-func replaceAlterViewColumns(newNode, parent SQLNode) {
- parent.(*AlterView).Columns = newNode.(Columns)
-}
-
-func replaceAlterViewSelect(newNode, parent SQLNode) {
- parent.(*AlterView).Select = newNode.(SelectStatement)
-}
-
-func replaceAlterViewViewName(newNode, parent SQLNode) {
- parent.(*AlterView).ViewName = newNode.(TableName)
-}
-
-func replaceAlterVschemaAutoIncSpec(newNode, parent SQLNode) {
- parent.(*AlterVschema).AutoIncSpec = newNode.(*AutoIncSpec)
-}
-
-func replaceAlterVschemaTable(newNode, parent SQLNode) {
- parent.(*AlterVschema).Table = newNode.(TableName)
-}
-
-type replaceAlterVschemaVindexCols int
-
-func (r *replaceAlterVschemaVindexCols) replace(newNode, container SQLNode) {
- container.(*AlterVschema).VindexCols[int(*r)] = newNode.(ColIdent)
-}
-
-func (r *replaceAlterVschemaVindexCols) inc() {
- *r++
-}
-
-func replaceAlterVschemaVindexSpec(newNode, parent SQLNode) {
- parent.(*AlterVschema).VindexSpec = newNode.(*VindexSpec)
-}
-
-func replaceAndExprLeft(newNode, parent SQLNode) {
- parent.(*AndExpr).Left = newNode.(Expr)
-}
-
-func replaceAndExprRight(newNode, parent SQLNode) {
- parent.(*AndExpr).Right = newNode.(Expr)
-}
-
-func replaceAutoIncSpecColumn(newNode, parent SQLNode) {
- parent.(*AutoIncSpec).Column = newNode.(ColIdent)
-}
-
-func replaceAutoIncSpecSequence(newNode, parent SQLNode) {
- parent.(*AutoIncSpec).Sequence = newNode.(TableName)
-}
-
-func replaceBinaryExprLeft(newNode, parent SQLNode) {
- parent.(*BinaryExpr).Left = newNode.(Expr)
-}
-
-func replaceBinaryExprRight(newNode, parent SQLNode) {
- parent.(*BinaryExpr).Right = newNode.(Expr)
-}
-
-func replaceCaseExprElse(newNode, parent SQLNode) {
- parent.(*CaseExpr).Else = newNode.(Expr)
-}
-
-func replaceCaseExprExpr(newNode, parent SQLNode) {
- parent.(*CaseExpr).Expr = newNode.(Expr)
-}
-
-type replaceCaseExprWhens int
-
-func (r *replaceCaseExprWhens) replace(newNode, container SQLNode) {
- container.(*CaseExpr).Whens[int(*r)] = newNode.(*When)
-}
-
-func (r *replaceCaseExprWhens) inc() {
- *r++
-}
-
-func replaceChangeColumnAfter(newNode, parent SQLNode) {
- parent.(*ChangeColumn).After = newNode.(*ColName)
-}
-
-func replaceChangeColumnFirst(newNode, parent SQLNode) {
- parent.(*ChangeColumn).First = newNode.(*ColName)
-}
-
-func replaceChangeColumnNewColDefinition(newNode, parent SQLNode) {
- parent.(*ChangeColumn).NewColDefinition = newNode.(*ColumnDefinition)
-}
-
-func replaceChangeColumnOldColumn(newNode, parent SQLNode) {
- parent.(*ChangeColumn).OldColumn = newNode.(*ColName)
-}
-
-func replaceCheckConstraintDefinitionExpr(newNode, parent SQLNode) {
- parent.(*CheckConstraintDefinition).Expr = newNode.(Expr)
-}
-
-func replaceColNameName(newNode, parent SQLNode) {
- parent.(*ColName).Name = newNode.(ColIdent)
-}
-
-func replaceColNameQualifier(newNode, parent SQLNode) {
- parent.(*ColName).Qualifier = newNode.(TableName)
-}
-
-func replaceCollateExprExpr(newNode, parent SQLNode) {
- parent.(*CollateExpr).Expr = newNode.(Expr)
-}
-
-func replaceColumnDefinitionName(newNode, parent SQLNode) {
- parent.(*ColumnDefinition).Name = newNode.(ColIdent)
-}
-
-func replaceColumnTypeComment(newNode, parent SQLNode) {
- parent.(*ColumnType).Comment = newNode.(*Literal)
-}
-
-func replaceColumnTypeDefault(newNode, parent SQLNode) {
- parent.(*ColumnType).Default = newNode.(Expr)
-}
-
-func replaceColumnTypeLength(newNode, parent SQLNode) {
- parent.(*ColumnType).Length = newNode.(*Literal)
-}
-
-func replaceColumnTypeOnUpdate(newNode, parent SQLNode) {
- parent.(*ColumnType).OnUpdate = newNode.(Expr)
-}
-
-func replaceColumnTypeScale(newNode, parent SQLNode) {
- parent.(*ColumnType).Scale = newNode.(*Literal)
-}
-
-type replaceColumnsItems int
-
-func (r *replaceColumnsItems) replace(newNode, container SQLNode) {
- container.(Columns)[int(*r)] = newNode.(ColIdent)
-}
-
-func (r *replaceColumnsItems) inc() {
- *r++
-}
-
-func replaceComparisonExprEscape(newNode, parent SQLNode) {
- parent.(*ComparisonExpr).Escape = newNode.(Expr)
-}
-
-func replaceComparisonExprLeft(newNode, parent SQLNode) {
- parent.(*ComparisonExpr).Left = newNode.(Expr)
-}
-
-func replaceComparisonExprRight(newNode, parent SQLNode) {
- parent.(*ComparisonExpr).Right = newNode.(Expr)
-}
-
-func replaceConstraintDefinitionDetails(newNode, parent SQLNode) {
- parent.(*ConstraintDefinition).Details = newNode.(ConstraintInfo)
-}
-
-func replaceConvertExprExpr(newNode, parent SQLNode) {
- parent.(*ConvertExpr).Expr = newNode.(Expr)
-}
-
-func replaceConvertExprType(newNode, parent SQLNode) {
- parent.(*ConvertExpr).Type = newNode.(*ConvertType)
-}
-
-func replaceConvertTypeLength(newNode, parent SQLNode) {
- parent.(*ConvertType).Length = newNode.(*Literal)
-}
-
-func replaceConvertTypeScale(newNode, parent SQLNode) {
- parent.(*ConvertType).Scale = newNode.(*Literal)
-}
-
-func replaceConvertUsingExprExpr(newNode, parent SQLNode) {
- parent.(*ConvertUsingExpr).Expr = newNode.(Expr)
-}
-
-func replaceCreateIndexName(newNode, parent SQLNode) {
- parent.(*CreateIndex).Name = newNode.(ColIdent)
-}
-
-func replaceCreateIndexTable(newNode, parent SQLNode) {
- parent.(*CreateIndex).Table = newNode.(TableName)
-}
-
-func replaceCreateTableOptLike(newNode, parent SQLNode) {
- parent.(*CreateTable).OptLike = newNode.(*OptLike)
-}
-
-func replaceCreateTableTable(newNode, parent SQLNode) {
- parent.(*CreateTable).Table = newNode.(TableName)
-}
-
-func replaceCreateTableTableSpec(newNode, parent SQLNode) {
- parent.(*CreateTable).TableSpec = newNode.(*TableSpec)
-}
-
-func replaceCreateViewColumns(newNode, parent SQLNode) {
- parent.(*CreateView).Columns = newNode.(Columns)
-}
-
-func replaceCreateViewSelect(newNode, parent SQLNode) {
- parent.(*CreateView).Select = newNode.(SelectStatement)
-}
-
-func replaceCreateViewViewName(newNode, parent SQLNode) {
- parent.(*CreateView).ViewName = newNode.(TableName)
-}
-
-func replaceCurTimeFuncExprFsp(newNode, parent SQLNode) {
- parent.(*CurTimeFuncExpr).Fsp = newNode.(Expr)
-}
-
-func replaceCurTimeFuncExprName(newNode, parent SQLNode) {
- parent.(*CurTimeFuncExpr).Name = newNode.(ColIdent)
-}
-
-func replaceDDLFromTables(newNode, parent SQLNode) {
- parent.(*DDL).FromTables = newNode.(TableNames)
-}
-
-func replaceDDLOptLike(newNode, parent SQLNode) {
- parent.(*DDL).OptLike = newNode.(*OptLike)
-}
-
-func replaceDDLPartitionSpec(newNode, parent SQLNode) {
- parent.(*DDL).PartitionSpec = newNode.(*PartitionSpec)
-}
-
-func replaceDDLTable(newNode, parent SQLNode) {
- parent.(*DDL).Table = newNode.(TableName)
-}
-
-func replaceDDLTableSpec(newNode, parent SQLNode) {
- parent.(*DDL).TableSpec = newNode.(*TableSpec)
-}
-
-func replaceDDLToTables(newNode, parent SQLNode) {
- parent.(*DDL).ToTables = newNode.(TableNames)
-}
-
-func replaceDeleteComments(newNode, parent SQLNode) {
- parent.(*Delete).Comments = newNode.(Comments)
-}
-
-func replaceDeleteLimit(newNode, parent SQLNode) {
- parent.(*Delete).Limit = newNode.(*Limit)
-}
-
-func replaceDeleteOrderBy(newNode, parent SQLNode) {
- parent.(*Delete).OrderBy = newNode.(OrderBy)
-}
-
-func replaceDeletePartitions(newNode, parent SQLNode) {
- parent.(*Delete).Partitions = newNode.(Partitions)
-}
-
-func replaceDeleteTableExprs(newNode, parent SQLNode) {
- parent.(*Delete).TableExprs = newNode.(TableExprs)
-}
-
-func replaceDeleteTargets(newNode, parent SQLNode) {
- parent.(*Delete).Targets = newNode.(TableNames)
-}
-
-func replaceDeleteWhere(newNode, parent SQLNode) {
- parent.(*Delete).Where = newNode.(*Where)
-}
-
-func replaceDerivedTableSelect(newNode, parent SQLNode) {
- parent.(*DerivedTable).Select = newNode.(SelectStatement)
-}
-
-func replaceDropColumnName(newNode, parent SQLNode) {
- parent.(*DropColumn).Name = newNode.(*ColName)
-}
-
-func replaceDropTableFromTables(newNode, parent SQLNode) {
- parent.(*DropTable).FromTables = newNode.(TableNames)
-}
-
-func replaceDropViewFromTables(newNode, parent SQLNode) {
- parent.(*DropView).FromTables = newNode.(TableNames)
-}
-
-func replaceExistsExprSubquery(newNode, parent SQLNode) {
- parent.(*ExistsExpr).Subquery = newNode.(*Subquery)
-}
-
-func replaceExplainStatement(newNode, parent SQLNode) {
- parent.(*Explain).Statement = newNode.(Statement)
-}
-
-type replaceExprsItems int
-
-func (r *replaceExprsItems) replace(newNode, container SQLNode) {
- container.(Exprs)[int(*r)] = newNode.(Expr)
-}
-
-func (r *replaceExprsItems) inc() {
- *r++
-}
-
-func replaceForeignKeyDefinitionOnDelete(newNode, parent SQLNode) {
- parent.(*ForeignKeyDefinition).OnDelete = newNode.(ReferenceAction)
-}
-
-func replaceForeignKeyDefinitionOnUpdate(newNode, parent SQLNode) {
- parent.(*ForeignKeyDefinition).OnUpdate = newNode.(ReferenceAction)
-}
-
-func replaceForeignKeyDefinitionReferencedColumns(newNode, parent SQLNode) {
- parent.(*ForeignKeyDefinition).ReferencedColumns = newNode.(Columns)
-}
-
-func replaceForeignKeyDefinitionReferencedTable(newNode, parent SQLNode) {
- parent.(*ForeignKeyDefinition).ReferencedTable = newNode.(TableName)
-}
-
-func replaceForeignKeyDefinitionSource(newNode, parent SQLNode) {
- parent.(*ForeignKeyDefinition).Source = newNode.(Columns)
-}
-
-func replaceFuncExprExprs(newNode, parent SQLNode) {
- parent.(*FuncExpr).Exprs = newNode.(SelectExprs)
-}
-
-func replaceFuncExprName(newNode, parent SQLNode) {
- parent.(*FuncExpr).Name = newNode.(ColIdent)
-}
-
-func replaceFuncExprQualifier(newNode, parent SQLNode) {
- parent.(*FuncExpr).Qualifier = newNode.(TableIdent)
-}
-
-type replaceGroupByItems int
-
-func (r *replaceGroupByItems) replace(newNode, container SQLNode) {
- container.(GroupBy)[int(*r)] = newNode.(Expr)
-}
-
-func (r *replaceGroupByItems) inc() {
- *r++
-}
-
-func replaceGroupConcatExprExprs(newNode, parent SQLNode) {
- parent.(*GroupConcatExpr).Exprs = newNode.(SelectExprs)
-}
-
-func replaceGroupConcatExprLimit(newNode, parent SQLNode) {
- parent.(*GroupConcatExpr).Limit = newNode.(*Limit)
-}
-
-func replaceGroupConcatExprOrderBy(newNode, parent SQLNode) {
- parent.(*GroupConcatExpr).OrderBy = newNode.(OrderBy)
-}
-
-func replaceIndexDefinitionInfo(newNode, parent SQLNode) {
- parent.(*IndexDefinition).Info = newNode.(*IndexInfo)
-}
-
-type replaceIndexHintsIndexes int
-
-func (r *replaceIndexHintsIndexes) replace(newNode, container SQLNode) {
- container.(*IndexHints).Indexes[int(*r)] = newNode.(ColIdent)
-}
-
-func (r *replaceIndexHintsIndexes) inc() {
- *r++
-}
-
-func replaceIndexInfoConstraintName(newNode, parent SQLNode) {
- parent.(*IndexInfo).ConstraintName = newNode.(ColIdent)
-}
-
-func replaceIndexInfoName(newNode, parent SQLNode) {
- parent.(*IndexInfo).Name = newNode.(ColIdent)
-}
-
-func replaceInsertColumns(newNode, parent SQLNode) {
- parent.(*Insert).Columns = newNode.(Columns)
-}
-
-func replaceInsertComments(newNode, parent SQLNode) {
- parent.(*Insert).Comments = newNode.(Comments)
-}
-
-func replaceInsertOnDup(newNode, parent SQLNode) {
- parent.(*Insert).OnDup = newNode.(OnDup)
-}
-
-func replaceInsertPartitions(newNode, parent SQLNode) {
- parent.(*Insert).Partitions = newNode.(Partitions)
-}
-
-func replaceInsertRows(newNode, parent SQLNode) {
- parent.(*Insert).Rows = newNode.(InsertRows)
-}
-
-func replaceInsertTable(newNode, parent SQLNode) {
- parent.(*Insert).Table = newNode.(TableName)
-}
-
-func replaceIntervalExprExpr(newNode, parent SQLNode) {
- parent.(*IntervalExpr).Expr = newNode.(Expr)
-}
-
-func replaceIsExprExpr(newNode, parent SQLNode) {
- parent.(*IsExpr).Expr = newNode.(Expr)
-}
-
-func replaceJoinConditionOn(newNode, parent SQLNode) {
- tmp := parent.(JoinCondition)
- tmp.On = newNode.(Expr)
-}
-
-func replaceJoinConditionUsing(newNode, parent SQLNode) {
- tmp := parent.(JoinCondition)
- tmp.Using = newNode.(Columns)
-}
-
-func replaceJoinTableExprCondition(newNode, parent SQLNode) {
- parent.(*JoinTableExpr).Condition = newNode.(JoinCondition)
-}
-
-func replaceJoinTableExprLeftExpr(newNode, parent SQLNode) {
- parent.(*JoinTableExpr).LeftExpr = newNode.(TableExpr)
-}
-
-func replaceJoinTableExprRightExpr(newNode, parent SQLNode) {
- parent.(*JoinTableExpr).RightExpr = newNode.(TableExpr)
-}
-
-func replaceLimitOffset(newNode, parent SQLNode) {
- parent.(*Limit).Offset = newNode.(Expr)
-}
-
-func replaceLimitRowcount(newNode, parent SQLNode) {
- parent.(*Limit).Rowcount = newNode.(Expr)
-}
-
-func replaceMatchExprColumns(newNode, parent SQLNode) {
- parent.(*MatchExpr).Columns = newNode.(SelectExprs)
-}
-
-func replaceMatchExprExpr(newNode, parent SQLNode) {
- parent.(*MatchExpr).Expr = newNode.(Expr)
-}
-
-func replaceModifyColumnAfter(newNode, parent SQLNode) {
- parent.(*ModifyColumn).After = newNode.(*ColName)
-}
-
-func replaceModifyColumnFirst(newNode, parent SQLNode) {
- parent.(*ModifyColumn).First = newNode.(*ColName)
-}
-
-func replaceModifyColumnNewColDefinition(newNode, parent SQLNode) {
- parent.(*ModifyColumn).NewColDefinition = newNode.(*ColumnDefinition)
-}
-
-func replaceNextvalExpr(newNode, parent SQLNode) {
- tmp := parent.(Nextval)
- tmp.Expr = newNode.(Expr)
-}
-
-func replaceNotExprExpr(newNode, parent SQLNode) {
- parent.(*NotExpr).Expr = newNode.(Expr)
-}
-
-type replaceOnDupItems int
-
-func (r *replaceOnDupItems) replace(newNode, container SQLNode) {
- container.(OnDup)[int(*r)] = newNode.(*UpdateExpr)
-}
-
-func (r *replaceOnDupItems) inc() {
- *r++
-}
-
-func replaceOptLikeLikeTable(newNode, parent SQLNode) {
- parent.(*OptLike).LikeTable = newNode.(TableName)
-}
-
-func replaceOrExprLeft(newNode, parent SQLNode) {
- parent.(*OrExpr).Left = newNode.(Expr)
-}
-
-func replaceOrExprRight(newNode, parent SQLNode) {
- parent.(*OrExpr).Right = newNode.(Expr)
-}
-
-func replaceOrderExpr(newNode, parent SQLNode) {
- parent.(*Order).Expr = newNode.(Expr)
-}
-
-type replaceOrderByItems int
-
-func (r *replaceOrderByItems) replace(newNode, container SQLNode) {
- container.(OrderBy)[int(*r)] = newNode.(*Order)
-}
-
-func (r *replaceOrderByItems) inc() {
- *r++
-}
-
-func replaceOrderByOptionCols(newNode, parent SQLNode) {
- parent.(*OrderByOption).Cols = newNode.(Columns)
-}
-
-func replaceParenSelectSelect(newNode, parent SQLNode) {
- parent.(*ParenSelect).Select = newNode.(SelectStatement)
-}
-
-func replaceParenTableExprExprs(newNode, parent SQLNode) {
- parent.(*ParenTableExpr).Exprs = newNode.(TableExprs)
-}
-
-func replacePartitionDefinitionLimit(newNode, parent SQLNode) {
- parent.(*PartitionDefinition).Limit = newNode.(Expr)
-}
-
-func replacePartitionDefinitionName(newNode, parent SQLNode) {
- parent.(*PartitionDefinition).Name = newNode.(ColIdent)
-}
-
-type replacePartitionSpecDefinitions int
-
-func (r *replacePartitionSpecDefinitions) replace(newNode, container SQLNode) {
- container.(*PartitionSpec).Definitions[int(*r)] = newNode.(*PartitionDefinition)
-}
-
-func (r *replacePartitionSpecDefinitions) inc() {
- *r++
-}
-
-func replacePartitionSpecNames(newNode, parent SQLNode) {
- parent.(*PartitionSpec).Names = newNode.(Partitions)
-}
-
-func replacePartitionSpecNumber(newNode, parent SQLNode) {
- parent.(*PartitionSpec).Number = newNode.(*Literal)
-}
-
-func replacePartitionSpecTableName(newNode, parent SQLNode) {
- parent.(*PartitionSpec).TableName = newNode.(TableName)
-}
-
-type replacePartitionsItems int
-
-func (r *replacePartitionsItems) replace(newNode, container SQLNode) {
- container.(Partitions)[int(*r)] = newNode.(ColIdent)
-}
-
-func (r *replacePartitionsItems) inc() {
- *r++
-}
-
-func replaceRangeCondFrom(newNode, parent SQLNode) {
- parent.(*RangeCond).From = newNode.(Expr)
-}
-
-func replaceRangeCondLeft(newNode, parent SQLNode) {
- parent.(*RangeCond).Left = newNode.(Expr)
-}
-
-func replaceRangeCondTo(newNode, parent SQLNode) {
- parent.(*RangeCond).To = newNode.(Expr)
-}
-
-func replaceReleaseName(newNode, parent SQLNode) {
- parent.(*Release).Name = newNode.(ColIdent)
-}
-
-func replaceRenameTableTable(newNode, parent SQLNode) {
- parent.(*RenameTable).Table = newNode.(TableName)
-}
-
-func replaceSRollbackName(newNode, parent SQLNode) {
- parent.(*SRollback).Name = newNode.(ColIdent)
-}
-
-func replaceSavepointName(newNode, parent SQLNode) {
- parent.(*Savepoint).Name = newNode.(ColIdent)
-}
-
-func replaceSelectComments(newNode, parent SQLNode) {
- parent.(*Select).Comments = newNode.(Comments)
-}
-
-func replaceSelectFrom(newNode, parent SQLNode) {
- parent.(*Select).From = newNode.(TableExprs)
-}
-
-func replaceSelectGroupBy(newNode, parent SQLNode) {
- parent.(*Select).GroupBy = newNode.(GroupBy)
-}
-
-func replaceSelectHaving(newNode, parent SQLNode) {
- parent.(*Select).Having = newNode.(*Where)
-}
-
-func replaceSelectInto(newNode, parent SQLNode) {
- parent.(*Select).Into = newNode.(*SelectInto)
-}
-
-func replaceSelectLimit(newNode, parent SQLNode) {
- parent.(*Select).Limit = newNode.(*Limit)
-}
-
-func replaceSelectOrderBy(newNode, parent SQLNode) {
- parent.(*Select).OrderBy = newNode.(OrderBy)
-}
-
-func replaceSelectSelectExprs(newNode, parent SQLNode) {
- parent.(*Select).SelectExprs = newNode.(SelectExprs)
-}
-
-func replaceSelectWhere(newNode, parent SQLNode) {
- parent.(*Select).Where = newNode.(*Where)
-}
-
-type replaceSelectExprsItems int
-
-func (r *replaceSelectExprsItems) replace(newNode, container SQLNode) {
- container.(SelectExprs)[int(*r)] = newNode.(SelectExpr)
-}
-
-func (r *replaceSelectExprsItems) inc() {
- *r++
-}
-
-func replaceSetComments(newNode, parent SQLNode) {
- parent.(*Set).Comments = newNode.(Comments)
-}
-
-func replaceSetExprs(newNode, parent SQLNode) {
- parent.(*Set).Exprs = newNode.(SetExprs)
-}
-
-func replaceSetExprExpr(newNode, parent SQLNode) {
- parent.(*SetExpr).Expr = newNode.(Expr)
-}
-
-func replaceSetExprName(newNode, parent SQLNode) {
- parent.(*SetExpr).Name = newNode.(ColIdent)
-}
-
-type replaceSetExprsItems int
-
-func (r *replaceSetExprsItems) replace(newNode, container SQLNode) {
- container.(SetExprs)[int(*r)] = newNode.(*SetExpr)
-}
-
-func (r *replaceSetExprsItems) inc() {
- *r++
-}
-
-type replaceSetTransactionCharacteristics int
-
-func (r *replaceSetTransactionCharacteristics) replace(newNode, container SQLNode) {
- container.(*SetTransaction).Characteristics[int(*r)] = newNode.(Characteristic)
-}
-
-func (r *replaceSetTransactionCharacteristics) inc() {
- *r++
-}
-
-func replaceSetTransactionComments(newNode, parent SQLNode) {
- parent.(*SetTransaction).Comments = newNode.(Comments)
-}
-
-func replaceShowInternal(newNode, parent SQLNode) {
- parent.(*Show).Internal = newNode.(ShowInternal)
-}
-
-func replaceShowBasicFilter(newNode, parent SQLNode) {
- parent.(*ShowBasic).Filter = newNode.(*ShowFilter)
-}
-
-func replaceShowColumnsFilter(newNode, parent SQLNode) {
- parent.(*ShowColumns).Filter = newNode.(*ShowFilter)
-}
-
-func replaceShowColumnsTable(newNode, parent SQLNode) {
- parent.(*ShowColumns).Table = newNode.(TableName)
-}
-
-func replaceShowFilterFilter(newNode, parent SQLNode) {
- parent.(*ShowFilter).Filter = newNode.(Expr)
-}
-
-func replaceShowLegacyOnTable(newNode, parent SQLNode) {
- parent.(*ShowLegacy).OnTable = newNode.(TableName)
-}
-
-func replaceShowLegacyShowCollationFilterOpt(newNode, parent SQLNode) {
- parent.(*ShowLegacy).ShowCollationFilterOpt = newNode.(Expr)
-}
-
-func replaceShowLegacyTable(newNode, parent SQLNode) {
- parent.(*ShowLegacy).Table = newNode.(TableName)
-}
-
-func replaceShowTableStatusFilter(newNode, parent SQLNode) {
- parent.(*ShowTableStatus).Filter = newNode.(*ShowFilter)
-}
-
-func replaceStarExprTableName(newNode, parent SQLNode) {
- parent.(*StarExpr).TableName = newNode.(TableName)
-}
-
-func replaceStreamComments(newNode, parent SQLNode) {
- parent.(*Stream).Comments = newNode.(Comments)
-}
-
-func replaceStreamSelectExpr(newNode, parent SQLNode) {
- parent.(*Stream).SelectExpr = newNode.(SelectExpr)
-}
-
-func replaceStreamTable(newNode, parent SQLNode) {
- parent.(*Stream).Table = newNode.(TableName)
-}
-
-func replaceSubquerySelect(newNode, parent SQLNode) {
- parent.(*Subquery).Select = newNode.(SelectStatement)
-}
-
-func replaceSubstrExprFrom(newNode, parent SQLNode) {
- parent.(*SubstrExpr).From = newNode.(Expr)
-}
-
-func replaceSubstrExprName(newNode, parent SQLNode) {
- parent.(*SubstrExpr).Name = newNode.(*ColName)
-}
-
-func replaceSubstrExprStrVal(newNode, parent SQLNode) {
- parent.(*SubstrExpr).StrVal = newNode.(*Literal)
-}
-
-func replaceSubstrExprTo(newNode, parent SQLNode) {
- parent.(*SubstrExpr).To = newNode.(Expr)
-}
-
-type replaceTableExprsItems int
-
-func (r *replaceTableExprsItems) replace(newNode, container SQLNode) {
- container.(TableExprs)[int(*r)] = newNode.(TableExpr)
-}
-
-func (r *replaceTableExprsItems) inc() {
- *r++
-}
-
-func replaceTableNameName(newNode, parent SQLNode) {
- tmp := parent.(TableName)
- tmp.Name = newNode.(TableIdent)
-}
-
-func replaceTableNameQualifier(newNode, parent SQLNode) {
- tmp := parent.(TableName)
- tmp.Qualifier = newNode.(TableIdent)
-}
-
-type replaceTableNamesItems int
-
-func (r *replaceTableNamesItems) replace(newNode, container SQLNode) {
- container.(TableNames)[int(*r)] = newNode.(TableName)
-}
-
-func (r *replaceTableNamesItems) inc() {
- *r++
-}
-
-type replaceTableSpecColumns int
-
-func (r *replaceTableSpecColumns) replace(newNode, container SQLNode) {
- container.(*TableSpec).Columns[int(*r)] = newNode.(*ColumnDefinition)
-}
-
-func (r *replaceTableSpecColumns) inc() {
- *r++
-}
-
-type replaceTableSpecConstraints int
-
-func (r *replaceTableSpecConstraints) replace(newNode, container SQLNode) {
- container.(*TableSpec).Constraints[int(*r)] = newNode.(*ConstraintDefinition)
-}
-
-func (r *replaceTableSpecConstraints) inc() {
- *r++
-}
-
-type replaceTableSpecIndexes int
-
-func (r *replaceTableSpecIndexes) replace(newNode, container SQLNode) {
- container.(*TableSpec).Indexes[int(*r)] = newNode.(*IndexDefinition)
-}
-
-func (r *replaceTableSpecIndexes) inc() {
- *r++
-}
-
-func replaceTableSpecOptions(newNode, parent SQLNode) {
- parent.(*TableSpec).Options = newNode.(TableOptions)
-}
-
-func replaceTimestampFuncExprExpr1(newNode, parent SQLNode) {
- parent.(*TimestampFuncExpr).Expr1 = newNode.(Expr)
-}
-
-func replaceTimestampFuncExprExpr2(newNode, parent SQLNode) {
- parent.(*TimestampFuncExpr).Expr2 = newNode.(Expr)
-}
-
-func replaceUnaryExprExpr(newNode, parent SQLNode) {
- parent.(*UnaryExpr).Expr = newNode.(Expr)
-}
-
-func replaceUnionFirstStatement(newNode, parent SQLNode) {
- parent.(*Union).FirstStatement = newNode.(SelectStatement)
-}
-
-func replaceUnionLimit(newNode, parent SQLNode) {
- parent.(*Union).Limit = newNode.(*Limit)
-}
-
-func replaceUnionOrderBy(newNode, parent SQLNode) {
- parent.(*Union).OrderBy = newNode.(OrderBy)
-}
-
-type replaceUnionUnionSelects int
-
-func (r *replaceUnionUnionSelects) replace(newNode, container SQLNode) {
- container.(*Union).UnionSelects[int(*r)] = newNode.(*UnionSelect)
-}
-
-func (r *replaceUnionUnionSelects) inc() {
- *r++
-}
-
-func replaceUnionSelectStatement(newNode, parent SQLNode) {
- parent.(*UnionSelect).Statement = newNode.(SelectStatement)
-}
-
-func replaceUpdateComments(newNode, parent SQLNode) {
- parent.(*Update).Comments = newNode.(Comments)
-}
-
-func replaceUpdateExprs(newNode, parent SQLNode) {
- parent.(*Update).Exprs = newNode.(UpdateExprs)
-}
-
-func replaceUpdateLimit(newNode, parent SQLNode) {
- parent.(*Update).Limit = newNode.(*Limit)
-}
-
-func replaceUpdateOrderBy(newNode, parent SQLNode) {
- parent.(*Update).OrderBy = newNode.(OrderBy)
-}
-
-func replaceUpdateTableExprs(newNode, parent SQLNode) {
- parent.(*Update).TableExprs = newNode.(TableExprs)
-}
-
-func replaceUpdateWhere(newNode, parent SQLNode) {
- parent.(*Update).Where = newNode.(*Where)
-}
-
-func replaceUpdateExprExpr(newNode, parent SQLNode) {
- parent.(*UpdateExpr).Expr = newNode.(Expr)
-}
-
-func replaceUpdateExprName(newNode, parent SQLNode) {
- parent.(*UpdateExpr).Name = newNode.(*ColName)
-}
-
-type replaceUpdateExprsItems int
-
-func (r *replaceUpdateExprsItems) replace(newNode, container SQLNode) {
- container.(UpdateExprs)[int(*r)] = newNode.(*UpdateExpr)
-}
-
-func (r *replaceUpdateExprsItems) inc() {
- *r++
-}
-
-func replaceUseDBName(newNode, parent SQLNode) {
- parent.(*Use).DBName = newNode.(TableIdent)
-}
-
-func replaceVStreamComments(newNode, parent SQLNode) {
- parent.(*VStream).Comments = newNode.(Comments)
-}
-
-func replaceVStreamLimit(newNode, parent SQLNode) {
- parent.(*VStream).Limit = newNode.(*Limit)
-}
-
-func replaceVStreamSelectExpr(newNode, parent SQLNode) {
- parent.(*VStream).SelectExpr = newNode.(SelectExpr)
-}
-
-func replaceVStreamTable(newNode, parent SQLNode) {
- parent.(*VStream).Table = newNode.(TableName)
-}
-
-func replaceVStreamWhere(newNode, parent SQLNode) {
- parent.(*VStream).Where = newNode.(*Where)
-}
-
-type replaceValTupleItems int
-
-func (r *replaceValTupleItems) replace(newNode, container SQLNode) {
- container.(ValTuple)[int(*r)] = newNode.(Expr)
-}
-
-func (r *replaceValTupleItems) inc() {
- *r++
-}
-
-type replaceValuesItems int
-
-func (r *replaceValuesItems) replace(newNode, container SQLNode) {
- container.(Values)[int(*r)] = newNode.(ValTuple)
-}
-
-func (r *replaceValuesItems) inc() {
- *r++
-}
-
-func replaceValuesFuncExprName(newNode, parent SQLNode) {
- parent.(*ValuesFuncExpr).Name = newNode.(*ColName)
-}
-
-func replaceVindexParamKey(newNode, parent SQLNode) {
- tmp := parent.(VindexParam)
- tmp.Key = newNode.(ColIdent)
-}
-
-func replaceVindexSpecName(newNode, parent SQLNode) {
- parent.(*VindexSpec).Name = newNode.(ColIdent)
-}
-
-type replaceVindexSpecParams int
-
-func (r *replaceVindexSpecParams) replace(newNode, container SQLNode) {
- container.(*VindexSpec).Params[int(*r)] = newNode.(VindexParam)
-}
-
-func (r *replaceVindexSpecParams) inc() {
- *r++
-}
-
-func replaceVindexSpecType(newNode, parent SQLNode) {
- parent.(*VindexSpec).Type = newNode.(ColIdent)
-}
-
-func replaceWhenCond(newNode, parent SQLNode) {
- parent.(*When).Cond = newNode.(Expr)
-}
-
-func replaceWhenVal(newNode, parent SQLNode) {
- parent.(*When).Val = newNode.(Expr)
-}
-
-func replaceWhereExpr(newNode, parent SQLNode) {
- parent.(*Where).Expr = newNode.(Expr)
-}
-
-func replaceXorExprLeft(newNode, parent SQLNode) {
- parent.(*XorExpr).Left = newNode.(Expr)
-}
-
-func replaceXorExprRight(newNode, parent SQLNode) {
- parent.(*XorExpr).Right = newNode.(Expr)
-}
-
-// apply is where the visiting happens. Here is where we keep the big switch-case that will be used
-// to do the actual visiting of SQLNodes
-func (a *application) apply(parent, node SQLNode, replacer replacerFunc) {
- if node == nil || isNilValue(node) {
- return
- }
-
- // avoid heap-allocating a new cursor for each apply call; reuse a.cursor instead
- saved := a.cursor
- a.cursor.replacer = replacer
- a.cursor.node = node
- a.cursor.parent = parent
-
- if a.pre != nil && !a.pre(&a.cursor) {
- a.cursor = saved
- return
- }
-
- // walk children
- // (the order of the cases is alphabetical)
- switch n := node.(type) {
- case nil:
- case AccessMode:
-
- case *AddColumns:
- a.apply(node, n.After, replaceAddColumnsAfter)
- replacerColumns := replaceAddColumnsColumns(0)
- replacerColumnsB := &replacerColumns
- for _, item := range n.Columns {
- a.apply(node, item, replacerColumnsB.replace)
- replacerColumnsB.inc()
- }
- a.apply(node, n.First, replaceAddColumnsFirst)
-
- case *AddConstraintDefinition:
- a.apply(node, n.ConstraintDefinition, replaceAddConstraintDefinitionConstraintDefinition)
-
- case *AddIndexDefinition:
- a.apply(node, n.IndexDefinition, replaceAddIndexDefinitionIndexDefinition)
-
- case AlgorithmValue:
-
- case *AliasedExpr:
- a.apply(node, n.As, replaceAliasedExprAs)
- a.apply(node, n.Expr, replaceAliasedExprExpr)
-
- case *AliasedTableExpr:
- a.apply(node, n.As, replaceAliasedTableExprAs)
- a.apply(node, n.Expr, replaceAliasedTableExprExpr)
- a.apply(node, n.Hints, replaceAliasedTableExprHints)
- a.apply(node, n.Partitions, replaceAliasedTableExprPartitions)
-
- case *AlterCharset:
-
- case *AlterColumn:
- a.apply(node, n.Column, replaceAlterColumnColumn)
- a.apply(node, n.DefaultVal, replaceAlterColumnDefaultVal)
-
- case *AlterDatabase:
-
- case *AlterTable:
- replacerAlterOptions := replaceAlterTableAlterOptions(0)
- replacerAlterOptionsB := &replacerAlterOptions
- for _, item := range n.AlterOptions {
- a.apply(node, item, replacerAlterOptionsB.replace)
- replacerAlterOptionsB.inc()
- }
- a.apply(node, n.PartitionSpec, replaceAlterTablePartitionSpec)
- a.apply(node, n.Table, replaceAlterTableTable)
-
- case *AlterView:
- a.apply(node, n.Columns, replaceAlterViewColumns)
- a.apply(node, n.Select, replaceAlterViewSelect)
- a.apply(node, n.ViewName, replaceAlterViewViewName)
-
- case *AlterVschema:
- a.apply(node, n.AutoIncSpec, replaceAlterVschemaAutoIncSpec)
- a.apply(node, n.Table, replaceAlterVschemaTable)
- replacerVindexCols := replaceAlterVschemaVindexCols(0)
- replacerVindexColsB := &replacerVindexCols
- for _, item := range n.VindexCols {
- a.apply(node, item, replacerVindexColsB.replace)
- replacerVindexColsB.inc()
- }
- a.apply(node, n.VindexSpec, replaceAlterVschemaVindexSpec)
-
- case *AndExpr:
- a.apply(node, n.Left, replaceAndExprLeft)
- a.apply(node, n.Right, replaceAndExprRight)
-
- case Argument:
-
- case *AutoIncSpec:
- a.apply(node, n.Column, replaceAutoIncSpecColumn)
- a.apply(node, n.Sequence, replaceAutoIncSpecSequence)
-
- case *Begin:
-
- case *BinaryExpr:
- a.apply(node, n.Left, replaceBinaryExprLeft)
- a.apply(node, n.Right, replaceBinaryExprRight)
-
- case BoolVal:
-
- case *CaseExpr:
- a.apply(node, n.Else, replaceCaseExprElse)
- a.apply(node, n.Expr, replaceCaseExprExpr)
- replacerWhens := replaceCaseExprWhens(0)
- replacerWhensB := &replacerWhens
- for _, item := range n.Whens {
- a.apply(node, item, replacerWhensB.replace)
- replacerWhensB.inc()
- }
-
- case *ChangeColumn:
- a.apply(node, n.After, replaceChangeColumnAfter)
- a.apply(node, n.First, replaceChangeColumnFirst)
- a.apply(node, n.NewColDefinition, replaceChangeColumnNewColDefinition)
- a.apply(node, n.OldColumn, replaceChangeColumnOldColumn)
-
- case *CheckConstraintDefinition:
- a.apply(node, n.Expr, replaceCheckConstraintDefinitionExpr)
-
- case ColIdent:
-
- case *ColName:
- a.apply(node, n.Name, replaceColNameName)
- a.apply(node, n.Qualifier, replaceColNameQualifier)
-
- case *CollateExpr:
- a.apply(node, n.Expr, replaceCollateExprExpr)
-
- case *ColumnDefinition:
- a.apply(node, n.Name, replaceColumnDefinitionName)
-
- case *ColumnType:
- a.apply(node, n.Comment, replaceColumnTypeComment)
- a.apply(node, n.Default, replaceColumnTypeDefault)
- a.apply(node, n.Length, replaceColumnTypeLength)
- a.apply(node, n.OnUpdate, replaceColumnTypeOnUpdate)
- a.apply(node, n.Scale, replaceColumnTypeScale)
-
- case Columns:
- replacer := replaceColumnsItems(0)
- replacerRef := &replacer
- for _, item := range n {
- a.apply(node, item, replacerRef.replace)
- replacerRef.inc()
- }
-
- case Comments:
-
- case *Commit:
-
- case *ComparisonExpr:
- a.apply(node, n.Escape, replaceComparisonExprEscape)
- a.apply(node, n.Left, replaceComparisonExprLeft)
- a.apply(node, n.Right, replaceComparisonExprRight)
-
- case *ConstraintDefinition:
- a.apply(node, n.Details, replaceConstraintDefinitionDetails)
-
- case *ConvertExpr:
- a.apply(node, n.Expr, replaceConvertExprExpr)
- a.apply(node, n.Type, replaceConvertExprType)
-
- case *ConvertType:
- a.apply(node, n.Length, replaceConvertTypeLength)
- a.apply(node, n.Scale, replaceConvertTypeScale)
-
- case *ConvertUsingExpr:
- a.apply(node, n.Expr, replaceConvertUsingExprExpr)
-
- case *CreateDatabase:
-
- case *CreateIndex:
- a.apply(node, n.Name, replaceCreateIndexName)
- a.apply(node, n.Table, replaceCreateIndexTable)
-
- case *CreateTable:
- a.apply(node, n.OptLike, replaceCreateTableOptLike)
- a.apply(node, n.Table, replaceCreateTableTable)
- a.apply(node, n.TableSpec, replaceCreateTableTableSpec)
-
- case *CreateView:
- a.apply(node, n.Columns, replaceCreateViewColumns)
- a.apply(node, n.Select, replaceCreateViewSelect)
- a.apply(node, n.ViewName, replaceCreateViewViewName)
-
- case *CurTimeFuncExpr:
- a.apply(node, n.Fsp, replaceCurTimeFuncExprFsp)
- a.apply(node, n.Name, replaceCurTimeFuncExprName)
-
- case *DDL:
- a.apply(node, n.FromTables, replaceDDLFromTables)
- a.apply(node, n.OptLike, replaceDDLOptLike)
- a.apply(node, n.PartitionSpec, replaceDDLPartitionSpec)
- a.apply(node, n.Table, replaceDDLTable)
- a.apply(node, n.TableSpec, replaceDDLTableSpec)
- a.apply(node, n.ToTables, replaceDDLToTables)
-
- case *Default:
-
- case *Delete:
- a.apply(node, n.Comments, replaceDeleteComments)
- a.apply(node, n.Limit, replaceDeleteLimit)
- a.apply(node, n.OrderBy, replaceDeleteOrderBy)
- a.apply(node, n.Partitions, replaceDeletePartitions)
- a.apply(node, n.TableExprs, replaceDeleteTableExprs)
- a.apply(node, n.Targets, replaceDeleteTargets)
- a.apply(node, n.Where, replaceDeleteWhere)
-
- case *DerivedTable:
- a.apply(node, n.Select, replaceDerivedTableSelect)
-
- case *DropColumn:
- a.apply(node, n.Name, replaceDropColumnName)
-
- case *DropDatabase:
-
- case *DropKey:
-
- case *DropTable:
- a.apply(node, n.FromTables, replaceDropTableFromTables)
-
- case *DropView:
- a.apply(node, n.FromTables, replaceDropViewFromTables)
-
- case *ExistsExpr:
- a.apply(node, n.Subquery, replaceExistsExprSubquery)
-
- case *Explain:
- a.apply(node, n.Statement, replaceExplainStatement)
-
- case Exprs:
- replacer := replaceExprsItems(0)
- replacerRef := &replacer
- for _, item := range n {
- a.apply(node, item, replacerRef.replace)
- replacerRef.inc()
- }
-
- case *Force:
-
- case *ForeignKeyDefinition:
- a.apply(node, n.OnDelete, replaceForeignKeyDefinitionOnDelete)
- a.apply(node, n.OnUpdate, replaceForeignKeyDefinitionOnUpdate)
- a.apply(node, n.ReferencedColumns, replaceForeignKeyDefinitionReferencedColumns)
- a.apply(node, n.ReferencedTable, replaceForeignKeyDefinitionReferencedTable)
- a.apply(node, n.Source, replaceForeignKeyDefinitionSource)
-
- case *FuncExpr:
- a.apply(node, n.Exprs, replaceFuncExprExprs)
- a.apply(node, n.Name, replaceFuncExprName)
- a.apply(node, n.Qualifier, replaceFuncExprQualifier)
-
- case GroupBy:
- replacer := replaceGroupByItems(0)
- replacerRef := &replacer
- for _, item := range n {
- a.apply(node, item, replacerRef.replace)
- replacerRef.inc()
- }
-
- case *GroupConcatExpr:
- a.apply(node, n.Exprs, replaceGroupConcatExprExprs)
- a.apply(node, n.Limit, replaceGroupConcatExprLimit)
- a.apply(node, n.OrderBy, replaceGroupConcatExprOrderBy)
-
- case *IndexDefinition:
- a.apply(node, n.Info, replaceIndexDefinitionInfo)
-
- case *IndexHints:
- replacerIndexes := replaceIndexHintsIndexes(0)
- replacerIndexesB := &replacerIndexes
- for _, item := range n.Indexes {
- a.apply(node, item, replacerIndexesB.replace)
- replacerIndexesB.inc()
- }
-
- case *IndexInfo:
- a.apply(node, n.ConstraintName, replaceIndexInfoConstraintName)
- a.apply(node, n.Name, replaceIndexInfoName)
-
- case *Insert:
- a.apply(node, n.Columns, replaceInsertColumns)
- a.apply(node, n.Comments, replaceInsertComments)
- a.apply(node, n.OnDup, replaceInsertOnDup)
- a.apply(node, n.Partitions, replaceInsertPartitions)
- a.apply(node, n.Rows, replaceInsertRows)
- a.apply(node, n.Table, replaceInsertTable)
-
- case *IntervalExpr:
- a.apply(node, n.Expr, replaceIntervalExprExpr)
-
- case *IsExpr:
- a.apply(node, n.Expr, replaceIsExprExpr)
-
- case IsolationLevel:
-
- case JoinCondition:
- a.apply(node, n.On, replaceJoinConditionOn)
- a.apply(node, n.Using, replaceJoinConditionUsing)
-
- case *JoinTableExpr:
- a.apply(node, n.Condition, replaceJoinTableExprCondition)
- a.apply(node, n.LeftExpr, replaceJoinTableExprLeftExpr)
- a.apply(node, n.RightExpr, replaceJoinTableExprRightExpr)
-
- case *KeyState:
-
- case *Limit:
- a.apply(node, n.Offset, replaceLimitOffset)
- a.apply(node, n.Rowcount, replaceLimitRowcount)
-
- case ListArg:
-
- case *Literal:
-
- case *Load:
-
- case *LockOption:
-
- case *LockTables:
-
- case *MatchExpr:
- a.apply(node, n.Columns, replaceMatchExprColumns)
- a.apply(node, n.Expr, replaceMatchExprExpr)
-
- case *ModifyColumn:
- a.apply(node, n.After, replaceModifyColumnAfter)
- a.apply(node, n.First, replaceModifyColumnFirst)
- a.apply(node, n.NewColDefinition, replaceModifyColumnNewColDefinition)
-
- case Nextval:
- a.apply(node, n.Expr, replaceNextvalExpr)
-
- case *NotExpr:
- a.apply(node, n.Expr, replaceNotExprExpr)
-
- case *NullVal:
-
- case OnDup:
- replacer := replaceOnDupItems(0)
- replacerRef := &replacer
- for _, item := range n {
- a.apply(node, item, replacerRef.replace)
- replacerRef.inc()
- }
-
- case *OptLike:
- a.apply(node, n.LikeTable, replaceOptLikeLikeTable)
-
- case *OrExpr:
- a.apply(node, n.Left, replaceOrExprLeft)
- a.apply(node, n.Right, replaceOrExprRight)
-
- case *Order:
- a.apply(node, n.Expr, replaceOrderExpr)
-
- case OrderBy:
- replacer := replaceOrderByItems(0)
- replacerRef := &replacer
- for _, item := range n {
- a.apply(node, item, replacerRef.replace)
- replacerRef.inc()
- }
-
- case *OrderByOption:
- a.apply(node, n.Cols, replaceOrderByOptionCols)
-
- case *OtherAdmin:
-
- case *OtherRead:
-
- case *ParenSelect:
- a.apply(node, n.Select, replaceParenSelectSelect)
-
- case *ParenTableExpr:
- a.apply(node, n.Exprs, replaceParenTableExprExprs)
-
- case *PartitionDefinition:
- a.apply(node, n.Limit, replacePartitionDefinitionLimit)
- a.apply(node, n.Name, replacePartitionDefinitionName)
-
- case *PartitionSpec:
- replacerDefinitions := replacePartitionSpecDefinitions(0)
- replacerDefinitionsB := &replacerDefinitions
- for _, item := range n.Definitions {
- a.apply(node, item, replacerDefinitionsB.replace)
- replacerDefinitionsB.inc()
- }
- a.apply(node, n.Names, replacePartitionSpecNames)
- a.apply(node, n.Number, replacePartitionSpecNumber)
- a.apply(node, n.TableName, replacePartitionSpecTableName)
-
- case Partitions:
- replacer := replacePartitionsItems(0)
- replacerRef := &replacer
- for _, item := range n {
- a.apply(node, item, replacerRef.replace)
- replacerRef.inc()
- }
-
- case *RangeCond:
- a.apply(node, n.From, replaceRangeCondFrom)
- a.apply(node, n.Left, replaceRangeCondLeft)
- a.apply(node, n.To, replaceRangeCondTo)
-
- case ReferenceAction:
-
- case *Release:
- a.apply(node, n.Name, replaceReleaseName)
-
- case *RenameIndex:
-
- case *RenameTable:
- a.apply(node, n.Table, replaceRenameTableTable)
-
- case *Rollback:
-
- case *SRollback:
- a.apply(node, n.Name, replaceSRollbackName)
-
- case *Savepoint:
- a.apply(node, n.Name, replaceSavepointName)
-
- case *Select:
- a.apply(node, n.Comments, replaceSelectComments)
- a.apply(node, n.From, replaceSelectFrom)
- a.apply(node, n.GroupBy, replaceSelectGroupBy)
- a.apply(node, n.Having, replaceSelectHaving)
- a.apply(node, n.Into, replaceSelectInto)
- a.apply(node, n.Limit, replaceSelectLimit)
- a.apply(node, n.OrderBy, replaceSelectOrderBy)
- a.apply(node, n.SelectExprs, replaceSelectSelectExprs)
- a.apply(node, n.Where, replaceSelectWhere)
-
- case SelectExprs:
- replacer := replaceSelectExprsItems(0)
- replacerRef := &replacer
- for _, item := range n {
- a.apply(node, item, replacerRef.replace)
- replacerRef.inc()
- }
-
- case *SelectInto:
-
- case *Set:
- a.apply(node, n.Comments, replaceSetComments)
- a.apply(node, n.Exprs, replaceSetExprs)
-
- case *SetExpr:
- a.apply(node, n.Expr, replaceSetExprExpr)
- a.apply(node, n.Name, replaceSetExprName)
-
- case SetExprs:
- replacer := replaceSetExprsItems(0)
- replacerRef := &replacer
- for _, item := range n {
- a.apply(node, item, replacerRef.replace)
- replacerRef.inc()
- }
-
- case *SetTransaction:
- replacerCharacteristics := replaceSetTransactionCharacteristics(0)
- replacerCharacteristicsB := &replacerCharacteristics
- for _, item := range n.Characteristics {
- a.apply(node, item, replacerCharacteristicsB.replace)
- replacerCharacteristicsB.inc()
- }
- a.apply(node, n.Comments, replaceSetTransactionComments)
-
- case *Show:
- a.apply(node, n.Internal, replaceShowInternal)
-
- case *ShowBasic:
- a.apply(node, n.Filter, replaceShowBasicFilter)
-
- case *ShowColumns:
- a.apply(node, n.Filter, replaceShowColumnsFilter)
- a.apply(node, n.Table, replaceShowColumnsTable)
-
- case *ShowFilter:
- a.apply(node, n.Filter, replaceShowFilterFilter)
-
- case *ShowLegacy:
- a.apply(node, n.OnTable, replaceShowLegacyOnTable)
- a.apply(node, n.ShowCollationFilterOpt, replaceShowLegacyShowCollationFilterOpt)
- a.apply(node, n.Table, replaceShowLegacyTable)
-
- case *ShowTableStatus:
- a.apply(node, n.Filter, replaceShowTableStatusFilter)
-
- case *StarExpr:
- a.apply(node, n.TableName, replaceStarExprTableName)
-
- case *Stream:
- a.apply(node, n.Comments, replaceStreamComments)
- a.apply(node, n.SelectExpr, replaceStreamSelectExpr)
- a.apply(node, n.Table, replaceStreamTable)
-
- case *Subquery:
- a.apply(node, n.Select, replaceSubquerySelect)
-
- case *SubstrExpr:
- a.apply(node, n.From, replaceSubstrExprFrom)
- a.apply(node, n.Name, replaceSubstrExprName)
- a.apply(node, n.StrVal, replaceSubstrExprStrVal)
- a.apply(node, n.To, replaceSubstrExprTo)
-
- case TableExprs:
- replacer := replaceTableExprsItems(0)
- replacerRef := &replacer
- for _, item := range n {
- a.apply(node, item, replacerRef.replace)
- replacerRef.inc()
- }
-
- case TableIdent:
-
- case TableName:
- a.apply(node, n.Name, replaceTableNameName)
- a.apply(node, n.Qualifier, replaceTableNameQualifier)
-
- case TableNames:
- replacer := replaceTableNamesItems(0)
- replacerRef := &replacer
- for _, item := range n {
- a.apply(node, item, replacerRef.replace)
- replacerRef.inc()
- }
-
- case TableOptions:
-
- case *TableSpec:
- replacerColumns := replaceTableSpecColumns(0)
- replacerColumnsB := &replacerColumns
- for _, item := range n.Columns {
- a.apply(node, item, replacerColumnsB.replace)
- replacerColumnsB.inc()
- }
- replacerConstraints := replaceTableSpecConstraints(0)
- replacerConstraintsB := &replacerConstraints
- for _, item := range n.Constraints {
- a.apply(node, item, replacerConstraintsB.replace)
- replacerConstraintsB.inc()
- }
- replacerIndexes := replaceTableSpecIndexes(0)
- replacerIndexesB := &replacerIndexes
- for _, item := range n.Indexes {
- a.apply(node, item, replacerIndexesB.replace)
- replacerIndexesB.inc()
- }
- a.apply(node, n.Options, replaceTableSpecOptions)
-
- case *TablespaceOperation:
-
- case *TimestampFuncExpr:
- a.apply(node, n.Expr1, replaceTimestampFuncExprExpr1)
- a.apply(node, n.Expr2, replaceTimestampFuncExprExpr2)
-
- case *UnaryExpr:
- a.apply(node, n.Expr, replaceUnaryExprExpr)
-
- case *Union:
- a.apply(node, n.FirstStatement, replaceUnionFirstStatement)
- a.apply(node, n.Limit, replaceUnionLimit)
- a.apply(node, n.OrderBy, replaceUnionOrderBy)
- replacerUnionSelects := replaceUnionUnionSelects(0)
- replacerUnionSelectsB := &replacerUnionSelects
- for _, item := range n.UnionSelects {
- a.apply(node, item, replacerUnionSelectsB.replace)
- replacerUnionSelectsB.inc()
- }
-
- case *UnionSelect:
- a.apply(node, n.Statement, replaceUnionSelectStatement)
-
- case *UnlockTables:
-
- case *Update:
- a.apply(node, n.Comments, replaceUpdateComments)
- a.apply(node, n.Exprs, replaceUpdateExprs)
- a.apply(node, n.Limit, replaceUpdateLimit)
- a.apply(node, n.OrderBy, replaceUpdateOrderBy)
- a.apply(node, n.TableExprs, replaceUpdateTableExprs)
- a.apply(node, n.Where, replaceUpdateWhere)
-
- case *UpdateExpr:
- a.apply(node, n.Expr, replaceUpdateExprExpr)
- a.apply(node, n.Name, replaceUpdateExprName)
-
- case UpdateExprs:
- replacer := replaceUpdateExprsItems(0)
- replacerRef := &replacer
- for _, item := range n {
- a.apply(node, item, replacerRef.replace)
- replacerRef.inc()
- }
-
- case *Use:
- a.apply(node, n.DBName, replaceUseDBName)
-
- case *VStream:
- a.apply(node, n.Comments, replaceVStreamComments)
- a.apply(node, n.Limit, replaceVStreamLimit)
- a.apply(node, n.SelectExpr, replaceVStreamSelectExpr)
- a.apply(node, n.Table, replaceVStreamTable)
- a.apply(node, n.Where, replaceVStreamWhere)
-
- case ValTuple:
- replacer := replaceValTupleItems(0)
- replacerRef := &replacer
- for _, item := range n {
- a.apply(node, item, replacerRef.replace)
- replacerRef.inc()
- }
-
- case *Validation:
-
- case Values:
- replacer := replaceValuesItems(0)
- replacerRef := &replacer
- for _, item := range n {
- a.apply(node, item, replacerRef.replace)
- replacerRef.inc()
- }
-
- case *ValuesFuncExpr:
- a.apply(node, n.Name, replaceValuesFuncExprName)
-
- case VindexParam:
- a.apply(node, n.Key, replaceVindexParamKey)
-
- case *VindexSpec:
- a.apply(node, n.Name, replaceVindexSpecName)
- replacerParams := replaceVindexSpecParams(0)
- replacerParamsB := &replacerParams
- for _, item := range n.Params {
- a.apply(node, item, replacerParamsB.replace)
- replacerParamsB.inc()
- }
- a.apply(node, n.Type, replaceVindexSpecType)
-
- case *When:
- a.apply(node, n.Cond, replaceWhenCond)
- a.apply(node, n.Val, replaceWhenVal)
-
- case *Where:
- a.apply(node, n.Expr, replaceWhereExpr)
-
- case *XorExpr:
- a.apply(node, n.Left, replaceXorExprLeft)
- a.apply(node, n.Right, replaceXorExprRight)
-
- default:
- panic("unknown ast type " + reflect.TypeOf(node).String())
- }
-
- if a.post != nil && !a.post(&a.cursor) {
- panic(abort)
- }
-
- a.cursor = saved
-}
-
-func isNilValue(i interface{}) bool {
- valueOf := reflect.ValueOf(i)
- kind := valueOf.Kind()
- isNullable := kind == reflect.Ptr || kind == reflect.Array || kind == reflect.Slice
- return isNullable && valueOf.IsNil()
-}
diff --git a/go/vt/sqlparser/rewriter_api.go b/go/vt/sqlparser/rewriter_api.go
index 47c85e0473b..f79e3432b6d 100644
--- a/go/vt/sqlparser/rewriter_api.go
+++ b/go/vt/sqlparser/rewriter_api.go
@@ -36,25 +36,18 @@ package sqlparser
//
func Rewrite(node SQLNode, pre, post ApplyFunc) (result SQLNode) {
parent := &struct{ SQLNode }{node}
- defer func() {
- if r := recover(); r != nil && r != abort {
- panic(r)
- }
- result = parent.SQLNode
- }()
-
- a := &application{
- pre: pre,
- post: post,
- cursor: Cursor{},
- }
// this is the root-replacer, used when the user replaces the root of the ast
replacer := func(newNode SQLNode, _ SQLNode) {
parent.SQLNode = newNode
}
- a.apply(parent, node, replacer)
+ a := &application{
+ pre: pre,
+ post: post,
+ }
+
+ a.rewriteSQLNode(parent, node, replacer)
return parent.SQLNode
}
@@ -67,8 +60,6 @@ func Rewrite(node SQLNode, pre, post ApplyFunc) (result SQLNode) {
// See Rewrite for details.
type ApplyFunc func(*Cursor) bool
-var abort = new(int) // singleton, to signal termination of Apply
-
// A Cursor describes a node encountered during Apply.
// Information about the node and its parent is available
// from the Node and Parent methods.
@@ -90,3 +81,11 @@ func (c *Cursor) Replace(newNode SQLNode) {
c.replacer(newNode, c.parent)
c.node = newNode
}
+
+type replacerFunc func(newNode, parent SQLNode)
+
+// application carries all the shared data so we can pass it around cheaply.
+type application struct {
+ pre, post ApplyFunc
+ cur Cursor
+}
diff --git a/go/vt/sqlparser/rewriter_test.go b/go/vt/sqlparser/rewriter_test.go
new file mode 100644
index 00000000000..6887da8c1a8
--- /dev/null
+++ b/go/vt/sqlparser/rewriter_test.go
@@ -0,0 +1,58 @@
+/*
+Copyright 2021 The Vitess Authors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+*/
+
+package sqlparser
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/require"
+)
+
+func BenchmarkVisitLargeExpression(b *testing.B) {
+ gen := newGenerator(1, 5)
+ exp := gen.expression()
+
+ depth := 0
+ for i := 0; i < b.N; i++ {
+ _ = Rewrite(exp, func(cursor *Cursor) bool {
+ depth++
+ return true
+ }, func(cursor *Cursor) bool {
+ depth--
+ return true
+ })
+ }
+}
+
+func TestChangeValueTypeGivesError(t *testing.T) {
+ parse, err := Parse("select * from a join b on a.id = b.id")
+ require.NoError(t, err)
+
+ defer func() {
+ if r := recover(); r != nil {
+ require.Equal(t, "[BUG] tried to replace 'On' on 'JoinCondition'", r)
+ }
+ }()
+ _ = Rewrite(parse, func(cursor *Cursor) bool {
+ _, ok := cursor.Node().(*ComparisonExpr)
+ if ok {
+ cursor.Replace(&NullVal{}) // this is not a valid replacement because the container is a value type
+ }
+ return true
+ }, nil)
+
+}
diff --git a/go/vt/sqlparser/sql.go b/go/vt/sqlparser/sql.go
index 24ea77f6b03..c6b79430f96 100644
--- a/go/vt/sqlparser/sql.go
+++ b/go/vt/sqlparser/sql.go
@@ -1,25 +1,28 @@
-// Code generated by goyacc -o sql.go sql.y. DO NOT EDIT.
+// Code generated by goyacc -fast-append -o sql.go sql.y. DO NOT EDIT.
//line sql.y:18
package sqlparser
-import __yyfmt__ "fmt"
+import (
+ __yyfmt__ "fmt"
+ __yyunsafe__ "unsafe"
+)
//line sql.y:18
-func setParseTree(yylex interface{}, stmt Statement) {
+func setParseTree(yylex yyLexer, stmt Statement) {
yylex.(*Tokenizer).ParseTree = stmt
}
-func setAllowComments(yylex interface{}, allow bool) {
+func setAllowComments(yylex yyLexer, allow bool) {
yylex.(*Tokenizer).AllowComments = allow
}
-func setDDL(yylex interface{}, node Statement) {
+func setDDL(yylex yyLexer, node Statement) {
yylex.(*Tokenizer).partialDDL = node
}
-func incNesting(yylex interface{}) bool {
+func incNesting(yylex yyLexer) bool {
yylex.(*Tokenizer).nesting++
if yylex.(*Tokenizer).nesting == 200 {
return true
@@ -27,116 +30,19 @@ func incNesting(yylex interface{}) bool {
return false
}
-func decNesting(yylex interface{}) {
+func decNesting(yylex yyLexer) {
yylex.(*Tokenizer).nesting--
}
// skipToEnd forces the lexer to end prematurely. Not all SQL statements
// are supported by the Parser, thus calling skipToEnd will make the lexer
// return EOF early.
-func skipToEnd(yylex interface{}) {
+func skipToEnd(yylex yyLexer) {
yylex.(*Tokenizer).SkipToEnd = true
}
-//line sql.y:53
-type yySymType struct {
- yys int
- empty struct{}
- statement Statement
- selStmt SelectStatement
- ddl *DDL
- ins *Insert
- byt byte
- bytes []byte
- bytes2 [][]byte
- str string
- strs []string
- selectExprs SelectExprs
- selectExpr SelectExpr
- columns Columns
- partitions Partitions
- colName *ColName
- tableExprs TableExprs
- tableExpr TableExpr
- joinCondition JoinCondition
- tableName TableName
- tableNames TableNames
- indexHints *IndexHints
- expr Expr
- exprs Exprs
- boolVal BoolVal
- boolean bool
- literal *Literal
- colTuple ColTuple
- values Values
- valTuple ValTuple
- subquery *Subquery
- derivedTable *DerivedTable
- whens []*When
- when *When
- orderBy OrderBy
- order *Order
- limit *Limit
- updateExprs UpdateExprs
- setExprs SetExprs
- updateExpr *UpdateExpr
- setExpr *SetExpr
- characteristic Characteristic
- characteristics []Characteristic
- colIdent ColIdent
- tableIdent TableIdent
- convertType *ConvertType
- aliasedTableName *AliasedTableExpr
- TableSpec *TableSpec
- columnType ColumnType
- colKeyOpt ColumnKeyOption
- optVal Expr
- LengthScaleOption LengthScaleOption
- columnDefinition *ColumnDefinition
- columnDefinitions []*ColumnDefinition
- indexDefinition *IndexDefinition
- indexInfo *IndexInfo
- indexOption *IndexOption
- indexOptions []*IndexOption
- indexColumn *IndexColumn
- indexColumns []*IndexColumn
- constraintDefinition *ConstraintDefinition
- constraintInfo ConstraintInfo
- ReferenceAction ReferenceAction
- partDefs []*PartitionDefinition
- partDef *PartitionDefinition
- partSpec *PartitionSpec
- partSpecs []*PartitionSpec
- vindexParam VindexParam
- vindexParams []VindexParam
- showFilter *ShowFilter
- optLike *OptLike
- isolationLevel IsolationLevel
- insertAction InsertAction
- scope Scope
- ignore Ignore
- lock Lock
- joinType JoinType
- comparisonExprOperator ComparisonExprOperator
- isExprOperator IsExprOperator
- matchExprOption MatchExprOption
- orderDirection OrderDirection
- explainType ExplainType
- selectInto *SelectInto
- createIndex *CreateIndex
- createDatabase *CreateDatabase
- alterDatabase *AlterDatabase
- collateAndCharset CollateAndCharset
- collateAndCharsets []CollateAndCharset
- createTable *CreateTable
- tableAndLockTypes []*TableAndLockType
- tableAndLockType *TableAndLockType
- lockType LockType
- alterTable *AlterTable
- alterOption AlterOption
- alterOptions []AlterOption
- tableOption *TableOption
- tableOptions TableOptions
+func bindVariable(yylex yyLexer, bvar string) {
+ yylex.(*Tokenizer).BindVars[bvar] = struct{}{}
}
const LEX_ERROR = 57346
@@ -171,404 +77,427 @@ const LOCK = 57374
const UNLOCK = 57375
const KEYS = 57376
const DO = 57377
-const DISTINCTROW = 57378
-const PARSER = 57379
-const OUTFILE = 57380
-const S3 = 57381
-const DATA = 57382
-const LOAD = 57383
-const LINES = 57384
-const TERMINATED = 57385
-const ESCAPED = 57386
-const ENCLOSED = 57387
-const DUMPFILE = 57388
-const CSV = 57389
-const HEADER = 57390
-const MANIFEST = 57391
-const OVERWRITE = 57392
-const STARTING = 57393
-const OPTIONALLY = 57394
-const VALUES = 57395
-const LAST_INSERT_ID = 57396
-const NEXT = 57397
-const VALUE = 57398
-const SHARE = 57399
-const MODE = 57400
-const SQL_NO_CACHE = 57401
-const SQL_CACHE = 57402
-const SQL_CALC_FOUND_ROWS = 57403
-const JOIN = 57404
-const STRAIGHT_JOIN = 57405
-const LEFT = 57406
-const RIGHT = 57407
-const INNER = 57408
-const OUTER = 57409
-const CROSS = 57410
-const NATURAL = 57411
-const USE = 57412
-const FORCE = 57413
-const ON = 57414
-const USING = 57415
-const INPLACE = 57416
-const COPY = 57417
-const ALGORITHM = 57418
-const NONE = 57419
-const SHARED = 57420
-const EXCLUSIVE = 57421
-const ID = 57422
-const AT_ID = 57423
-const AT_AT_ID = 57424
-const HEX = 57425
-const STRING = 57426
-const INTEGRAL = 57427
-const FLOAT = 57428
-const HEXNUM = 57429
-const VALUE_ARG = 57430
-const LIST_ARG = 57431
-const COMMENT = 57432
-const COMMENT_KEYWORD = 57433
-const BIT_LITERAL = 57434
-const COMPRESSION = 57435
-const NULL = 57436
-const TRUE = 57437
-const FALSE = 57438
-const OFF = 57439
-const DISCARD = 57440
-const IMPORT = 57441
-const ENABLE = 57442
-const DISABLE = 57443
-const TABLESPACE = 57444
-const OR = 57445
-const XOR = 57446
-const AND = 57447
-const NOT = 57448
-const BETWEEN = 57449
-const CASE = 57450
-const WHEN = 57451
-const THEN = 57452
-const ELSE = 57453
-const END = 57454
-const LE = 57455
-const GE = 57456
-const NE = 57457
-const NULL_SAFE_EQUAL = 57458
-const IS = 57459
-const LIKE = 57460
-const REGEXP = 57461
-const IN = 57462
-const SHIFT_LEFT = 57463
-const SHIFT_RIGHT = 57464
-const DIV = 57465
-const MOD = 57466
-const UNARY = 57467
-const COLLATE = 57468
-const BINARY = 57469
-const UNDERSCORE_BINARY = 57470
-const UNDERSCORE_UTF8MB4 = 57471
-const UNDERSCORE_UTF8 = 57472
-const UNDERSCORE_LATIN1 = 57473
-const INTERVAL = 57474
-const JSON_EXTRACT_OP = 57475
-const JSON_UNQUOTE_EXTRACT_OP = 57476
-const CREATE = 57477
-const ALTER = 57478
-const DROP = 57479
-const RENAME = 57480
-const ANALYZE = 57481
-const ADD = 57482
-const FLUSH = 57483
-const CHANGE = 57484
-const MODIFY = 57485
-const SCHEMA = 57486
-const TABLE = 57487
-const INDEX = 57488
-const VIEW = 57489
-const TO = 57490
-const IGNORE = 57491
-const IF = 57492
-const UNIQUE = 57493
-const PRIMARY = 57494
-const COLUMN = 57495
-const SPATIAL = 57496
-const FULLTEXT = 57497
-const KEY_BLOCK_SIZE = 57498
-const CHECK = 57499
-const INDEXES = 57500
-const ACTION = 57501
-const CASCADE = 57502
-const CONSTRAINT = 57503
-const FOREIGN = 57504
-const NO = 57505
-const REFERENCES = 57506
-const RESTRICT = 57507
-const SHOW = 57508
-const DESCRIBE = 57509
-const EXPLAIN = 57510
-const DATE = 57511
-const ESCAPE = 57512
-const REPAIR = 57513
-const OPTIMIZE = 57514
-const TRUNCATE = 57515
-const COALESCE = 57516
-const EXCHANGE = 57517
-const REBUILD = 57518
-const PARTITIONING = 57519
-const REMOVE = 57520
-const MAXVALUE = 57521
-const PARTITION = 57522
-const REORGANIZE = 57523
-const LESS = 57524
-const THAN = 57525
-const PROCEDURE = 57526
-const TRIGGER = 57527
-const VINDEX = 57528
-const VINDEXES = 57529
-const DIRECTORY = 57530
-const NAME = 57531
-const UPGRADE = 57532
-const STATUS = 57533
-const VARIABLES = 57534
-const WARNINGS = 57535
-const CASCADED = 57536
-const DEFINER = 57537
-const OPTION = 57538
-const SQL = 57539
-const UNDEFINED = 57540
-const SEQUENCE = 57541
-const MERGE = 57542
-const TEMPTABLE = 57543
-const INVOKER = 57544
-const SECURITY = 57545
-const FIRST = 57546
-const AFTER = 57547
-const LAST = 57548
-const BEGIN = 57549
-const START = 57550
-const TRANSACTION = 57551
-const COMMIT = 57552
-const ROLLBACK = 57553
-const SAVEPOINT = 57554
-const RELEASE = 57555
-const WORK = 57556
-const BIT = 57557
-const TINYINT = 57558
-const SMALLINT = 57559
-const MEDIUMINT = 57560
-const INT = 57561
-const INTEGER = 57562
-const BIGINT = 57563
-const INTNUM = 57564
-const REAL = 57565
-const DOUBLE = 57566
-const FLOAT_TYPE = 57567
-const DECIMAL = 57568
-const NUMERIC = 57569
-const TIME = 57570
-const TIMESTAMP = 57571
-const DATETIME = 57572
-const YEAR = 57573
-const CHAR = 57574
-const VARCHAR = 57575
-const BOOL = 57576
-const CHARACTER = 57577
-const VARBINARY = 57578
-const NCHAR = 57579
-const TEXT = 57580
-const TINYTEXT = 57581
-const MEDIUMTEXT = 57582
-const LONGTEXT = 57583
-const BLOB = 57584
-const TINYBLOB = 57585
-const MEDIUMBLOB = 57586
-const LONGBLOB = 57587
-const JSON = 57588
-const ENUM = 57589
-const GEOMETRY = 57590
-const POINT = 57591
-const LINESTRING = 57592
-const POLYGON = 57593
-const GEOMETRYCOLLECTION = 57594
-const MULTIPOINT = 57595
-const MULTILINESTRING = 57596
-const MULTIPOLYGON = 57597
-const NULLX = 57598
-const AUTO_INCREMENT = 57599
-const APPROXNUM = 57600
-const SIGNED = 57601
-const UNSIGNED = 57602
-const ZEROFILL = 57603
-const COLLATION = 57604
-const DATABASES = 57605
-const SCHEMAS = 57606
-const TABLES = 57607
-const VITESS_METADATA = 57608
-const VSCHEMA = 57609
-const FULL = 57610
-const PROCESSLIST = 57611
-const COLUMNS = 57612
-const FIELDS = 57613
-const ENGINES = 57614
-const PLUGINS = 57615
-const EXTENDED = 57616
-const KEYSPACES = 57617
-const VITESS_KEYSPACES = 57618
-const VITESS_SHARDS = 57619
-const VITESS_TABLETS = 57620
-const CODE = 57621
-const PRIVILEGES = 57622
-const FUNCTION = 57623
-const NAMES = 57624
-const CHARSET = 57625
-const GLOBAL = 57626
-const SESSION = 57627
-const ISOLATION = 57628
-const LEVEL = 57629
-const READ = 57630
-const WRITE = 57631
-const ONLY = 57632
-const REPEATABLE = 57633
-const COMMITTED = 57634
-const UNCOMMITTED = 57635
-const SERIALIZABLE = 57636
-const CURRENT_TIMESTAMP = 57637
-const DATABASE = 57638
-const CURRENT_DATE = 57639
-const CURRENT_TIME = 57640
-const LOCALTIME = 57641
-const LOCALTIMESTAMP = 57642
-const CURRENT_USER = 57643
-const UTC_DATE = 57644
-const UTC_TIME = 57645
-const UTC_TIMESTAMP = 57646
-const REPLACE = 57647
-const CONVERT = 57648
-const CAST = 57649
-const SUBSTR = 57650
-const SUBSTRING = 57651
-const GROUP_CONCAT = 57652
-const SEPARATOR = 57653
-const TIMESTAMPADD = 57654
-const TIMESTAMPDIFF = 57655
-const MATCH = 57656
-const AGAINST = 57657
-const BOOLEAN = 57658
-const LANGUAGE = 57659
-const WITH = 57660
-const QUERY = 57661
-const EXPANSION = 57662
-const WITHOUT = 57663
-const VALIDATION = 57664
-const UNUSED = 57665
-const ARRAY = 57666
-const CUME_DIST = 57667
-const DESCRIPTION = 57668
-const DENSE_RANK = 57669
-const EMPTY = 57670
-const EXCEPT = 57671
-const FIRST_VALUE = 57672
-const GROUPING = 57673
-const GROUPS = 57674
-const JSON_TABLE = 57675
-const LAG = 57676
-const LAST_VALUE = 57677
-const LATERAL = 57678
-const LEAD = 57679
-const MEMBER = 57680
-const NTH_VALUE = 57681
-const NTILE = 57682
-const OF = 57683
-const OVER = 57684
-const PERCENT_RANK = 57685
-const RANK = 57686
-const RECURSIVE = 57687
-const ROW_NUMBER = 57688
-const SYSTEM = 57689
-const WINDOW = 57690
-const ACTIVE = 57691
-const ADMIN = 57692
-const BUCKETS = 57693
-const CLONE = 57694
-const COMPONENT = 57695
-const DEFINITION = 57696
-const ENFORCED = 57697
-const EXCLUDE = 57698
-const FOLLOWING = 57699
-const GEOMCOLLECTION = 57700
-const GET_MASTER_PUBLIC_KEY = 57701
-const HISTOGRAM = 57702
-const HISTORY = 57703
-const INACTIVE = 57704
-const INVISIBLE = 57705
-const LOCKED = 57706
-const MASTER_COMPRESSION_ALGORITHMS = 57707
-const MASTER_PUBLIC_KEY_PATH = 57708
-const MASTER_TLS_CIPHERSUITES = 57709
-const MASTER_ZSTD_COMPRESSION_LEVEL = 57710
-const NESTED = 57711
-const NETWORK_NAMESPACE = 57712
-const NOWAIT = 57713
-const NULLS = 57714
-const OJ = 57715
-const OLD = 57716
-const OPTIONAL = 57717
-const ORDINALITY = 57718
-const ORGANIZATION = 57719
-const OTHERS = 57720
-const PATH = 57721
-const PERSIST = 57722
-const PERSIST_ONLY = 57723
-const PRECEDING = 57724
-const PRIVILEGE_CHECKS_USER = 57725
-const PROCESS = 57726
-const RANDOM = 57727
-const REFERENCE = 57728
-const REQUIRE_ROW_FORMAT = 57729
-const RESOURCE = 57730
-const RESPECT = 57731
-const RESTART = 57732
-const RETAIN = 57733
-const REUSE = 57734
-const ROLE = 57735
-const SECONDARY = 57736
-const SECONDARY_ENGINE = 57737
-const SECONDARY_LOAD = 57738
-const SECONDARY_UNLOAD = 57739
-const SKIP = 57740
-const SRID = 57741
-const THREAD_PRIORITY = 57742
-const TIES = 57743
-const UNBOUNDED = 57744
-const VCPU = 57745
-const VISIBLE = 57746
-const FORMAT = 57747
-const TREE = 57748
-const VITESS = 57749
-const TRADITIONAL = 57750
-const LOCAL = 57751
-const LOW_PRIORITY = 57752
-const AVG_ROW_LENGTH = 57753
-const CONNECTION = 57754
-const CHECKSUM = 57755
-const DELAY_KEY_WRITE = 57756
-const ENCRYPTION = 57757
-const ENGINE = 57758
-const INSERT_METHOD = 57759
-const MAX_ROWS = 57760
-const MIN_ROWS = 57761
-const PACK_KEYS = 57762
-const PASSWORD = 57763
-const FIXED = 57764
-const DYNAMIC = 57765
-const COMPRESSED = 57766
-const REDUNDANT = 57767
-const COMPACT = 57768
-const ROW_FORMAT = 57769
-const STATS_AUTO_RECALC = 57770
-const STATS_PERSISTENT = 57771
-const STATS_SAMPLE_PAGES = 57772
-const STORAGE = 57773
-const MEMORY = 57774
-const DISK = 57775
+const CALL = 57378
+const DISTINCTROW = 57379
+const PARSER = 57380
+const OUTFILE = 57381
+const S3 = 57382
+const DATA = 57383
+const LOAD = 57384
+const LINES = 57385
+const TERMINATED = 57386
+const ESCAPED = 57387
+const ENCLOSED = 57388
+const DUMPFILE = 57389
+const CSV = 57390
+const HEADER = 57391
+const MANIFEST = 57392
+const OVERWRITE = 57393
+const STARTING = 57394
+const OPTIONALLY = 57395
+const VALUES = 57396
+const LAST_INSERT_ID = 57397
+const NEXT = 57398
+const VALUE = 57399
+const SHARE = 57400
+const MODE = 57401
+const SQL_NO_CACHE = 57402
+const SQL_CACHE = 57403
+const SQL_CALC_FOUND_ROWS = 57404
+const JOIN = 57405
+const STRAIGHT_JOIN = 57406
+const LEFT = 57407
+const RIGHT = 57408
+const INNER = 57409
+const OUTER = 57410
+const CROSS = 57411
+const NATURAL = 57412
+const USE = 57413
+const FORCE = 57414
+const ON = 57415
+const USING = 57416
+const INPLACE = 57417
+const COPY = 57418
+const ALGORITHM = 57419
+const NONE = 57420
+const SHARED = 57421
+const EXCLUSIVE = 57422
+const ID = 57423
+const AT_ID = 57424
+const AT_AT_ID = 57425
+const HEX = 57426
+const STRING = 57427
+const INTEGRAL = 57428
+const FLOAT = 57429
+const HEXNUM = 57430
+const VALUE_ARG = 57431
+const LIST_ARG = 57432
+const COMMENT = 57433
+const COMMENT_KEYWORD = 57434
+const BIT_LITERAL = 57435
+const COMPRESSION = 57436
+const NULL = 57437
+const TRUE = 57438
+const FALSE = 57439
+const OFF = 57440
+const DISCARD = 57441
+const IMPORT = 57442
+const ENABLE = 57443
+const DISABLE = 57444
+const TABLESPACE = 57445
+const OR = 57446
+const XOR = 57447
+const AND = 57448
+const NOT = 57449
+const BETWEEN = 57450
+const CASE = 57451
+const WHEN = 57452
+const THEN = 57453
+const ELSE = 57454
+const END = 57455
+const LE = 57456
+const GE = 57457
+const NE = 57458
+const NULL_SAFE_EQUAL = 57459
+const IS = 57460
+const LIKE = 57461
+const REGEXP = 57462
+const IN = 57463
+const SHIFT_LEFT = 57464
+const SHIFT_RIGHT = 57465
+const DIV = 57466
+const MOD = 57467
+const UNARY = 57468
+const COLLATE = 57469
+const BINARY = 57470
+const UNDERSCORE_BINARY = 57471
+const UNDERSCORE_UTF8MB4 = 57472
+const UNDERSCORE_UTF8 = 57473
+const UNDERSCORE_LATIN1 = 57474
+const INTERVAL = 57475
+const JSON_EXTRACT_OP = 57476
+const JSON_UNQUOTE_EXTRACT_OP = 57477
+const CREATE = 57478
+const ALTER = 57479
+const DROP = 57480
+const RENAME = 57481
+const ANALYZE = 57482
+const ADD = 57483
+const FLUSH = 57484
+const CHANGE = 57485
+const MODIFY = 57486
+const REVERT = 57487
+const SCHEMA = 57488
+const TABLE = 57489
+const INDEX = 57490
+const VIEW = 57491
+const TO = 57492
+const IGNORE = 57493
+const IF = 57494
+const UNIQUE = 57495
+const PRIMARY = 57496
+const COLUMN = 57497
+const SPATIAL = 57498
+const FULLTEXT = 57499
+const KEY_BLOCK_SIZE = 57500
+const CHECK = 57501
+const INDEXES = 57502
+const ACTION = 57503
+const CASCADE = 57504
+const CONSTRAINT = 57505
+const FOREIGN = 57506
+const NO = 57507
+const REFERENCES = 57508
+const RESTRICT = 57509
+const SHOW = 57510
+const DESCRIBE = 57511
+const EXPLAIN = 57512
+const DATE = 57513
+const ESCAPE = 57514
+const REPAIR = 57515
+const OPTIMIZE = 57516
+const TRUNCATE = 57517
+const COALESCE = 57518
+const EXCHANGE = 57519
+const REBUILD = 57520
+const PARTITIONING = 57521
+const REMOVE = 57522
+const MAXVALUE = 57523
+const PARTITION = 57524
+const REORGANIZE = 57525
+const LESS = 57526
+const THAN = 57527
+const PROCEDURE = 57528
+const TRIGGER = 57529
+const VINDEX = 57530
+const VINDEXES = 57531
+const DIRECTORY = 57532
+const NAME = 57533
+const UPGRADE = 57534
+const STATUS = 57535
+const VARIABLES = 57536
+const WARNINGS = 57537
+const CASCADED = 57538
+const DEFINER = 57539
+const OPTION = 57540
+const SQL = 57541
+const UNDEFINED = 57542
+const SEQUENCE = 57543
+const MERGE = 57544
+const TEMPORARY = 57545
+const TEMPTABLE = 57546
+const INVOKER = 57547
+const SECURITY = 57548
+const FIRST = 57549
+const AFTER = 57550
+const LAST = 57551
+const VITESS_MIGRATION = 57552
+const CANCEL = 57553
+const RETRY = 57554
+const COMPLETE = 57555
+const BEGIN = 57556
+const START = 57557
+const TRANSACTION = 57558
+const COMMIT = 57559
+const ROLLBACK = 57560
+const SAVEPOINT = 57561
+const RELEASE = 57562
+const WORK = 57563
+const BIT = 57564
+const TINYINT = 57565
+const SMALLINT = 57566
+const MEDIUMINT = 57567
+const INT = 57568
+const INTEGER = 57569
+const BIGINT = 57570
+const INTNUM = 57571
+const REAL = 57572
+const DOUBLE = 57573
+const FLOAT_TYPE = 57574
+const DECIMAL = 57575
+const NUMERIC = 57576
+const TIME = 57577
+const TIMESTAMP = 57578
+const DATETIME = 57579
+const YEAR = 57580
+const CHAR = 57581
+const VARCHAR = 57582
+const BOOL = 57583
+const CHARACTER = 57584
+const VARBINARY = 57585
+const NCHAR = 57586
+const TEXT = 57587
+const TINYTEXT = 57588
+const MEDIUMTEXT = 57589
+const LONGTEXT = 57590
+const BLOB = 57591
+const TINYBLOB = 57592
+const MEDIUMBLOB = 57593
+const LONGBLOB = 57594
+const JSON = 57595
+const ENUM = 57596
+const GEOMETRY = 57597
+const POINT = 57598
+const LINESTRING = 57599
+const POLYGON = 57600
+const GEOMETRYCOLLECTION = 57601
+const MULTIPOINT = 57602
+const MULTILINESTRING = 57603
+const MULTIPOLYGON = 57604
+const NULLX = 57605
+const AUTO_INCREMENT = 57606
+const APPROXNUM = 57607
+const SIGNED = 57608
+const UNSIGNED = 57609
+const ZEROFILL = 57610
+const COLLATION = 57611
+const DATABASES = 57612
+const SCHEMAS = 57613
+const TABLES = 57614
+const VITESS_METADATA = 57615
+const VSCHEMA = 57616
+const FULL = 57617
+const PROCESSLIST = 57618
+const COLUMNS = 57619
+const FIELDS = 57620
+const ENGINES = 57621
+const PLUGINS = 57622
+const EXTENDED = 57623
+const KEYSPACES = 57624
+const VITESS_KEYSPACES = 57625
+const VITESS_SHARDS = 57626
+const VITESS_TABLETS = 57627
+const VITESS_MIGRATIONS = 57628
+const CODE = 57629
+const PRIVILEGES = 57630
+const FUNCTION = 57631
+const OPEN = 57632
+const TRIGGERS = 57633
+const EVENT = 57634
+const USER = 57635
+const NAMES = 57636
+const CHARSET = 57637
+const GLOBAL = 57638
+const SESSION = 57639
+const ISOLATION = 57640
+const LEVEL = 57641
+const READ = 57642
+const WRITE = 57643
+const ONLY = 57644
+const REPEATABLE = 57645
+const COMMITTED = 57646
+const UNCOMMITTED = 57647
+const SERIALIZABLE = 57648
+const CURRENT_TIMESTAMP = 57649
+const DATABASE = 57650
+const CURRENT_DATE = 57651
+const CURRENT_TIME = 57652
+const LOCALTIME = 57653
+const LOCALTIMESTAMP = 57654
+const CURRENT_USER = 57655
+const UTC_DATE = 57656
+const UTC_TIME = 57657
+const UTC_TIMESTAMP = 57658
+const REPLACE = 57659
+const CONVERT = 57660
+const CAST = 57661
+const SUBSTR = 57662
+const SUBSTRING = 57663
+const GROUP_CONCAT = 57664
+const SEPARATOR = 57665
+const TIMESTAMPADD = 57666
+const TIMESTAMPDIFF = 57667
+const MATCH = 57668
+const AGAINST = 57669
+const BOOLEAN = 57670
+const LANGUAGE = 57671
+const WITH = 57672
+const QUERY = 57673
+const EXPANSION = 57674
+const WITHOUT = 57675
+const VALIDATION = 57676
+const UNUSED = 57677
+const ARRAY = 57678
+const CUME_DIST = 57679
+const DESCRIPTION = 57680
+const DENSE_RANK = 57681
+const EMPTY = 57682
+const EXCEPT = 57683
+const FIRST_VALUE = 57684
+const GROUPING = 57685
+const GROUPS = 57686
+const JSON_TABLE = 57687
+const LAG = 57688
+const LAST_VALUE = 57689
+const LATERAL = 57690
+const LEAD = 57691
+const MEMBER = 57692
+const NTH_VALUE = 57693
+const NTILE = 57694
+const OF = 57695
+const OVER = 57696
+const PERCENT_RANK = 57697
+const RANK = 57698
+const RECURSIVE = 57699
+const ROW_NUMBER = 57700
+const SYSTEM = 57701
+const WINDOW = 57702
+const ACTIVE = 57703
+const ADMIN = 57704
+const BUCKETS = 57705
+const CLONE = 57706
+const COMPONENT = 57707
+const DEFINITION = 57708
+const ENFORCED = 57709
+const EXCLUDE = 57710
+const FOLLOWING = 57711
+const GEOMCOLLECTION = 57712
+const GET_MASTER_PUBLIC_KEY = 57713
+const HISTOGRAM = 57714
+const HISTORY = 57715
+const INACTIVE = 57716
+const INVISIBLE = 57717
+const LOCKED = 57718
+const MASTER_COMPRESSION_ALGORITHMS = 57719
+const MASTER_PUBLIC_KEY_PATH = 57720
+const MASTER_TLS_CIPHERSUITES = 57721
+const MASTER_ZSTD_COMPRESSION_LEVEL = 57722
+const NESTED = 57723
+const NETWORK_NAMESPACE = 57724
+const NOWAIT = 57725
+const NULLS = 57726
+const OJ = 57727
+const OLD = 57728
+const OPTIONAL = 57729
+const ORDINALITY = 57730
+const ORGANIZATION = 57731
+const OTHERS = 57732
+const PATH = 57733
+const PERSIST = 57734
+const PERSIST_ONLY = 57735
+const PRECEDING = 57736
+const PRIVILEGE_CHECKS_USER = 57737
+const PROCESS = 57738
+const RANDOM = 57739
+const REFERENCE = 57740
+const REQUIRE_ROW_FORMAT = 57741
+const RESOURCE = 57742
+const RESPECT = 57743
+const RESTART = 57744
+const RETAIN = 57745
+const REUSE = 57746
+const ROLE = 57747
+const SECONDARY = 57748
+const SECONDARY_ENGINE = 57749
+const SECONDARY_LOAD = 57750
+const SECONDARY_UNLOAD = 57751
+const SKIP = 57752
+const SRID = 57753
+const THREAD_PRIORITY = 57754
+const TIES = 57755
+const UNBOUNDED = 57756
+const VCPU = 57757
+const VISIBLE = 57758
+const FORMAT = 57759
+const TREE = 57760
+const VITESS = 57761
+const TRADITIONAL = 57762
+const LOCAL = 57763
+const LOW_PRIORITY = 57764
+const NO_WRITE_TO_BINLOG = 57765
+const LOGS = 57766
+const ERROR = 57767
+const GENERAL = 57768
+const HOSTS = 57769
+const OPTIMIZER_COSTS = 57770
+const USER_RESOURCES = 57771
+const SLOW = 57772
+const CHANNEL = 57773
+const RELAY = 57774
+const EXPORT = 57775
+const AVG_ROW_LENGTH = 57776
+const CONNECTION = 57777
+const CHECKSUM = 57778
+const DELAY_KEY_WRITE = 57779
+const ENCRYPTION = 57780
+const ENGINE = 57781
+const INSERT_METHOD = 57782
+const MAX_ROWS = 57783
+const MIN_ROWS = 57784
+const PACK_KEYS = 57785
+const PASSWORD = 57786
+const FIXED = 57787
+const DYNAMIC = 57788
+const COMPRESSED = 57789
+const REDUNDANT = 57790
+const COMPACT = 57791
+const ROW_FORMAT = 57792
+const STATS_AUTO_RECALC = 57793
+const STATS_PERSISTENT = 57794
+const STATS_SAMPLE_PAGES = 57795
+const STORAGE = 57796
+const MEMORY = 57797
+const DISK = 57798
var yyToknames = [...]string{
"$end",
@@ -606,6 +535,7 @@ var yyToknames = [...]string{
"UNLOCK",
"KEYS",
"DO",
+ "CALL",
"DISTINCTROW",
"PARSER",
"OUTFILE",
@@ -731,6 +661,7 @@ var yyToknames = [...]string{
"FLUSH",
"CHANGE",
"MODIFY",
+ "REVERT",
"SCHEMA",
"TABLE",
"INDEX",
@@ -788,12 +719,17 @@ var yyToknames = [...]string{
"UNDEFINED",
"SEQUENCE",
"MERGE",
+ "TEMPORARY",
"TEMPTABLE",
"INVOKER",
"SECURITY",
"FIRST",
"AFTER",
"LAST",
+ "VITESS_MIGRATION",
+ "CANCEL",
+ "RETRY",
+ "COMPLETE",
"BEGIN",
"START",
"TRANSACTION",
@@ -866,9 +802,14 @@ var yyToknames = [...]string{
"VITESS_KEYSPACES",
"VITESS_SHARDS",
"VITESS_TABLETS",
+ "VITESS_MIGRATIONS",
"CODE",
"PRIVILEGES",
"FUNCTION",
+ "OPEN",
+ "TRIGGERS",
+ "EVENT",
+ "USER",
"NAMES",
"CHARSET",
"GLOBAL",
@@ -998,6 +939,17 @@ var yyToknames = [...]string{
"TRADITIONAL",
"LOCAL",
"LOW_PRIORITY",
+ "NO_WRITE_TO_BINLOG",
+ "LOGS",
+ "ERROR",
+ "GENERAL",
+ "HOSTS",
+ "OPTIMIZER_COSTS",
+ "USER_RESOURCES",
+ "SLOW",
+ "CHANNEL",
+ "RELAY",
+ "EXPORT",
"AVG_ROW_LENGTH",
"CONNECTION",
"CHECKSUM",
@@ -1035,2835 +987,3032 @@ var yyExca = [...]int{
-1, 1,
1, -1,
-2, 0,
- -1, 42,
- 163, 911,
- -2, 89,
- -1, 43,
- 1, 107,
- 451, 107,
- -2, 113,
-1, 44,
- 142, 113,
- 252, 113,
- 300, 113,
- -2, 325,
- -1, 51,
- 34, 463,
- 163, 463,
- 175, 463,
- 208, 477,
- 209, 477,
- -2, 465,
- -1, 56,
- 165, 487,
- -2, 485,
- -1, 80,
- 55, 530,
- -2, 538,
- -1, 104,
- 1, 108,
- 451, 108,
- -2, 113,
- -1, 114,
- 168, 230,
- 169, 230,
- -2, 319,
- -1, 133,
- 142, 113,
- 252, 113,
- 300, 113,
- -2, 334,
- -1, 550,
- 149, 922,
- -2, 918,
- -1, 551,
- 149, 923,
- -2, 919,
- -1, 568,
- 55, 531,
- -2, 543,
- -1, 569,
- 55, 532,
- -2, 544,
- -1, 589,
- 117, 1249,
- -2, 82,
- -1, 590,
- 117, 1136,
- -2, 83,
- -1, 596,
- 117, 1184,
- -2, 896,
- -1, 730,
- 117, 1078,
- -2, 893,
- -1, 762,
- 174, 36,
- 179, 36,
- -2, 241,
- -1, 841,
- 1, 372,
- 451, 372,
- -2, 113,
- -1, 1057,
- 1, 268,
- 451, 268,
- -2, 113,
- -1, 1130,
- 168, 230,
- 169, 230,
- -2, 319,
- -1, 1139,
- 174, 37,
- 179, 37,
+ 164, 938,
+ -2, 91,
+ -1, 45,
+ 1, 112,
+ 474, 112,
+ -2, 118,
+ -1, 46,
+ 143, 118,
+ 259, 118,
+ 312, 118,
+ -2, 326,
+ -1, 53,
+ 34, 472,
+ 165, 472,
+ 177, 472,
+ 210, 486,
+ 211, 486,
+ -2, 474,
+ -1, 58,
+ 167, 496,
+ -2, 494,
+ -1, 84,
+ 56, 564,
+ -2, 572,
+ -1, 109,
+ 1, 113,
+ 474, 113,
+ -2, 118,
+ -1, 119,
+ 170, 231,
+ 171, 231,
+ -2, 320,
+ -1, 138,
+ 143, 118,
+ 259, 118,
+ 312, 118,
+ -2, 335,
+ -1, 579,
+ 150, 959,
+ -2, 955,
+ -1, 580,
+ 150, 960,
+ -2, 956,
+ -1, 599,
+ 56, 565,
+ -2, 577,
+ -1, 600,
+ 56, 566,
+ -2, 578,
+ -1, 621,
+ 118, 1303,
+ -2, 84,
+ -1, 622,
+ 118, 1185,
+ -2, 85,
+ -1, 628,
+ 118, 1235,
+ -2, 932,
+ -1, 766,
+ 118, 1122,
+ -2, 929,
+ -1, 799,
+ 176, 38,
+ 181, 38,
-2, 242,
- -1, 1333,
- 149, 925,
- -2, 921,
- -1, 1423,
- 73, 64,
- 81, 64,
- -2, 68,
- -1, 1444,
+ -1, 880,
+ 1, 373,
+ 474, 373,
+ -2, 118,
+ -1, 1120,
1, 269,
- 451, 269,
- -2, 113,
- -1, 1831,
- 5, 790,
- 18, 790,
- 20, 790,
- 32, 790,
- 82, 790,
- -2, 569,
- -1, 2046,
- 45, 864,
- -2, 862,
+ 474, 269,
+ -2, 118,
+ -1, 1198,
+ 170, 231,
+ 171, 231,
+ -2, 320,
+ -1, 1207,
+ 176, 39,
+ 181, 39,
+ -2, 243,
+ -1, 1420,
+ 150, 964,
+ -2, 958,
+ -1, 1512,
+ 74, 66,
+ 82, 66,
+ -2, 70,
+ -1, 1533,
+ 1, 270,
+ 474, 270,
+ -2, 118,
+ -1, 1945,
+ 5, 825,
+ 18, 825,
+ 20, 825,
+ 32, 825,
+ 83, 825,
+ -2, 604,
+ -1, 2160,
+ 46, 900,
+ -2, 894,
}
const yyPrivate = 57344
-const yyLast = 26967
+const yyLast = 28950
var yyAct = [...]int{
- 550, 2134, 2121, 1878, 2046, 1749, 2098, 2059, 493, 1718,
- 1991, 1967, 1647, 79, 3, 1506, 1441, 1615, 1812, 522,
- 1811, 508, 1370, 1875, 561, 960, 1005, 1648, 1356, 1808,
- 1476, 491, 1722, 1012, 1461, 1481, 734, 1705, 1983, 1706,
- 1823, 142, 1420, 1770, 853, 894, 1575, 173, 1327, 892,
- 185, 1319, 458, 185, 1504, 1634, 792, 1248, 474, 1261,
- 185, 128, 757, 1483, 594, 77, 1698, 1042, 1049, 1409,
- 1137, 1402, 570, 1010, 1372, 1015, 1035, 495, 1032, 999,
- 1353, 1296, 555, 1553, 741, 1144, 31, 738, 474, 484,
- 1227, 474, 185, 474, 1039, 1472, 1033, 763, 1484, 1385,
- 758, 759, 742, 1048, 1022, 1046, 75, 1425, 564, 172,
- 1129, 1155, 1264, 111, 760, 112, 834, 770, 973, 145,
- 1462, 105, 106, 481, 74, 976, 8, 7, 6, 1741,
- 1740, 1993, 1535, 591, 1367, 1368, 1214, 2090, 1282, 1613,
- 2043, 1946, 2020, 2019, 1854, 1962, 796, 795, 1963, 2140,
- 2095, 2133, 1488, 735, 2070, 113, 2124, 76, 576, 580,
- 1879, 1523, 556, 107, 2094, 2069, 1787, 1908, 185, 749,
- 1614, 1678, 436, 1486, 1677, 797, 1837, 1679, 185, 863,
- 847, 1838, 1839, 185, 1435, 482, 483, 794, 1542, 1436,
- 1437, 890, 1541, 588, 174, 175, 176, 811, 462, 80,
- 808, 809, 554, 812, 813, 814, 815, 553, 595, 818,
- 819, 820, 821, 822, 823, 824, 825, 826, 827, 828,
- 829, 830, 831, 832, 107, 753, 751, 750, 752, 1689,
- 773, 861, 1455, 774, 82, 83, 84, 85, 86, 87,
- 33, 872, 873, 68, 37, 38, 461, 1939, 1114, 798,
- 799, 800, 1485, 1050, 449, 1051, 1369, 171, 2074, 805,
- 472, 1899, 1897, 450, 470, 1281, 810, 864, 476, 889,
- 166, 1723, 535, 447, 541, 542, 539, 540, 1505, 538,
- 537, 536, 1538, 97, 1745, 1751, 1330, 1228, 2123, 543,
- 544, 1746, 107, 835, 888, 108, 1233, 130, 1283, 1284,
- 1285, 174, 175, 176, 842, 150, 869, 462, 174, 175,
- 176, 1753, 444, 1754, 67, 102, 178, 179, 180, 862,
- 1550, 456, 2032, 922, 921, 931, 932, 924, 925, 926,
- 927, 928, 929, 930, 923, 462, 140, 933, 102, 94,
- 817, 129, 102, 167, 1236, 98, 1237, 1238, 99, 100,
- 1234, 816, 2091, 867, 868, 461, 1752, 865, 866, 147,
- 1230, 148, 2016, 462, 1957, 772, 117, 118, 139, 138,
- 165, 874, 781, 1507, 1204, 875, 872, 873, 2138, 779,
- 1403, 790, 789, 461, 788, 787, 786, 881, 785, 883,
- 437, 438, 439, 1232, 454, 455, 465, 784, 783, 778,
- 451, 453, 466, 440, 441, 468, 467, 1853, 443, 442,
- 754, 461, 446, 463, 1487, 1205, 1123, 1206, 134, 115,
- 141, 122, 114, 1540, 135, 136, 880, 882, 151, 2068,
- 791, 845, 1958, 886, 1231, 1557, 185, 739, 156, 123,
- 739, 765, 766, 846, 737, 2141, 2110, 578, 746, 772,
- 876, 879, 739, 126, 124, 119, 120, 121, 125, 474,
- 474, 474, 1426, 116, 782, 170, 2075, 101, 104, 2008,
- 462, 780, 127, 1143, 1142, 582, 1755, 474, 474, 1616,
- 1618, 772, 856, 857, 858, 859, 860, 2060, 1529, 1241,
- 101, 898, 904, 801, 101, 772, 1715, 1537, 1796, 771,
- 1795, 772, 891, 1794, 747, 775, 765, 1733, 435, 895,
- 896, 485, 177, 1549, 1771, 776, 1548, 2050, 461, 1525,
- 945, 946, 1928, 878, 2136, 1836, 1639, 2137, 1583, 2135,
- 2033, 1555, 1594, 777, 1515, 1431, 1554, 464, 877, 143,
- 1026, 958, 851, 1442, 459, 1216, 1215, 1217, 1218, 1219,
- 923, 1591, 933, 933, 185, 1674, 69, 1773, 1555, 460,
- 1262, 1381, 885, 1554, 807, 913, 90, 1278, 943, 1789,
- 772, 1003, 2024, 793, 887, 1617, 1821, 1265, 1229, 474,
- 870, 1303, 185, 771, 185, 185, 1052, 474, 137, 1002,
- 765, 768, 769, 474, 739, 1301, 1302, 1300, 762, 766,
- 131, 908, 855, 132, 840, 907, 905, 906, 2009, 2007,
- 961, 91, 848, 849, 1775, 771, 1779, 761, 1774, 1354,
- 1772, 775, 765, 910, 1687, 1777, 1031, 1703, 1118, 771,
- 1000, 776, 591, 839, 1776, 771, 765, 768, 769, 913,
- 739, 841, 1524, 1016, 762, 766, 2053, 1778, 1780, 1522,
- 1019, 911, 912, 910, 975, 978, 980, 982, 983, 985,
- 987, 988, 979, 981, 2142, 984, 986, 1520, 989, 913,
- 945, 946, 1354, 565, 1601, 1263, 997, 922, 921, 931,
- 932, 924, 925, 926, 927, 928, 929, 930, 923, 945,
- 946, 933, 1266, 144, 149, 146, 152, 153, 154, 155,
- 157, 158, 159, 160, 771, 1452, 806, 595, 781, 161,
- 162, 163, 164, 836, 854, 837, 779, 1453, 838, 922,
- 921, 931, 932, 924, 925, 926, 927, 928, 929, 930,
- 923, 2143, 1590, 933, 185, 1517, 1576, 1945, 1110, 926,
- 927, 928, 929, 930, 923, 2125, 185, 933, 1119, 1120,
- 924, 925, 926, 927, 928, 929, 930, 923, 1004, 1521,
- 933, 474, 745, 1139, 1291, 1293, 1294, 911, 912, 910,
- 169, 1148, 1517, 2126, 1944, 1152, 1292, 1223, 474, 474,
- 67, 474, 1149, 474, 474, 913, 474, 474, 474, 474,
- 474, 474, 1299, 174, 175, 176, 1519, 1135, 174, 175,
- 176, 474, 1321, 912, 910, 185, 1188, 1183, 1184, 1121,
- 1122, 1568, 1569, 1570, 2115, 911, 912, 910, 1128, 1859,
- 913, 1201, 931, 932, 924, 925, 926, 927, 928, 929,
- 930, 923, 474, 913, 933, 1222, 1702, 1185, 1386, 1387,
- 185, 1147, 2116, 1798, 1701, 1491, 185, 1109, 1224, 185,
- 1247, 1221, 185, 1694, 1014, 1146, 1211, 1209, 1322, 748,
- 1208, 1116, 1207, 185, 744, 185, 1125, 1191, 1192, 1126,
- 1199, 1124, 1138, 1197, 1198, 1193, 1190, 474, 474, 185,
- 474, 474, 185, 474, 474, 1189, 1145, 1145, 1164, 2128,
- 1157, 1799, 1158, 2127, 1160, 1162, 1047, 1911, 1166, 1168,
- 1170, 1172, 1174, 174, 175, 176, 1253, 1681, 1255, 1220,
- 1257, 1258, 1259, 1260, 1210, 2117, 1250, 2106, 2084, 911,
- 912, 910, 1186, 1980, 1942, 1916, 1268, 1269, 1800, 1271,
- 1272, 1267, 1274, 1275, 1320, 914, 1297, 913, 1711, 581,
- 1242, 1699, 1565, 1323, 922, 921, 931, 932, 924, 925,
- 926, 927, 928, 929, 930, 923, 1533, 474, 933, 1532,
- 1251, 107, 1212, 751, 750, 1200, 1589, 1196, 174, 175,
- 176, 485, 1499, 1195, 1588, 1342, 1345, 1324, 1325, 1194,
- 971, 1355, 1383, 1748, 586, 911, 912, 910, 1335, 1336,
- 565, 474, 474, 1791, 1298, 1337, 2014, 1276, 2013, 911,
- 912, 910, 185, 913, 1331, 174, 175, 176, 76, 1497,
- 1008, 1011, 1864, 2109, 474, 1877, 1332, 913, 174, 175,
- 176, 185, 1202, 1333, 474, 583, 584, 1376, 185, 1725,
- 185, 961, 1377, 174, 175, 176, 1714, 1388, 185, 185,
- 1864, 2066, 1361, 1362, 1382, 474, 1864, 2051, 474, 2037,
- 565, 1421, 511, 510, 513, 514, 515, 516, 1450, 474,
- 1820, 512, 1923, 517, 1864, 2022, 1334, 1960, 565, 911,
- 912, 910, 1331, 921, 931, 932, 924, 925, 926, 927,
- 928, 929, 930, 923, 1400, 565, 933, 913, 1635, 1396,
- 591, 1333, 78, 591, 1635, 1446, 1517, 565, 33, 1445,
- 1926, 565, 1864, 1869, 1851, 1850, 33, 1463, 1464, 1465,
- 1847, 1848, 1847, 1846, 474, 1394, 565, 551, 1426, 1742,
- 1427, 1449, 1496, 1498, 1113, 1727, 1720, 1721, 1398, 1406,
- 565, 1642, 33, 1424, 1427, 474, 909, 565, 1668, 1478,
- 1518, 474, 1113, 1112, 909, 1148, 1426, 1148, 1429, 1433,
- 1432, 1058, 1057, 1643, 1809, 1516, 1406, 1394, 2023, 1448,
- 1447, 1395, 1820, 1820, 1947, 595, 1864, 186, 595, 1405,
- 186, 1503, 67, 558, 1849, 475, 1406, 186, 1434, 1998,
- 67, 1428, 1606, 1605, 1394, 474, 1517, 1320, 1500, 1430,
- 1384, 1365, 1320, 1320, 1517, 1428, 1240, 1479, 1044, 756,
- 755, 1474, 1475, 1426, 2058, 475, 67, 1492, 475, 186,
- 475, 1948, 1949, 1950, 1490, 1513, 1489, 1514, 1495, 1406,
- 1179, 1526, 67, 1969, 1876, 1509, 1479, 185, 1934, 1512,
- 1394, 185, 185, 185, 185, 185, 1508, 1115, 1528, 1477,
- 1527, 185, 185, 1530, 1531, 185, 1747, 67, 773, 1338,
- 1339, 774, 1510, 1344, 1347, 1348, 1473, 1467, 1466, 1226,
- 1140, 1145, 1136, 185, 185, 185, 1111, 1180, 1181, 1182,
- 1708, 92, 171, 1824, 1825, 1750, 1970, 185, 1951, 1360,
- 185, 474, 1363, 1364, 1707, 186, 488, 1488, 2130, 1910,
- 1411, 1414, 1415, 1416, 1412, 186, 1413, 1417, 2122, 1842,
- 186, 1827, 1809, 1252, 1176, 1716, 1559, 1279, 1244, 1830,
- 1013, 1829, 1563, 1656, 1456, 1655, 1457, 1458, 1459, 1460,
- 1297, 1536, 1952, 1953, 2112, 1659, 1657, 2093, 1708, 1558,
- 1660, 1658, 1468, 1469, 1470, 1471, 922, 921, 931, 932,
- 924, 925, 926, 927, 928, 929, 930, 923, 1177, 1178,
- 933, 1661, 1578, 1415, 1416, 1801, 1579, 1286, 1287, 1288,
- 1289, 571, 1585, 1624, 1927, 1867, 185, 1586, 1587, 1633,
- 1632, 2080, 2077, 1593, 185, 572, 1596, 1597, 1298, 2114,
- 2097, 2099, 1571, 2105, 1603, 2104, 1604, 1622, 96, 1607,
- 1608, 1609, 1610, 1611, 2047, 1623, 185, 2045, 1017, 1018,
- 574, 1239, 573, 1621, 552, 1712, 1350, 185, 185, 185,
- 185, 185, 1340, 1341, 1649, 1628, 1644, 1584, 1707, 185,
- 1351, 556, 803, 185, 802, 897, 185, 185, 1006, 1735,
- 185, 185, 185, 1600, 168, 1734, 1666, 181, 1637, 1686,
- 1007, 108, 1000, 1680, 2055, 1612, 2054, 1996, 1620, 1664,
- 1665, 1511, 1154, 1153, 1141, 1921, 1379, 1640, 1627, 1386,
- 1387, 1493, 1243, 1693, 2015, 1964, 1419, 1631, 1669, 1638,
- 1636, 562, 1671, 559, 560, 1630, 1919, 2119, 1692, 2118,
- 1695, 1696, 1697, 2102, 2081, 1650, 1683, 1662, 1653, 474,
- 1920, 1863, 1690, 1691, 1501, 1667, 1250, 563, 1672, 78,
- 1440, 1804, 474, 1675, 1651, 1652, 1635, 1654, 474, 1684,
- 1595, 474, 1592, 1148, 1724, 2132, 2131, 558, 474, 1027,
- 1728, 1411, 1414, 1415, 1416, 1412, 571, 1413, 1417, 1020,
- 1739, 1824, 1825, 2132, 1700, 2048, 1940, 1380, 185, 76,
- 572, 81, 1710, 73, 1, 1738, 1709, 445, 1366, 998,
- 457, 2120, 1213, 186, 1203, 1880, 1966, 474, 185, 1480,
- 1737, 1730, 1128, 568, 569, 574, 1870, 573, 1494, 1704,
- 1482, 764, 133, 1332, 1443, 1444, 475, 475, 475, 2062,
- 1333, 1736, 89, 1729, 474, 732, 88, 767, 884, 1502,
- 1320, 2006, 1961, 1688, 475, 475, 1454, 1938, 1841, 1685,
- 2052, 1064, 1062, 1063, 1061, 1066, 1756, 1065, 1060, 1764,
- 1765, 1280, 1769, 471, 1418, 1580, 1581, 1053, 1768, 1760,
- 474, 1021, 1758, 804, 1759, 1852, 1451, 1277, 1534, 1767,
- 185, 1766, 1788, 452, 1782, 871, 1598, 448, 941, 1629,
- 474, 1781, 1676, 592, 585, 1815, 474, 474, 95, 2103,
- 2078, 1649, 2076, 2044, 1992, 1810, 2079, 2042, 2113, 2096,
- 1378, 1009, 1918, 1813, 1803, 1807, 1599, 970, 1352, 185,
- 1036, 186, 494, 1290, 1816, 509, 506, 507, 1389, 1641,
- 915, 492, 486, 1028, 1410, 1767, 1408, 1407, 1245, 521,
- 1040, 1826, 1822, 1034, 1828, 1831, 475, 1393, 1539, 186,
- 1744, 186, 186, 1819, 475, 1905, 567, 1844, 1845, 93,
- 475, 1833, 1349, 1860, 2031, 1907, 185, 185, 566, 59,
- 36, 474, 478, 1832, 1840, 1834, 2089, 1835, 900, 575,
- 30, 1797, 1866, 29, 185, 28, 23, 22, 21, 184,
- 20, 19, 469, 25, 1856, 1855, 18, 17, 1871, 184,
- 16, 1881, 474, 474, 474, 103, 185, 1865, 1818, 46,
- 43, 41, 110, 1868, 1857, 1858, 109, 1873, 44, 1874,
- 40, 843, 579, 579, 27, 26, 15, 14, 13, 12,
- 11, 184, 10, 947, 948, 949, 950, 951, 952, 953,
- 954, 955, 956, 1890, 9, 1889, 5, 4, 903, 1891,
- 24, 959, 1602, 1886, 1887, 2, 1895, 0, 0, 0,
- 1900, 1901, 0, 922, 921, 931, 932, 924, 925, 926,
- 927, 928, 929, 930, 923, 0, 1915, 933, 0, 1649,
- 1625, 1626, 1011, 0, 1917, 0, 0, 0, 0, 0,
- 1922, 0, 0, 1924, 1925, 0, 0, 1929, 1931, 0,
- 0, 186, 0, 1930, 0, 0, 0, 184, 0, 0,
- 0, 0, 0, 186, 474, 474, 1936, 184, 0, 0,
- 0, 0, 184, 1955, 0, 0, 0, 474, 475, 0,
- 474, 1941, 0, 1943, 166, 1954, 1965, 0, 0, 1937,
- 0, 0, 0, 0, 1973, 475, 475, 0, 475, 1959,
- 475, 475, 0, 475, 475, 475, 475, 475, 475, 108,
- 0, 0, 0, 474, 474, 474, 185, 1971, 475, 150,
- 0, 0, 186, 0, 0, 1968, 0, 474, 1972, 474,
- 0, 0, 1979, 0, 0, 474, 0, 0, 1989, 1999,
- 0, 1984, 1997, 1813, 2004, 0, 1995, 1813, 2001, 475,
- 0, 1990, 1987, 1988, 0, 2003, 0, 186, 2011, 185,
- 2012, 2005, 2010, 186, 0, 0, 186, 0, 0, 186,
- 474, 185, 0, 147, 0, 148, 2018, 0, 2021, 2025,
- 186, 0, 186, 0, 165, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 475, 475, 186, 475, 475, 186,
- 475, 475, 0, 2027, 2028, 2029, 2030, 2041, 2034, 0,
- 2035, 2036, 2038, 0, 0, 0, 2039, 2040, 1813, 2049,
- 1892, 1893, 0, 1894, 474, 474, 1896, 0, 1898, 2056,
- 0, 0, 0, 0, 0, 2061, 0, 0, 474, 0,
- 0, 0, 151, 0, 0, 0, 0, 0, 0, 1790,
- 0, 474, 156, 2073, 0, 0, 0, 1649, 0, 474,
- 2067, 2082, 0, 0, 2085, 0, 0, 0, 2088, 1968,
- 2063, 0, 2092, 0, 475, 0, 0, 0, 0, 0,
- 0, 2101, 2100, 1805, 922, 921, 931, 932, 924, 925,
- 926, 927, 928, 929, 930, 923, 2111, 0, 933, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 475, 475,
- 0, 0, 0, 0, 0, 2107, 2108, 0, 0, 186,
- 0, 0, 0, 2129, 0, 184, 0, 0, 0, 0,
- 0, 475, 0, 0, 2139, 0, 0, 0, 186, 0,
- 0, 475, 0, 0, 0, 186, 0, 186, 0, 0,
- 0, 0, 0, 143, 0, 186, 186, 0, 0, 0,
- 0, 917, 475, 920, 0, 475, 0, 0, 1904, 934,
- 935, 936, 937, 938, 939, 940, 475, 918, 919, 916,
- 922, 921, 931, 932, 924, 925, 926, 927, 928, 929,
- 930, 923, 0, 0, 933, 0, 0, 0, 0, 0,
- 0, 0, 1295, 0, 0, 1304, 1305, 1306, 1307, 1308,
- 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316, 1317, 1318,
- 1903, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 475, 0, 0, 0, 0, 0, 0, 0, 1909,
- 0, 0, 0, 184, 0, 0, 0, 0, 0, 0,
- 0, 0, 475, 0, 0, 0, 0, 579, 475, 0,
- 0, 0, 485, 0, 1357, 0, 0, 0, 0, 1932,
- 0, 184, 1933, 184, 1043, 1935, 922, 921, 931, 932,
- 924, 925, 926, 927, 928, 929, 930, 923, 0, 0,
- 933, 0, 1902, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 475, 0, 0, 0, 0, 144, 149, 146,
- 152, 153, 154, 155, 157, 158, 159, 160, 0, 0,
- 0, 0, 0, 161, 162, 163, 164, 0, 922, 921,
- 931, 932, 924, 925, 926, 927, 928, 929, 930, 923,
- 0, 0, 933, 0, 186, 0, 0, 0, 186, 186,
- 186, 186, 186, 0, 0, 0, 0, 0, 186, 186,
- 0, 0, 186, 0, 166, 0, 0, 1994, 485, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 186, 186, 186, 520, 0, 0, 0, 0, 0, 108,
- 0, 0, 0, 0, 186, 0, 0, 186, 475, 150,
- 922, 921, 931, 932, 924, 925, 926, 927, 928, 929,
- 930, 923, 0, 0, 933, 0, 0, 0, 0, 0,
- 0, 0, 0, 184, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 184, 0, 0, 0, 0,
- 1682, 473, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 147, 0, 148, 0, 0, 0, 0,
- 0, 0, 0, 1151, 165, 0, 0, 0, 0, 0,
- 0, 593, 0, 0, 736, 1761, 743, 0, 0, 0,
- 0, 0, 0, 186, 0, 0, 0, 0, 1151, 1151,
- 0, 186, 0, 0, 184, 922, 921, 931, 932, 924,
- 925, 926, 927, 928, 929, 930, 923, 0, 0, 933,
- 0, 0, 0, 186, 0, 0, 0, 0, 0, 1001,
- 0, 0, 151, 0, 186, 186, 186, 186, 186, 184,
- 0, 0, 156, 0, 0, 184, 186, 0, 184, 0,
- 186, 1249, 0, 186, 186, 0, 0, 186, 186, 186,
- 0, 0, 184, 0, 184, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 184, 183,
- 0, 184, 0, 1577, 0, 0, 0, 0, 0, 477,
- 0, 0, 0, 0, 0, 0, 0, 0, 1572, 1573,
- 1574, 0, 0, 922, 921, 931, 932, 924, 925, 926,
- 927, 928, 929, 930, 923, 0, 475, 933, 0, 0,
- 0, 740, 0, 0, 0, 0, 0, 0, 0, 475,
- 0, 0, 0, 0, 0, 475, 0, 0, 475, 0,
- 0, 0, 0, 143, 0, 475, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 579, 1249, 0,
- 0, 0, 579, 579, 0, 186, 579, 579, 579, 0,
- 0, 0, 1151, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 475, 186, 0, 0, 0, 0,
- 0, 0, 579, 579, 579, 579, 579, 833, 0, 0,
- 0, 1374, 0, 0, 0, 0, 0, 844, 0, 0,
- 0, 475, 850, 0, 0, 0, 0, 0, 0, 0,
- 184, 0, 0, 0, 0, 0, 1249, 184, 0, 184,
- 0, 0, 0, 0, 0, 0, 0, 184, 184, 0,
- 0, 0, 0, 0, 0, 0, 0, 475, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 186, 0, 523,
- 32, 0, 0, 0, 0, 0, 0, 475, 0, 0,
- 0, 0, 0, 475, 475, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 32, 0, 0, 0, 186, 144, 149, 146,
- 152, 153, 154, 155, 157, 158, 159, 160, 0, 0,
- 0, 0, 0, 161, 162, 163, 164, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 557, 0, 0, 0, 0,
- 0, 0, 0, 186, 186, 0, 0, 0, 475, 0,
- 0, 0, 593, 593, 593, 0, 0, 0, 0, 0,
- 0, 186, 0, 0, 0, 0, 0, 0, 0, 0,
- 899, 901, 0, 1762, 1763, 0, 0, 0, 0, 475,
- 475, 475, 0, 186, 0, 0, 0, 0, 1783, 1784,
- 0, 1785, 1786, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1792, 1793, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 184, 0, 0, 0,
- 184, 184, 184, 184, 184, 0, 0, 0, 0, 0,
- 184, 184, 0, 0, 184, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1560, 1561, 184, 852, 0, 0, 0, 0,
- 0, 0, 1024, 0, 0, 0, 184, 0, 0, 184,
- 593, 0, 0, 1843, 0, 0, 1054, 0, 0, 0,
- 0, 475, 475, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 475, 0, 0, 475, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 579, 579,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 475, 475, 475, 186, 0, 0, 0, 0, 0, 579,
- 0, 0, 0, 0, 475, 0, 475, 0, 1888, 0,
- 0, 0, 475, 0, 0, 184, 0, 0, 0, 0,
- 0, 0, 0, 1374, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 186, 0, 0, 0,
- 0, 0, 0, 0, 579, 184, 0, 475, 186, 0,
- 0, 0, 0, 0, 0, 1151, 184, 184, 184, 184,
- 184, 1030, 0, 0, 1041, 0, 0, 0, 1663, 0,
- 0, 0, 184, 0, 0, 184, 184, 0, 0, 184,
- 1673, 1249, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 475, 475, 0, 736, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 475, 0, 1150, 0, 0,
- 0, 1156, 1156, 0, 1156, 0, 1156, 1156, 475, 1165,
- 1156, 1156, 1156, 1156, 1156, 0, 475, 0, 0, 0,
- 0, 0, 1150, 1150, 736, 0, 0, 0, 0, 1974,
- 1975, 1976, 1977, 1978, 0, 1151, 0, 1981, 1982, 0,
- 0, 0, 0, 0, 0, 1249, 0, 0, 893, 893,
- 893, 0, 0, 0, 0, 1225, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 184, 32, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 942,
- 944, 0, 0, 0, 0, 0, 0, 184, 0, 0,
- 0, 0, 0, 1059, 0, 0, 0, 0, 0, 0,
- 593, 593, 0, 593, 593, 1117, 593, 593, 0, 0,
- 957, 0, 579, 0, 962, 963, 964, 965, 966, 967,
- 968, 969, 0, 972, 974, 977, 977, 977, 974, 977,
- 977, 974, 977, 990, 991, 992, 993, 994, 995, 996,
- 0, 0, 0, 0, 0, 0, 0, 32, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 184,
- 0, 0, 0, 0, 1187, 0, 0, 0, 0, 0,
- 0, 0, 1151, 1037, 0, 0, 0, 0, 0, 0,
- 1326, 0, 593, 0, 2086, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1150, 0, 184, 1235,
- 0, 0, 0, 0, 0, 1041, 0, 0, 1246, 0,
- 0, 0, 0, 0, 1358, 1359, 0, 166, 0, 0,
- 0, 0, 1254, 0, 1256, 0, 0, 0, 1717, 0,
- 0, 0, 0, 0, 0, 0, 0, 1390, 1270, 0,
- 0, 1273, 108, 0, 130, 184, 184, 1024, 0, 0,
- 593, 0, 150, 1151, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 184, 0, 0, 0, 0, 593, 0,
- 0, 593, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 736, 140, 0, 184, 0, 0, 129, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 147, 0, 148, 0,
- 0, 0, 0, 1131, 1132, 139, 138, 165, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 743, 0, 0,
- 0, 0, 0, 166, 0, 0, 0, 0, 0, 0,
- 1151, 0, 0, 0, 1127, 0, 0, 0, 736, 0,
- 0, 0, 0, 0, 743, 134, 1133, 141, 108, 1130,
- 130, 135, 136, 0, 0, 151, 0, 0, 150, 0,
- 1397, 0, 0, 0, 0, 156, 0, 1401, 0, 1404,
- 0, 0, 0, 0, 0, 0, 0, 0, 1423, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 736, 140,
- 0, 0, 0, 0, 129, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 147, 0, 148, 0, 0, 0, 0, 1131,
- 1132, 139, 138, 165, 0, 1374, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 893, 893, 0, 893,
- 893, 0, 893, 893, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 143, 0, 184, 0,
- 0, 134, 1133, 141, 0, 1130, 0, 135, 136, 0,
- 184, 151, 0, 0, 1567, 0, 0, 0, 0, 0,
- 0, 156, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 137, 0, 0, 0, 33,
- 34, 35, 68, 37, 38, 0, 0, 131, 0, 0,
- 132, 0, 0, 0, 0, 0, 0, 0, 0, 72,
- 0, 0, 0, 0, 39, 65, 66, 0, 63, 0,
- 0, 0, 0, 0, 64, 0, 0, 0, 1151, 0,
- 0, 0, 0, 0, 0, 0, 1041, 0, 0, 0,
- 1543, 1544, 1545, 1546, 1547, 0, 0, 0, 0, 1081,
- 1551, 1552, 0, 52, 1556, 0, 0, 0, 0, 0,
- 0, 0, 143, 67, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1562, 0, 0, 1422, 0, 1150,
- 0, 0, 0, 0, 0, 0, 1564, 0, 0, 1566,
- 144, 149, 146, 152, 153, 154, 155, 157, 158, 159,
- 160, 0, 0, 0, 0, 0, 161, 162, 163, 164,
- 0, 137, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 131, 0, 0, 132, 0, 0, 0,
- 0, 0, 0, 0, 0, 42, 45, 48, 47, 50,
- 0, 62, 0, 0, 0, 0, 0, 0, 0, 0,
+ 579, 2247, 2236, 1997, 2191, 1858, 2213, 2173, 1746, 1827,
+ 2161, 2110, 2086, 551, 1925, 1713, 1548, 2102, 1021, 939,
+ 1530, 1926, 1994, 537, 1457, 1597, 1922, 1733, 1068, 1747,
+ 592, 1831, 83, 3, 520, 892, 1563, 1812, 769, 1568,
+ 829, 147, 522, 1811, 517, 1183, 1937, 1810, 1320, 180,
+ 1673, 1647, 180, 1884, 485, 180, 1595, 1075, 626, 1205,
+ 501, 1509, 180, 1414, 1570, 133, 1112, 1804, 1105, 1406,
+ 180, 794, 1491, 1078, 1498, 919, 1098, 601, 1095, 1073,
+ 1459, 1060, 1440, 33, 513, 586, 1096, 524, 1383, 957,
+ 1102, 81, 501, 1182, 807, 501, 180, 501, 776, 1212,
+ 781, 800, 773, 797, 795, 796, 1295, 1111, 1559, 1474,
+ 1514, 623, 777, 1085, 79, 1325, 886, 110, 1223, 150,
+ 1172, 1549, 1109, 1197, 116, 937, 111, 1180, 871, 1034,
+ 78, 8, 508, 7, 6, 1177, 1037, 1850, 1849, 1626,
+ 117, 2112, 1872, 1873, 84, 1372, 182, 183, 184, 1454,
+ 1455, 1371, 1370, 1369, 1368, 1367, 511, 1282, 512, 1360,
+ 608, 612, 2205, 587, 1711, 112, 770, 2157, 1971, 2065,
+ 118, 2134, 2133, 180, 2081, 460, 831, 2082, 2253, 833,
+ 834, 86, 87, 88, 89, 90, 91, 832, 2210, 845,
+ 846, 2246, 849, 850, 851, 852, 509, 2184, 855, 856,
+ 857, 858, 859, 860, 861, 862, 863, 864, 865, 866,
+ 867, 868, 869, 627, 620, 811, 958, 1184, 80, 2239,
+ 1998, 1614, 2209, 2183, 810, 1663, 1901, 788, 2029, 112,
+ 786, 1633, 1712, 177, 789, 1632, 787, 1951, 1573, 1952,
+ 1953, 842, 958, 835, 836, 837, 1525, 1526, 785, 1871,
+ 2146, 983, 982, 992, 993, 985, 986, 987, 988, 989,
+ 990, 991, 984, 1661, 107, 994, 453, 454, 1113, 848,
+ 1114, 1456, 847, 1524, 171, 926, 564, 928, 570, 571,
+ 568, 569, 968, 567, 566, 565, 912, 1515, 489, 790,
+ 899, 900, 35, 572, 573, 72, 39, 40, 112, 113,
+ 1777, 905, 911, 1776, 583, 582, 1778, 1794, 968, 935,
+ 155, 1542, 171, 1860, 925, 927, 2188, 2020, 1572, 107,
+ 172, 105, 2018, 1826, 1361, 1362, 1363, 499, 1359, 503,
+ 104, 182, 183, 184, 877, 497, 585, 113, 897, 135,
+ 1443, 488, 898, 899, 900, 1306, 1304, 1305, 155, 1832,
+ 1854, 1781, 1596, 1629, 1301, 1308, 1272, 1309, 1855, 1310,
+ 1296, 956, 918, 2238, 152, 872, 153, 71, 916, 917,
+ 914, 915, 932, 881, 1863, 170, 1641, 964, 854, 145,
+ 913, 1300, 853, 176, 134, 489, 107, 2206, 99, 1861,
+ 1862, 1298, 934, 102, 2130, 906, 101, 100, 1273, 2076,
+ 1274, 818, 152, 964, 153, 489, 1598, 1492, 1302, 1199,
+ 1200, 144, 143, 170, 816, 827, 1417, 924, 826, 825,
+ 923, 929, 1299, 824, 595, 823, 106, 822, 821, 820,
+ 815, 791, 1191, 828, 156, 1515, 922, 2077, 488, 109,
+ 774, 2254, 1970, 105, 161, 803, 774, 175, 2225, 1646,
+ 772, 909, 180, 774, 885, 1211, 1210, 180, 488, 802,
+ 180, 139, 1201, 146, 614, 1198, 887, 140, 141, 2147,
+ 1714, 1716, 156, 1181, 878, 1910, 1864, 1631, 930, 1620,
+ 1313, 106, 161, 944, 838, 1820, 501, 501, 501, 1885,
+ 1574, 809, 1628, 1909, 819, 809, 1908, 895, 2182, 901,
+ 902, 903, 904, 931, 501, 501, 489, 817, 784, 783,
+ 1773, 782, 1842, 963, 960, 961, 962, 967, 969, 966,
+ 936, 965, 809, 884, 780, 459, 451, 2251, 959, 2168,
+ 2189, 1640, 1649, 1887, 1639, 2049, 1616, 1648, 950, 963,
+ 960, 961, 962, 967, 969, 966, 1649, 965, 106, 844,
+ 148, 1648, 1662, 1950, 959, 809, 1738, 933, 1681, 488,
+ 2174, 1006, 1007, 1606, 1520, 1089, 1019, 1715, 876, 890,
+ 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017,
+ 1531, 984, 908, 180, 994, 994, 1470, 1355, 148, 1284,
+ 1283, 1285, 1286, 1287, 910, 1889, 920, 1893, 974, 1888,
+ 888, 1886, 1791, 1786, 896, 809, 1891, 1004, 2138, 830,
+ 1935, 501, 941, 942, 180, 1890, 180, 180, 880, 501,
+ 73, 1066, 182, 183, 184, 501, 1408, 808, 1892, 1894,
+ 1326, 808, 1692, 812, 802, 1297, 1022, 953, 623, 951,
+ 952, 894, 142, 813, 1065, 809, 1787, 1115, 873, 954,
+ 874, 1689, 879, 875, 136, 973, 971, 137, 808, 1061,
+ 1615, 814, 94, 1903, 1441, 802, 805, 806, 1789, 774,
+ 1580, 1784, 974, 799, 803, 2249, 1613, 1094, 2250, 1079,
+ 2248, 1611, 1409, 1785, 818, 182, 183, 184, 971, 1799,
+ 1472, 808, 798, 843, 1036, 1039, 1041, 1043, 1044, 1046,
+ 1048, 1049, 1040, 1042, 974, 1045, 1047, 95, 1050, 816,
+ 1475, 1476, 921, 1441, 1058, 1699, 1082, 1390, 1608, 2240,
+ 149, 154, 151, 157, 158, 159, 160, 162, 163, 164,
+ 165, 1388, 1389, 1387, 1067, 1955, 166, 167, 168, 169,
+ 627, 808, 1612, 1792, 1790, 1800, 1327, 2241, 802, 805,
+ 806, 2255, 774, 1471, 893, 2234, 799, 803, 149, 154,
+ 151, 157, 158, 159, 160, 162, 163, 164, 165, 180,
+ 174, 1006, 1007, 1173, 166, 167, 168, 169, 972, 973,
+ 971, 808, 2064, 1185, 1186, 1187, 2230, 812, 802, 1608,
+ 1006, 1007, 972, 973, 971, 71, 974, 813, 501, 2063,
+ 1207, 987, 988, 989, 990, 991, 984, 1386, 1216, 994,
+ 974, 1110, 1220, 1610, 2231, 501, 501, 1976, 501, 2256,
+ 501, 501, 1912, 501, 501, 501, 501, 501, 501, 1687,
+ 1189, 1190, 1378, 1380, 1381, 1808, 1203, 1686, 501, 1666,
+ 1667, 1668, 180, 1256, 1379, 985, 986, 987, 988, 989,
+ 990, 991, 984, 1217, 1788, 994, 1291, 1809, 1269, 1196,
+ 1289, 1807, 972, 973, 971, 1577, 2026, 1215, 779, 501,
+ 1913, 613, 972, 973, 971, 1292, 1253, 180, 1251, 1252,
+ 974, 972, 973, 971, 972, 973, 971, 180, 1259, 1260,
+ 974, 180, 1905, 1277, 1265, 1266, 1276, 1279, 610, 974,
+ 1213, 1213, 974, 618, 1275, 1267, 1214, 180, 1179, 1261,
+ 1258, 1257, 1232, 1188, 180, 1290, 1193, 1194, 1857, 1288,
+ 1206, 180, 180, 180, 180, 180, 180, 180, 180, 180,
+ 501, 501, 501, 1192, 1225, 2233, 1226, 2232, 1228, 1230,
+ 2221, 1330, 1234, 1236, 1238, 1240, 1242, 2219, 1334, 1322,
+ 1336, 1337, 1338, 1339, 2099, 1341, 1278, 180, 2061, 1688,
+ 1254, 615, 616, 2037, 514, 1958, 182, 183, 184, 1356,
+ 1780, 1914, 1817, 1328, 1329, 983, 982, 992, 993, 985,
+ 986, 987, 988, 989, 990, 991, 984, 1333, 1805, 994,
+ 1657, 1384, 1624, 1623, 1340, 1407, 1323, 1280, 788, 1268,
+ 112, 1314, 1264, 1263, 1410, 1319, 1262, 787, 540, 539,
+ 542, 543, 544, 545, 1064, 1077, 596, 541, 501, 546,
+ 2128, 1382, 2127, 1332, 1391, 1392, 1393, 1394, 1395, 1396,
+ 1397, 1398, 1399, 1400, 1401, 1402, 1403, 1404, 1405, 1418,
+ 35, 1411, 1412, 972, 973, 971, 1996, 1366, 182, 183,
+ 184, 1834, 501, 501, 1819, 1351, 1352, 1353, 182, 183,
+ 184, 974, 1590, 180, 80, 1385, 1983, 2224, 1419, 1539,
+ 1429, 1432, 1983, 2180, 1983, 2169, 1442, 501, 1420, 1934,
+ 1424, 82, 1464, 1444, 180, 2151, 596, 501, 2117, 1022,
+ 1734, 180, 1734, 180, 1983, 2136, 1465, 2079, 596, 1608,
+ 596, 180, 180, 182, 183, 184, 1477, 1588, 501, 1418,
+ 1484, 501, 182, 183, 184, 71, 1270, 1516, 1448, 1449,
+ 2047, 596, 501, 1983, 1988, 1968, 1967, 623, 1964, 1965,
+ 623, 1964, 1963, 1510, 1516, 1421, 1483, 596, 1489, 1515,
+ 1851, 2172, 596, 1176, 1836, 1829, 1830, 1483, 1420, 1495,
+ 596, 1494, 1550, 1551, 1552, 970, 596, 1485, 35, 1495,
+ 1535, 1934, 1534, 1609, 983, 982, 992, 993, 985, 986,
+ 987, 988, 989, 990, 991, 984, 1767, 501, 994, 1517,
+ 1483, 180, 2044, 1741, 1515, 501, 2066, 1519, 35, 180,
+ 1587, 1589, 1513, 1538, 1176, 1175, 1517, 1121, 1120, 970,
+ 1487, 1923, 1495, 501, 1515, 2137, 1742, 1983, 1565, 501,
+ 1934, 1966, 1495, 1216, 1518, 1216, 1522, 1523, 1608, 1704,
+ 1703, 1571, 589, 1607, 1674, 1483, 1537, 1536, 1608, 627,
+ 1521, 1591, 627, 71, 2067, 2068, 2069, 1473, 1814, 1452,
+ 1364, 1594, 992, 993, 985, 986, 987, 988, 989, 990,
+ 991, 984, 1312, 501, 994, 1407, 1107, 793, 792, 71,
+ 1407, 1407, 2088, 71, 1543, 1995, 1544, 1545, 1546, 1547,
+ 2055, 1178, 1604, 1247, 1605, 1566, 580, 1561, 1562, 1583,
+ 1584, 1585, 1555, 1556, 1557, 1558, 1578, 1576, 1564, 1575,
+ 1856, 1617, 1601, 1560, 1554, 180, 811, 71, 2070, 180,
+ 180, 180, 180, 180, 1553, 810, 1213, 1600, 1599, 1566,
+ 1618, 1603, 1294, 180, 180, 180, 180, 1208, 1204, 1174,
+ 180, 1248, 1249, 1250, 1619, 181, 180, 96, 181, 1621,
+ 1622, 181, 1813, 180, 1244, 177, 502, 1859, 181, 2089,
+ 596, 1184, 2243, 2071, 2072, 2237, 181, 982, 992, 993,
+ 985, 986, 987, 988, 989, 990, 991, 984, 180, 501,
+ 994, 1422, 1423, 1941, 1652, 1653, 1938, 1939, 502, 1655,
+ 2032, 502, 181, 502, 1923, 1825, 1656, 1814, 1824, 1245,
+ 1246, 1823, 1581, 1357, 1315, 1627, 983, 982, 992, 993,
+ 985, 986, 987, 988, 989, 990, 991, 984, 1758, 1756,
+ 994, 1384, 1944, 1759, 1757, 1644, 1760, 1466, 1504, 1505,
+ 1943, 1755, 1754, 2227, 2208, 975, 1915, 983, 982, 992,
+ 993, 985, 986, 987, 988, 989, 990, 991, 984, 1723,
+ 1076, 994, 2048, 1670, 1671, 1672, 1986, 1732, 2162, 2164,
+ 1425, 1426, 1731, 2229, 1431, 1434, 1435, 2165, 2193, 181,
+ 98, 514, 2212, 180, 1660, 1683, 2192, 2214, 2196, 1721,
+ 1032, 180, 1500, 1503, 1504, 1505, 1501, 1722, 1502, 1506,
+ 1447, 2159, 1311, 1450, 1451, 1385, 1669, 1500, 1503, 1504,
+ 1505, 1501, 103, 1502, 1506, 180, 581, 1938, 1939, 1818,
+ 840, 839, 1071, 1074, 1720, 1437, 180, 180, 180, 180,
+ 180, 452, 1069, 2007, 1813, 587, 1727, 1682, 180, 1870,
+ 1438, 943, 180, 1844, 1070, 180, 180, 1843, 1739, 180,
+ 180, 180, 1698, 113, 1743, 2115, 1960, 606, 602, 1061,
+ 173, 1959, 1779, 455, 1710, 1468, 1602, 1748, 1222, 1221,
+ 1209, 1718, 2042, 603, 1765, 1821, 1736, 1475, 1476, 1318,
+ 1798, 2129, 2083, 1726, 1508, 590, 591, 1735, 1307, 1665,
+ 593, 1795, 1796, 1737, 2220, 2218, 1080, 1081, 605, 1797,
+ 604, 1801, 1802, 1803, 1749, 1782, 1768, 1752, 2217, 1322,
+ 1770, 1761, 180, 1750, 1751, 1766, 1753, 1730, 1771, 2197,
+ 1774, 2195, 82, 501, 2041, 1729, 1982, 1592, 594, 501,
+ 2040, 1918, 501, 1734, 1216, 2245, 2244, 1783, 1693, 501,
+ 80, 1837, 1690, 1816, 1090, 1571, 1083, 2245, 2166, 606,
+ 602, 1848, 1806, 1957, 1469, 589, 1839, 85, 77, 180,
+ 1, 472, 1453, 1059, 1815, 603, 484, 2235, 1281, 1833,
+ 1847, 1271, 1999, 2085, 1989, 1569, 801, 180, 138, 1532,
+ 1846, 1533, 2176, 93, 767, 1419, 92, 1196, 599, 600,
+ 605, 804, 604, 1838, 907, 1420, 1593, 2080, 1793, 1541,
+ 1127, 1125, 1126, 1124, 1845, 1129, 1128, 1123, 1358, 498,
+ 1507, 178, 501, 1116, 1084, 841, 462, 1969, 1407, 1354,
+ 1625, 468, 1002, 1866, 1728, 1775, 1865, 624, 617, 1929,
+ 2190, 1881, 2158, 2160, 2111, 2163, 2156, 2228, 2211, 1540,
+ 1467, 1072, 1883, 2039, 1917, 1697, 1031, 1439, 501, 1876,
+ 1877, 1874, 1099, 523, 1463, 1377, 538, 1868, 181, 180,
+ 1869, 535, 536, 181, 1897, 1898, 181, 1899, 1900, 501,
+ 1882, 1478, 1896, 1740, 1880, 501, 501, 976, 1906, 1907,
+ 1924, 1676, 521, 515, 1902, 1677, 1927, 1895, 1881, 1091,
+ 1499, 1497, 502, 502, 502, 1496, 1684, 1685, 180, 1316,
+ 1921, 1103, 1691, 1940, 1933, 1694, 1695, 1936, 1097, 1482,
+ 502, 502, 1630, 1701, 1748, 1702, 1853, 955, 1705, 1706,
+ 1707, 1708, 1709, 1324, 1946, 598, 1948, 510, 1949, 1942,
+ 97, 1436, 2145, 1664, 1719, 2028, 597, 61, 38, 505,
+ 2204, 946, 607, 32, 31, 30, 1961, 1962, 29, 1977,
+ 28, 180, 23, 1954, 180, 180, 180, 22, 21, 1947,
+ 501, 1956, 1678, 1679, 20, 19, 1911, 25, 18, 17,
+ 16, 108, 48, 180, 45, 43, 115, 114, 46, 1972,
+ 1763, 1764, 42, 1696, 1974, 1975, 1973, 882, 27, 181,
+ 2000, 501, 501, 501, 1932, 180, 26, 1990, 1984, 1373,
+ 1374, 1375, 1376, 15, 2008, 1985, 1987, 1993, 14, 1992,
+ 13, 12, 1571, 11, 10, 9, 5, 502, 4, 949,
+ 181, 550, 181, 181, 24, 502, 1020, 2, 0, 0,
+ 0, 502, 0, 0, 2005, 2006, 0, 0, 0, 0,
+ 0, 0, 0, 2011, 0, 0, 0, 0, 0, 0,
+ 2009, 0, 0, 0, 1427, 1428, 2016, 0, 0, 0,
+ 2038, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 179, 0, 0, 458, 0, 0, 496, 0, 0, 0,
+ 0, 2043, 0, 458, 0, 0, 0, 0, 0, 0,
+ 0, 458, 514, 0, 2052, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 2058, 0, 1748, 611, 611,
+ 2060, 2059, 2062, 501, 501, 0, 0, 458, 0, 0,
+ 0, 2051, 2074, 0, 0, 0, 501, 0, 0, 501,
+ 0, 2073, 0, 0, 2057, 2084, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1529, 2092, 0, 0, 2087, 1878,
+ 1879, 2013, 2014, 0, 2015, 0, 0, 2017, 0, 2019,
+ 0, 2091, 0, 0, 501, 501, 501, 180, 0, 0,
+ 2090, 0, 0, 0, 0, 181, 0, 0, 501, 0,
+ 501, 0, 2106, 2107, 2109, 0, 501, 0, 1927, 2098,
+ 2114, 2108, 1927, 2120, 458, 2123, 2116, 0, 2093, 2094,
+ 2095, 2096, 2097, 1567, 502, 0, 2100, 2101, 180, 2118,
+ 0, 2125, 2122, 2126, 0, 1930, 0, 0, 2124, 501,
+ 180, 502, 502, 0, 502, 0, 502, 502, 2139, 502,
+ 502, 502, 502, 502, 502, 2132, 1945, 0, 0, 0,
+ 0, 0, 0, 0, 502, 0, 2135, 0, 181, 0,
+ 0, 0, 0, 0, 2155, 0, 0, 0, 0, 0,
+ 0, 1927, 2167, 0, 0, 0, 0, 0, 501, 501,
+ 0, 0, 0, 0, 0, 502, 0, 0, 0, 0,
+ 2175, 0, 501, 181, 0, 0, 0, 2087, 2177, 0,
+ 0, 0, 2170, 181, 0, 2025, 0, 181, 2187, 501,
+ 0, 2194, 0, 501, 0, 2198, 0, 0, 2200, 0,
+ 0, 0, 2203, 181, 0, 0, 2207, 0, 0, 0,
+ 181, 0, 0, 0, 0, 2216, 2215, 181, 181, 181,
+ 181, 181, 181, 181, 181, 181, 502, 502, 502, 1748,
+ 2031, 2226, 0, 0, 0, 171, 2201, 0, 0, 0,
+ 0, 2010, 0, 0, 0, 2012, 0, 0, 0, 0,
+ 0, 0, 0, 181, 0, 0, 2021, 2022, 2242, 0,
+ 113, 0, 0, 0, 0, 0, 0, 2252, 0, 0,
+ 0, 155, 2036, 0, 0, 0, 0, 983, 982, 992,
+ 993, 985, 986, 987, 988, 989, 990, 991, 984, 2045,
+ 2046, 994, 0, 2050, 983, 982, 992, 993, 985, 986,
+ 987, 988, 989, 990, 991, 984, 0, 0, 994, 0,
+ 0, 0, 0, 0, 502, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 152, 0, 153, 0, 0,
+ 0, 0, 0, 0, 0, 0, 170, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 502, 502,
+ 2078, 0, 0, 0, 0, 0, 0, 0, 0, 181,
+ 1700, 0, 0, 458, 0, 0, 0, 0, 458, 0,
+ 0, 458, 0, 502, 0, 0, 0, 0, 0, 0,
+ 181, 0, 0, 502, 0, 0, 0, 181, 0, 181,
+ 1724, 1725, 1074, 0, 2103, 156, 0, 181, 181, 0,
+ 0, 0, 0, 0, 502, 161, 0, 502, 0, 0,
+ 0, 978, 0, 981, 0, 0, 0, 0, 502, 995,
+ 996, 997, 998, 999, 1000, 1001, 0, 979, 980, 977,
+ 983, 982, 992, 993, 985, 986, 987, 988, 989, 990,
+ 991, 984, 0, 0, 994, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 2141, 2142, 2143, 2144, 2024, 2148,
+ 0, 2149, 2150, 2152, 0, 0, 0, 2153, 2154, 0,
+ 0, 0, 0, 502, 0, 0, 0, 181, 0, 0,
+ 0, 502, 0, 0, 0, 181, 0, 0, 0, 0,
+ 0, 0, 0, 0, 458, 0, 0, 0, 0, 502,
+ 0, 0, 0, 0, 0, 502, 2181, 0, 0, 1875,
+ 611, 148, 552, 34, 0, 0, 0, 0, 0, 0,
+ 0, 2023, 0, 0, 0, 458, 0, 458, 1106, 983,
+ 982, 992, 993, 985, 986, 987, 988, 989, 990, 991,
+ 984, 0, 0, 994, 0, 0, 0, 34, 0, 502,
+ 983, 982, 992, 993, 985, 986, 987, 988, 989, 990,
+ 991, 984, 2222, 2223, 994, 0, 0, 983, 982, 992,
+ 993, 985, 986, 987, 988, 989, 990, 991, 984, 0,
+ 0, 994, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 181, 588, 0, 0, 181, 181, 181, 181, 181,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 181,
+ 181, 181, 181, 0, 0, 0, 181, 0, 1904, 0,
+ 0, 0, 181, 0, 0, 0, 0, 0, 0, 181,
+ 983, 982, 992, 993, 985, 986, 987, 988, 989, 990,
+ 991, 984, 0, 0, 994, 1675, 0, 0, 0, 0,
+ 0, 0, 0, 1919, 181, 502, 0, 0, 0, 0,
+ 0, 0, 0, 549, 0, 983, 982, 992, 993, 985,
+ 986, 987, 988, 989, 990, 991, 984, 0, 0, 994,
+ 458, 149, 154, 151, 157, 158, 159, 160, 162, 163,
+ 164, 165, 0, 0, 0, 0, 0, 166, 167, 168,
+ 169, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1219, 500, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1219, 1219, 181,
+ 0, 0, 0, 458, 0, 625, 0, 181, 771, 0,
+ 778, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 181, 0, 0, 0, 0, 0, 0, 458, 0,
+ 0, 0, 181, 181, 181, 181, 181, 0, 458, 0,
+ 0, 0, 1321, 0, 181, 0, 0, 0, 181, 0,
+ 0, 181, 181, 0, 0, 181, 181, 181, 458, 0,
+ 0, 0, 0, 0, 2030, 458, 0, 0, 0, 0,
+ 0, 0, 1342, 1343, 458, 458, 458, 458, 458, 458,
+ 458, 0, 0, 0, 0, 0, 0, 514, 0, 0,
+ 0, 0, 0, 0, 2053, 0, 0, 2054, 0, 0,
+ 2056, 0, 0, 0, 0, 0, 0, 0, 458, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 181, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 502,
+ 0, 0, 0, 0, 0, 502, 0, 0, 502, 0,
+ 0, 0, 0, 0, 0, 502, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 181, 0, 0, 0, 0,
+ 611, 1321, 0, 0, 0, 611, 611, 0, 0, 611,
+ 611, 611, 0, 181, 0, 1219, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 2113,
+ 514, 0, 0, 0, 0, 611, 611, 611, 611, 611,
+ 0, 0, 0, 0, 1461, 0, 0, 0, 502, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 458, 0, 0, 938, 938,
+ 938, 1321, 458, 0, 458, 0, 0, 0, 0, 0,
+ 0, 0, 458, 458, 502, 0, 0, 0, 34, 0,
+ 0, 0, 0, 0, 0, 181, 0, 0, 0, 0,
+ 0, 1003, 1005, 0, 0, 502, 0, 0, 0, 0,
+ 0, 502, 502, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1018, 0, 181, 0, 1023, 1024, 1025, 1026,
+ 1027, 1028, 1029, 1030, 0, 1033, 1035, 1038, 1038, 1038,
+ 1035, 1038, 1038, 1035, 1038, 1051, 1052, 1053, 1054, 1055,
+ 1056, 1057, 458, 0, 0, 0, 0, 1063, 0, 0,
+ 1586, 34, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 181, 0, 0,
+ 181, 181, 181, 0, 0, 0, 502, 0, 1100, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 181,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 625,
+ 625, 625, 0, 0, 0, 0, 0, 502, 502, 502,
+ 0, 181, 0, 0, 0, 0, 0, 945, 947, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1062, 458, 0, 0, 0,
+ 458, 458, 458, 458, 458, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 458, 458, 458, 458, 0, 0,
+ 0, 1650, 0, 0, 0, 0, 0, 458, 0, 0,
+ 0, 0, 0, 0, 458, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 457, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 504, 0, 458,
+ 0, 0, 0, 0, 1087, 584, 0, 0, 0, 502,
+ 502, 0, 625, 0, 0, 0, 0, 0, 1117, 0,
+ 0, 0, 502, 0, 0, 502, 0, 0, 0, 0,
+ 0, 775, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 611, 611, 0,
+ 502, 502, 502, 181, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 502, 0, 502, 0, 611, 0,
+ 0, 0, 502, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 458, 0, 0, 0, 0, 0,
+ 0, 0, 1461, 0, 181, 0, 0, 0, 870, 0,
+ 0, 0, 0, 0, 0, 502, 181, 0, 0, 0,
+ 0, 0, 0, 0, 0, 611, 458, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1219, 458, 458, 458,
+ 458, 458, 0, 0, 0, 0, 0, 0, 0, 1762,
+ 0, 0, 0, 458, 0, 0, 458, 458, 0, 0,
+ 458, 1772, 1321, 0, 502, 502, 0, 0, 0, 0,
+ 0, 0, 938, 938, 938, 0, 0, 0, 502, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 771, 0, 0, 0, 502, 0, 0, 0, 502,
+ 0, 0, 0, 0, 1218, 0, 0, 0, 1224, 1224,
+ 0, 1224, 0, 1224, 1224, 0, 1233, 1224, 1224, 1224,
+ 1224, 1224, 0, 458, 0, 0, 0, 0, 0, 1218,
+ 1218, 771, 0, 0, 0, 0, 0, 0, 1219, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1321, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1293, 0, 0, 0, 0, 0, 0, 0,
+ 458, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 458, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 611, 625, 625, 625, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 171, 0,
+ 0, 0, 0, 1511, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 113, 0, 135, 0, 0, 0, 0,
+ 458, 0, 0, 0, 155, 0, 0, 0, 0, 0,
+ 0, 0, 0, 1219, 0, 0, 0, 883, 0, 0,
+ 0, 0, 889, 0, 0, 891, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 145, 0, 0, 0, 458,
+ 134, 1413, 0, 625, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1218, 152, 0,
+ 153, 0, 0, 0, 0, 122, 123, 144, 143, 170,
+ 0, 0, 0, 0, 0, 1445, 1446, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 458, 0, 0, 458, 458, 458, 0, 0,
+ 1479, 0, 0, 0, 1219, 0, 0, 0, 0, 0,
+ 1087, 0, 0, 625, 458, 0, 0, 139, 120, 146,
+ 127, 119, 0, 140, 141, 0, 0, 0, 156, 0,
+ 0, 625, 0, 0, 625, 0, 458, 0, 161, 128,
+ 0, 0, 0, 0, 0, 771, 0, 0, 0, 0,
+ 0, 0, 0, 131, 129, 124, 125, 126, 130, 0,
+ 0, 0, 0, 121, 0, 0, 0, 0, 0, 0,
+ 0, 0, 132, 0, 0, 0, 0, 0, 0, 1093,
+ 0, 0, 1104, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 778, 0, 0, 0, 0, 0, 1219, 0, 1582, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 171, 771, 0, 0, 0,
+ 0, 0, 778, 0, 0, 0, 1195, 0, 0, 0,
+ 0, 0, 0, 0, 148, 0, 0, 0, 0, 0,
+ 113, 0, 135, 0, 0, 0, 0, 0, 0, 0,
+ 0, 155, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 771, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 1680, 145, 0, 588, 0, 0, 134, 142, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1461, 0,
+ 136, 0, 0, 137, 0, 152, 0, 153, 0, 0,
+ 0, 0, 1199, 1200, 144, 143, 170, 0, 182, 183,
+ 184, 1717, 0, 0, 1122, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 458,
+ 0, 0, 0, 0, 0, 0, 0, 1100, 0, 0,
+ 0, 458, 0, 0, 1744, 1745, 0, 0, 1100, 1100,
+ 1100, 1100, 1100, 0, 139, 1201, 146, 0, 1198, 0,
+ 140, 141, 1659, 0, 1511, 156, 0, 1100, 477, 0,
+ 0, 1100, 0, 0, 0, 161, 0, 476, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1255, 474, 0,
+ 0, 0, 0, 0, 149, 154, 151, 157, 158, 159,
+ 160, 162, 163, 164, 165, 0, 0, 0, 0, 0,
+ 166, 167, 168, 169, 0, 0, 0, 0, 1219, 0,
+ 0, 0, 1303, 0, 0, 0, 0, 471, 0, 0,
+ 0, 0, 1317, 0, 0, 0, 483, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1069, 1713, 0, 0, 0, 51, 71, 70, 0,
- 0, 60, 61, 49, 0, 1719, 0, 0, 0, 1150,
- 0, 1726, 0, 0, 1719, 0, 0, 0, 0, 593,
- 0, 1731, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1082, 0, 0, 53, 54, 0,
- 55, 56, 57, 58, 0, 0, 144, 149, 146, 152,
- 153, 154, 155, 157, 158, 159, 160, 0, 0, 0,
- 593, 0, 161, 162, 163, 164, 1670, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1095, 1098, 1099, 1100, 1101, 1102, 1103, 593, 1104, 1105,
- 1106, 1107, 1108, 1083, 1084, 1085, 1086, 1067, 1068, 1096,
- 0, 1070, 0, 1071, 1072, 1073, 1074, 1075, 1076, 1077,
- 1078, 1079, 1080, 1087, 1088, 1089, 1090, 1091, 1092, 1093,
- 1094, 0, 0, 1156, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 69, 0, 0, 0, 0,
- 0, 0, 0, 593, 0, 0, 1150, 0, 0, 1817,
- 1156, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1743, 0, 0,
- 0, 1097, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1757, 0, 0,
- 0, 1582, 0, 0, 557, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 736, 0, 0, 1150, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 1619, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1882, 1883, 1884, 0, 0,
- 0, 0, 0, 0, 0, 1037, 0, 0, 0, 1802,
- 0, 0, 1645, 1646, 0, 0, 1037, 1037, 1037, 1037,
- 1037, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1422, 0, 0, 1037, 0, 0, 0, 1037,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 1150, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 1861, 1862, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1719, 1956, 0,
- 0, 0, 0, 1872, 0, 0, 0, 0, 0, 0,
- 1719, 0, 0, 593, 0, 0, 0, 0, 1732, 0,
- 0, 0, 0, 0, 0, 1885, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 1985, 1985, 1985, 0,
- 0, 0, 0, 0, 0, 0, 893, 0, 0, 0,
- 2000, 0, 2002, 0, 0, 0, 0, 0, 1719, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1719, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1814, 0, 32, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 593, 593, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1037, 0,
- 0, 2071, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 1150, 0, 2083, 0, 0, 0, 0, 0,
- 0, 0, 1719, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 2017, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 2026, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 1906, 0, 0,
- 0, 0, 0, 0, 1912, 1913, 1914, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 1814, 0, 32, 0, 1814, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 32, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 1814, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 714, 701, 32, 2057, 652, 717, 623,
- 641, 726, 643, 646, 684, 604, 665, 321, 638, 0,
- 627, 600, 634, 601, 625, 654, 237, 658, 622, 703,
- 668, 716, 280, 0, 628, 334, 686, 370, 223, 289,
- 287, 396, 246, 240, 236, 222, 265, 294, 332, 387,
- 326, 723, 284, 675, 0, 379, 306, 0, 0, 0,
- 656, 706, 663, 697, 651, 685, 612, 674, 718, 639,
- 682, 719, 270, 221, 192, 318, 380, 249, 0, 0,
- 0, 174, 175, 176, 0, 2064, 2065, 0, 0, 0,
- 0, 0, 213, 0, 219, 679, 713, 636, 681, 233,
- 268, 239, 232, 394, 683, 729, 599, 676, 0, 602,
- 605, 725, 709, 631, 632, 0, 0, 0, 0, 0,
- 0, 0, 655, 664, 694, 649, 0, 0, 0, 0,
- 0, 0, 0, 0, 629, 0, 673, 0, 0, 0,
- 608, 603, 0, 0, 0, 0, 653, 0, 0, 0,
- 611, 0, 630, 695, 0, 597, 256, 606, 307, 699,
- 708, 650, 421, 712, 648, 647, 715, 690, 609, 705,
- 642, 279, 607, 276, 188, 202, 0, 640, 317, 355,
- 360, 704, 626, 635, 224, 633, 358, 330, 409, 209,
- 247, 352, 335, 356, 672, 688, 357, 285, 398, 347,
- 408, 422, 423, 231, 311, 415, 391, 419, 431, 203,
- 228, 324, 384, 412, 376, 304, 395, 275, 375, 254,
- 191, 283, 195, 386, 406, 214, 368, 0, 0, 0,
- 197, 404, 383, 301, 272, 273, 196, 0, 351, 235,
- 252, 226, 320, 401, 402, 225, 433, 204, 418, 199,
- 205, 417, 313, 397, 405, 302, 293, 198, 403, 300,
- 292, 278, 245, 261, 345, 288, 346, 262, 309, 308,
- 310, 0, 193, 0, 381, 413, 434, 211, 621, 700,
- 393, 427, 430, 0, 348, 212, 253, 244, 344, 251,
- 281, 426, 428, 429, 210, 342, 259, 312, 206, 264,
- 377, 277, 286, 692, 728, 329, 359, 215, 411, 378,
- 616, 620, 614, 615, 666, 667, 617, 720, 721, 722,
- 696, 610, 0, 618, 619, 0, 702, 710, 711, 671,
- 187, 200, 282, 724, 349, 250, 432, 416, 414, 598,
- 613, 230, 624, 0, 0, 637, 644, 645, 657, 659,
- 660, 661, 662, 670, 677, 678, 680, 687, 689, 691,
- 693, 698, 707, 727, 189, 190, 201, 208, 217, 229,
- 242, 248, 257, 260, 263, 266, 267, 269, 274, 291,
- 295, 296, 297, 298, 314, 315, 316, 319, 322, 323,
- 325, 327, 328, 331, 337, 338, 339, 340, 341, 343,
- 350, 354, 361, 362, 363, 364, 365, 366, 367, 371,
- 372, 373, 374, 382, 385, 399, 400, 410, 420, 424,
- 258, 407, 425, 0, 290, 669, 194, 220, 207, 227,
- 241, 243, 271, 299, 305, 333, 336, 255, 238, 218,
- 353, 216, 369, 388, 389, 390, 392, 303, 234, 714,
- 701, 0, 0, 652, 717, 623, 641, 726, 643, 646,
- 684, 604, 665, 321, 638, 0, 627, 600, 634, 601,
- 625, 654, 237, 658, 622, 703, 668, 716, 280, 0,
- 628, 334, 686, 370, 223, 289, 287, 396, 246, 240,
- 236, 222, 265, 294, 332, 387, 326, 723, 284, 675,
- 0, 379, 306, 0, 0, 0, 656, 706, 663, 697,
- 651, 685, 612, 674, 718, 639, 682, 719, 270, 221,
- 192, 318, 380, 249, 0, 0, 0, 174, 175, 176,
- 0, 0, 0, 0, 0, 0, 0, 0, 213, 0,
- 219, 679, 713, 636, 681, 233, 268, 239, 232, 394,
- 683, 729, 599, 676, 0, 602, 605, 725, 709, 631,
- 632, 0, 0, 0, 0, 0, 0, 0, 655, 664,
- 694, 649, 0, 0, 0, 0, 0, 0, 1806, 0,
- 629, 0, 673, 0, 0, 0, 608, 603, 0, 0,
- 0, 0, 653, 0, 0, 0, 611, 0, 630, 695,
- 0, 597, 256, 606, 307, 699, 708, 650, 421, 712,
- 648, 647, 715, 690, 609, 705, 642, 279, 607, 276,
- 188, 202, 0, 640, 317, 355, 360, 704, 626, 635,
- 224, 633, 358, 330, 409, 209, 247, 352, 335, 356,
- 672, 688, 357, 285, 398, 347, 408, 422, 423, 231,
- 311, 415, 391, 419, 431, 203, 228, 324, 384, 412,
- 376, 304, 395, 275, 375, 254, 191, 283, 195, 386,
- 406, 214, 368, 0, 0, 0, 197, 404, 383, 301,
- 272, 273, 196, 0, 351, 235, 252, 226, 320, 401,
- 402, 225, 433, 204, 418, 199, 205, 417, 313, 397,
- 405, 302, 293, 198, 403, 300, 292, 278, 245, 261,
- 345, 288, 346, 262, 309, 308, 310, 0, 193, 0,
- 381, 413, 434, 211, 621, 700, 393, 427, 430, 0,
- 348, 212, 253, 244, 344, 251, 281, 426, 428, 429,
- 210, 342, 259, 312, 206, 264, 377, 277, 286, 692,
- 728, 329, 359, 215, 411, 378, 616, 620, 614, 615,
- 666, 667, 617, 720, 721, 722, 696, 610, 0, 618,
- 619, 0, 702, 710, 711, 671, 187, 200, 282, 724,
- 349, 250, 432, 416, 414, 598, 613, 230, 624, 0,
- 0, 637, 644, 645, 657, 659, 660, 661, 662, 670,
- 677, 678, 680, 687, 689, 691, 693, 698, 707, 727,
- 189, 190, 201, 208, 217, 229, 242, 248, 257, 260,
- 263, 266, 267, 269, 274, 291, 295, 296, 297, 298,
- 314, 315, 316, 319, 322, 323, 325, 327, 328, 331,
- 337, 338, 339, 340, 341, 343, 350, 354, 361, 362,
- 363, 364, 365, 366, 367, 371, 372, 373, 374, 382,
- 385, 399, 400, 410, 420, 424, 258, 407, 425, 0,
- 290, 669, 194, 220, 207, 227, 241, 243, 271, 299,
- 305, 333, 336, 255, 238, 218, 353, 216, 369, 388,
- 389, 390, 392, 303, 234, 714, 701, 0, 0, 652,
- 717, 623, 641, 726, 643, 646, 684, 604, 665, 321,
- 638, 0, 627, 600, 634, 601, 625, 654, 237, 658,
- 622, 703, 668, 716, 280, 0, 628, 334, 686, 370,
- 223, 289, 287, 396, 246, 240, 236, 222, 265, 294,
- 332, 387, 326, 723, 284, 675, 0, 379, 306, 0,
- 0, 0, 656, 706, 663, 697, 651, 685, 612, 674,
- 718, 639, 682, 719, 270, 221, 192, 318, 380, 249,
- 67, 0, 0, 174, 175, 176, 0, 0, 0, 0,
- 0, 0, 0, 0, 213, 0, 219, 679, 713, 636,
- 681, 233, 268, 239, 232, 394, 683, 729, 599, 676,
- 0, 602, 605, 725, 709, 631, 632, 0, 0, 0,
- 0, 0, 0, 0, 655, 664, 694, 649, 0, 0,
- 0, 0, 0, 0, 0, 0, 629, 0, 673, 0,
- 0, 0, 608, 603, 0, 0, 0, 0, 653, 0,
- 0, 0, 611, 0, 630, 695, 0, 597, 256, 606,
- 307, 699, 708, 650, 421, 712, 648, 647, 715, 690,
- 609, 705, 642, 279, 607, 276, 188, 202, 0, 640,
- 317, 355, 360, 704, 626, 635, 224, 633, 358, 330,
- 409, 209, 247, 352, 335, 356, 672, 688, 357, 285,
- 398, 347, 408, 422, 423, 231, 311, 415, 391, 419,
- 431, 203, 228, 324, 384, 412, 376, 304, 395, 275,
- 375, 254, 191, 283, 195, 386, 406, 214, 368, 0,
- 0, 0, 197, 404, 383, 301, 272, 273, 196, 0,
- 351, 235, 252, 226, 320, 401, 402, 225, 433, 204,
- 418, 199, 205, 417, 313, 397, 405, 302, 293, 198,
- 403, 300, 292, 278, 245, 261, 345, 288, 346, 262,
- 309, 308, 310, 0, 193, 0, 381, 413, 434, 211,
- 621, 700, 393, 427, 430, 0, 348, 212, 253, 244,
- 344, 251, 281, 426, 428, 429, 210, 342, 259, 312,
- 206, 264, 377, 277, 286, 692, 728, 329, 359, 215,
- 411, 378, 616, 620, 614, 615, 666, 667, 617, 720,
- 721, 722, 696, 610, 0, 618, 619, 0, 702, 710,
- 711, 671, 187, 200, 282, 724, 349, 250, 432, 416,
- 414, 598, 613, 230, 624, 0, 0, 637, 644, 645,
- 657, 659, 660, 661, 662, 670, 677, 678, 680, 687,
- 689, 691, 693, 698, 707, 727, 189, 190, 201, 208,
- 217, 229, 242, 248, 257, 260, 263, 266, 267, 269,
- 274, 291, 295, 296, 297, 298, 314, 315, 316, 319,
- 322, 323, 325, 327, 328, 331, 337, 338, 339, 340,
- 341, 343, 350, 354, 361, 362, 363, 364, 365, 366,
- 367, 371, 372, 373, 374, 382, 385, 399, 400, 410,
- 420, 424, 258, 407, 425, 0, 290, 669, 194, 220,
- 207, 227, 241, 243, 271, 299, 305, 333, 336, 255,
- 238, 218, 353, 216, 369, 388, 389, 390, 392, 303,
- 234, 714, 701, 0, 0, 652, 717, 623, 641, 726,
- 643, 646, 684, 604, 665, 321, 638, 0, 627, 600,
- 634, 601, 625, 654, 237, 658, 622, 703, 668, 716,
- 280, 0, 628, 334, 686, 370, 223, 289, 287, 396,
- 246, 240, 236, 222, 265, 294, 332, 387, 326, 723,
- 284, 675, 0, 379, 306, 0, 0, 0, 656, 706,
- 663, 697, 651, 685, 612, 674, 718, 639, 682, 719,
- 270, 221, 192, 318, 380, 249, 0, 0, 0, 174,
- 175, 176, 0, 0, 0, 0, 0, 0, 0, 0,
- 213, 0, 219, 679, 713, 636, 681, 233, 268, 239,
- 232, 394, 683, 729, 599, 676, 0, 602, 605, 725,
- 709, 631, 632, 0, 0, 0, 0, 0, 0, 0,
- 655, 664, 694, 649, 0, 0, 0, 0, 0, 0,
- 1674, 0, 629, 0, 673, 0, 0, 0, 608, 603,
- 0, 0, 0, 0, 653, 0, 0, 0, 611, 0,
- 630, 695, 0, 597, 256, 606, 307, 699, 708, 650,
- 421, 712, 648, 647, 715, 690, 609, 705, 642, 279,
- 607, 276, 188, 202, 0, 640, 317, 355, 360, 704,
- 626, 635, 224, 633, 358, 330, 409, 209, 247, 352,
- 335, 356, 672, 688, 357, 285, 398, 347, 408, 422,
- 423, 231, 311, 415, 391, 419, 431, 203, 228, 324,
- 384, 412, 376, 304, 395, 275, 375, 254, 191, 283,
- 195, 386, 406, 214, 368, 0, 0, 0, 197, 404,
- 383, 301, 272, 273, 196, 0, 351, 235, 252, 226,
- 320, 401, 402, 225, 433, 204, 418, 199, 205, 417,
- 313, 397, 405, 302, 293, 198, 403, 300, 292, 278,
- 245, 261, 345, 288, 346, 262, 309, 308, 310, 0,
- 193, 0, 381, 413, 434, 211, 621, 700, 393, 427,
- 430, 0, 348, 212, 253, 244, 344, 251, 281, 426,
- 428, 429, 210, 342, 259, 312, 206, 264, 377, 277,
- 286, 692, 728, 329, 359, 215, 411, 378, 616, 620,
- 614, 615, 666, 667, 617, 720, 721, 722, 696, 610,
- 0, 618, 619, 0, 702, 710, 711, 671, 187, 200,
- 282, 724, 349, 250, 432, 416, 414, 598, 613, 230,
- 624, 0, 0, 637, 644, 645, 657, 659, 660, 661,
- 662, 670, 677, 678, 680, 687, 689, 691, 693, 698,
- 707, 727, 189, 190, 201, 208, 217, 229, 242, 248,
- 257, 260, 263, 266, 267, 269, 274, 291, 295, 296,
- 297, 298, 314, 315, 316, 319, 322, 323, 325, 327,
- 328, 331, 337, 338, 339, 340, 341, 343, 350, 354,
- 361, 362, 363, 364, 365, 366, 367, 371, 372, 373,
- 374, 382, 385, 399, 400, 410, 420, 424, 258, 407,
- 425, 0, 290, 669, 194, 220, 207, 227, 241, 243,
- 271, 299, 305, 333, 336, 255, 238, 218, 353, 216,
- 369, 388, 389, 390, 392, 303, 234, 714, 701, 0,
- 0, 652, 717, 623, 641, 726, 643, 646, 684, 604,
- 665, 321, 638, 0, 627, 600, 634, 601, 625, 654,
- 237, 658, 622, 703, 668, 716, 280, 0, 628, 334,
- 686, 370, 223, 289, 287, 396, 246, 240, 236, 222,
- 265, 294, 332, 387, 326, 723, 284, 675, 0, 379,
- 306, 0, 0, 0, 656, 706, 663, 697, 651, 685,
- 612, 674, 718, 639, 682, 719, 270, 221, 192, 318,
- 380, 249, 0, 0, 0, 174, 175, 176, 0, 0,
- 0, 0, 0, 0, 0, 0, 213, 0, 219, 679,
- 713, 636, 681, 233, 268, 239, 232, 394, 683, 729,
- 599, 676, 0, 602, 605, 725, 709, 631, 632, 0,
- 0, 0, 0, 0, 0, 0, 655, 664, 694, 649,
- 0, 0, 0, 0, 0, 0, 1399, 0, 629, 0,
- 673, 0, 0, 0, 608, 603, 0, 0, 0, 0,
- 653, 0, 0, 0, 611, 0, 630, 695, 0, 597,
- 256, 606, 307, 699, 708, 650, 421, 712, 648, 647,
- 715, 690, 609, 705, 642, 279, 607, 276, 188, 202,
- 0, 640, 317, 355, 360, 704, 626, 635, 224, 633,
- 358, 330, 409, 209, 247, 352, 335, 356, 672, 688,
- 357, 285, 398, 347, 408, 422, 423, 231, 311, 415,
- 391, 419, 431, 203, 228, 324, 384, 412, 376, 304,
- 395, 275, 375, 254, 191, 283, 195, 386, 406, 214,
- 368, 0, 0, 0, 197, 404, 383, 301, 272, 273,
- 196, 0, 351, 235, 252, 226, 320, 401, 402, 225,
- 433, 204, 418, 199, 205, 417, 313, 397, 405, 302,
- 293, 198, 403, 300, 292, 278, 245, 261, 345, 288,
- 346, 262, 309, 308, 310, 0, 193, 0, 381, 413,
- 434, 211, 621, 700, 393, 427, 430, 0, 348, 212,
- 253, 244, 344, 251, 281, 426, 428, 429, 210, 342,
- 259, 312, 206, 264, 377, 277, 286, 692, 728, 329,
- 359, 215, 411, 378, 616, 620, 614, 615, 666, 667,
- 617, 720, 721, 722, 696, 610, 0, 618, 619, 0,
- 702, 710, 711, 671, 187, 200, 282, 724, 349, 250,
- 432, 416, 414, 598, 613, 230, 624, 0, 0, 637,
- 644, 645, 657, 659, 660, 661, 662, 670, 677, 678,
- 680, 687, 689, 691, 693, 698, 707, 727, 189, 190,
- 201, 208, 217, 229, 242, 248, 257, 260, 263, 266,
- 267, 269, 274, 291, 295, 296, 297, 298, 314, 315,
- 316, 319, 322, 323, 325, 327, 328, 331, 337, 338,
- 339, 340, 341, 343, 350, 354, 361, 362, 363, 364,
- 365, 366, 367, 371, 372, 373, 374, 382, 385, 399,
- 400, 410, 420, 424, 258, 407, 425, 0, 290, 669,
- 194, 220, 207, 227, 241, 243, 271, 299, 305, 333,
- 336, 255, 238, 218, 353, 216, 369, 388, 389, 390,
- 392, 303, 234, 714, 701, 0, 0, 652, 717, 623,
- 641, 726, 643, 646, 684, 604, 665, 321, 638, 0,
- 627, 600, 634, 601, 625, 654, 237, 658, 622, 703,
- 668, 716, 280, 0, 628, 334, 686, 370, 223, 289,
- 287, 396, 246, 240, 236, 222, 265, 294, 332, 387,
- 326, 723, 284, 675, 0, 379, 306, 0, 0, 0,
- 656, 706, 663, 697, 651, 685, 612, 674, 718, 639,
- 682, 719, 270, 221, 192, 318, 380, 249, 0, 0,
- 0, 174, 175, 176, 0, 0, 0, 0, 0, 0,
- 0, 0, 213, 0, 219, 679, 713, 636, 681, 233,
- 268, 239, 232, 394, 683, 729, 599, 676, 0, 602,
- 605, 725, 709, 631, 632, 0, 0, 0, 0, 0,
- 0, 0, 655, 664, 694, 649, 0, 0, 0, 0,
- 0, 0, 0, 0, 629, 0, 673, 0, 0, 0,
- 608, 603, 0, 0, 0, 0, 653, 0, 0, 0,
- 611, 0, 630, 695, 0, 597, 256, 606, 307, 699,
- 708, 650, 421, 712, 648, 647, 715, 690, 609, 705,
- 642, 279, 607, 276, 188, 202, 0, 640, 317, 355,
- 360, 704, 626, 635, 224, 633, 358, 330, 409, 209,
- 247, 352, 335, 356, 672, 688, 357, 285, 398, 347,
- 408, 422, 423, 231, 311, 415, 391, 419, 431, 203,
- 228, 324, 384, 412, 376, 304, 395, 275, 375, 254,
- 191, 283, 195, 386, 406, 214, 368, 0, 0, 0,
- 197, 404, 383, 301, 272, 273, 196, 0, 351, 235,
- 252, 226, 320, 401, 402, 225, 433, 204, 418, 199,
- 205, 417, 313, 397, 405, 302, 293, 198, 403, 300,
- 292, 278, 245, 261, 345, 288, 346, 262, 309, 308,
- 310, 0, 193, 0, 381, 413, 434, 211, 621, 700,
- 393, 427, 430, 0, 348, 212, 253, 244, 344, 251,
- 281, 426, 428, 429, 210, 342, 259, 312, 206, 264,
- 377, 277, 286, 692, 728, 329, 359, 215, 411, 378,
- 616, 620, 614, 615, 666, 667, 617, 720, 721, 722,
- 696, 610, 0, 618, 619, 0, 702, 710, 711, 671,
- 187, 200, 282, 724, 349, 250, 432, 416, 414, 598,
- 613, 230, 624, 0, 0, 637, 644, 645, 657, 659,
- 660, 661, 662, 670, 677, 678, 680, 687, 689, 691,
- 693, 698, 707, 727, 189, 190, 201, 208, 217, 229,
- 242, 248, 257, 260, 263, 266, 267, 269, 274, 291,
- 295, 296, 297, 298, 314, 315, 316, 319, 322, 323,
- 325, 327, 328, 331, 337, 338, 339, 340, 341, 343,
- 350, 354, 361, 362, 363, 364, 365, 366, 367, 371,
- 372, 373, 374, 382, 385, 399, 400, 410, 420, 424,
- 258, 407, 425, 0, 290, 669, 194, 220, 207, 227,
- 241, 243, 271, 299, 305, 333, 336, 255, 238, 218,
- 353, 216, 369, 388, 389, 390, 392, 303, 234, 714,
- 701, 0, 0, 652, 717, 623, 641, 726, 643, 646,
- 684, 604, 665, 321, 638, 0, 627, 600, 634, 601,
- 625, 654, 237, 658, 622, 703, 668, 716, 280, 0,
- 628, 334, 686, 370, 223, 289, 287, 396, 246, 240,
- 236, 222, 265, 294, 332, 387, 326, 723, 284, 675,
- 0, 379, 306, 0, 0, 0, 656, 706, 663, 697,
- 651, 685, 612, 674, 718, 639, 682, 719, 270, 221,
- 192, 318, 380, 249, 0, 0, 0, 174, 175, 176,
- 0, 0, 0, 0, 0, 0, 0, 0, 213, 0,
- 219, 679, 713, 636, 681, 233, 268, 239, 232, 394,
- 683, 729, 599, 676, 0, 602, 605, 725, 709, 631,
- 632, 0, 0, 0, 0, 0, 0, 0, 655, 664,
- 694, 649, 0, 0, 0, 0, 0, 0, 0, 0,
- 629, 0, 673, 0, 0, 0, 608, 603, 0, 0,
- 0, 0, 653, 0, 0, 0, 611, 0, 630, 695,
- 0, 597, 256, 606, 307, 699, 708, 650, 421, 712,
- 648, 647, 715, 690, 609, 705, 642, 279, 607, 276,
- 188, 202, 0, 640, 317, 355, 360, 704, 626, 635,
- 224, 633, 358, 330, 409, 209, 247, 352, 335, 356,
- 672, 688, 357, 285, 398, 347, 408, 422, 423, 231,
- 311, 415, 391, 419, 431, 203, 228, 324, 384, 412,
- 376, 304, 395, 275, 375, 254, 191, 283, 195, 386,
- 406, 214, 368, 0, 0, 0, 197, 404, 383, 301,
- 272, 273, 196, 0, 351, 235, 252, 226, 320, 401,
- 402, 225, 433, 204, 418, 199, 731, 417, 313, 397,
- 405, 302, 293, 198, 403, 300, 292, 278, 245, 261,
- 345, 288, 346, 262, 309, 308, 310, 0, 193, 0,
- 381, 413, 434, 211, 621, 700, 393, 427, 430, 0,
- 348, 212, 253, 244, 344, 251, 281, 426, 428, 429,
- 210, 342, 259, 596, 730, 590, 589, 277, 286, 692,
- 728, 329, 359, 215, 411, 378, 616, 620, 614, 615,
- 666, 667, 617, 720, 721, 722, 696, 610, 0, 618,
- 619, 0, 702, 710, 711, 671, 187, 200, 282, 724,
- 349, 250, 432, 416, 414, 598, 613, 230, 624, 0,
- 0, 637, 644, 645, 657, 659, 660, 661, 662, 670,
- 677, 678, 680, 687, 689, 691, 693, 698, 707, 727,
- 189, 190, 201, 208, 217, 229, 242, 248, 257, 260,
- 263, 266, 267, 269, 274, 291, 295, 296, 297, 298,
- 314, 315, 316, 319, 322, 323, 325, 327, 328, 331,
- 337, 338, 339, 340, 341, 343, 350, 354, 361, 362,
- 363, 364, 365, 366, 367, 371, 372, 373, 374, 382,
- 385, 399, 400, 410, 420, 424, 258, 407, 425, 0,
- 290, 669, 194, 220, 207, 227, 241, 243, 271, 299,
- 305, 333, 336, 255, 238, 218, 353, 216, 369, 388,
- 389, 390, 392, 303, 234, 714, 701, 0, 0, 652,
- 717, 623, 641, 726, 643, 646, 684, 604, 665, 321,
- 638, 0, 627, 600, 634, 601, 625, 654, 237, 658,
- 622, 703, 668, 716, 280, 0, 628, 334, 686, 370,
- 223, 289, 287, 396, 246, 240, 236, 222, 265, 294,
- 332, 387, 326, 723, 284, 675, 0, 379, 306, 0,
- 0, 0, 656, 706, 663, 697, 651, 685, 612, 674,
- 718, 639, 682, 719, 270, 221, 192, 318, 380, 249,
- 0, 0, 0, 174, 175, 176, 0, 0, 0, 0,
- 0, 0, 0, 0, 213, 0, 219, 679, 713, 636,
- 681, 233, 268, 239, 232, 394, 683, 729, 599, 676,
- 0, 602, 605, 725, 709, 631, 632, 0, 0, 0,
- 0, 0, 0, 0, 655, 664, 694, 649, 0, 0,
- 0, 0, 0, 0, 0, 0, 629, 0, 673, 0,
- 0, 0, 608, 603, 0, 0, 0, 0, 653, 0,
- 0, 0, 611, 0, 630, 695, 0, 597, 256, 606,
- 307, 699, 708, 650, 421, 712, 648, 647, 715, 690,
- 609, 705, 642, 279, 607, 276, 188, 202, 0, 640,
- 317, 355, 360, 704, 626, 635, 224, 633, 358, 330,
- 409, 209, 247, 352, 335, 356, 672, 688, 357, 285,
- 398, 347, 408, 422, 423, 231, 311, 415, 391, 419,
- 431, 203, 228, 324, 384, 412, 376, 304, 395, 275,
- 375, 254, 191, 283, 195, 386, 1045, 214, 368, 0,
- 0, 0, 197, 404, 383, 301, 272, 273, 196, 0,
- 351, 235, 252, 226, 320, 401, 402, 225, 433, 204,
- 418, 199, 731, 417, 313, 397, 405, 302, 293, 198,
- 403, 300, 292, 278, 245, 261, 345, 288, 346, 262,
- 309, 308, 310, 0, 193, 0, 381, 413, 434, 211,
- 621, 700, 393, 427, 430, 0, 348, 212, 253, 244,
- 344, 251, 281, 426, 428, 429, 210, 342, 259, 596,
- 730, 590, 589, 277, 286, 692, 728, 329, 359, 215,
- 411, 378, 616, 620, 614, 615, 666, 667, 617, 720,
- 721, 722, 696, 610, 0, 618, 619, 0, 702, 710,
- 711, 671, 187, 200, 282, 724, 349, 250, 432, 416,
- 414, 598, 613, 230, 624, 0, 0, 637, 644, 645,
- 657, 659, 660, 661, 662, 670, 677, 678, 680, 687,
- 689, 691, 693, 698, 707, 727, 189, 190, 201, 208,
- 217, 229, 242, 248, 257, 260, 263, 266, 267, 269,
- 274, 291, 295, 296, 297, 298, 314, 315, 316, 319,
- 322, 323, 325, 327, 328, 331, 337, 338, 339, 340,
- 341, 343, 350, 354, 361, 362, 363, 364, 365, 366,
- 367, 371, 372, 373, 374, 382, 385, 399, 400, 410,
- 420, 424, 258, 407, 425, 0, 290, 669, 194, 220,
- 207, 227, 241, 243, 271, 299, 305, 333, 336, 255,
- 238, 218, 353, 216, 369, 388, 389, 390, 392, 303,
- 234, 714, 701, 0, 0, 652, 717, 623, 641, 726,
- 643, 646, 684, 604, 665, 321, 638, 0, 627, 600,
- 634, 601, 625, 654, 237, 658, 622, 703, 668, 716,
- 280, 0, 628, 334, 686, 370, 223, 289, 287, 396,
- 246, 240, 236, 222, 265, 294, 332, 387, 326, 723,
- 284, 675, 0, 379, 306, 0, 0, 0, 656, 706,
- 663, 697, 651, 685, 612, 674, 718, 639, 682, 719,
- 270, 221, 192, 318, 380, 249, 0, 0, 0, 174,
- 175, 176, 0, 0, 0, 0, 0, 0, 0, 0,
- 213, 0, 219, 679, 713, 636, 681, 233, 268, 239,
- 232, 394, 683, 729, 599, 676, 0, 602, 605, 725,
- 709, 631, 632, 0, 0, 0, 0, 0, 0, 0,
- 655, 664, 694, 649, 0, 0, 0, 0, 0, 0,
- 0, 0, 629, 0, 673, 0, 0, 0, 608, 603,
- 0, 0, 0, 0, 653, 0, 0, 0, 611, 0,
- 630, 695, 0, 597, 256, 606, 307, 699, 708, 650,
- 421, 712, 648, 647, 715, 690, 609, 705, 642, 279,
- 607, 276, 188, 202, 0, 640, 317, 355, 360, 704,
- 626, 635, 224, 633, 358, 330, 409, 209, 247, 352,
- 335, 356, 672, 688, 357, 285, 398, 347, 408, 422,
- 423, 231, 311, 415, 391, 419, 431, 203, 228, 324,
- 384, 412, 376, 304, 395, 275, 375, 254, 191, 283,
- 195, 386, 587, 214, 368, 0, 0, 0, 197, 404,
- 383, 301, 272, 273, 196, 0, 351, 235, 252, 226,
- 320, 401, 402, 225, 433, 204, 418, 199, 731, 417,
- 313, 397, 405, 302, 293, 198, 403, 300, 292, 278,
- 245, 261, 345, 288, 346, 262, 309, 308, 310, 0,
- 193, 0, 381, 413, 434, 211, 621, 700, 393, 427,
- 430, 0, 348, 212, 253, 244, 344, 251, 281, 426,
- 428, 429, 210, 342, 259, 596, 730, 590, 589, 277,
- 286, 692, 728, 329, 359, 215, 411, 378, 616, 620,
- 614, 615, 666, 667, 617, 720, 721, 722, 696, 610,
- 0, 618, 619, 0, 702, 710, 711, 671, 187, 200,
- 282, 724, 349, 250, 432, 416, 414, 598, 613, 230,
- 624, 0, 0, 637, 644, 645, 657, 659, 660, 661,
- 662, 670, 677, 678, 680, 687, 689, 691, 693, 698,
- 707, 727, 189, 190, 201, 208, 217, 229, 242, 248,
- 257, 260, 263, 266, 267, 269, 274, 291, 295, 296,
- 297, 298, 314, 315, 316, 319, 322, 323, 325, 327,
- 328, 331, 337, 338, 339, 340, 341, 343, 350, 354,
- 361, 362, 363, 364, 365, 366, 367, 371, 372, 373,
- 374, 382, 385, 399, 400, 410, 420, 424, 258, 407,
- 425, 0, 290, 669, 194, 220, 207, 227, 241, 243,
- 271, 299, 305, 333, 336, 255, 238, 218, 353, 216,
- 369, 388, 389, 390, 392, 303, 234, 321, 0, 0,
- 1328, 0, 490, 0, 0, 0, 237, 0, 489, 0,
- 0, 0, 280, 0, 1329, 334, 0, 370, 223, 289,
- 287, 396, 246, 240, 236, 222, 265, 294, 332, 387,
- 326, 533, 284, 0, 0, 379, 306, 0, 0, 0,
- 0, 0, 524, 525, 0, 0, 0, 0, 0, 0,
- 0, 0, 270, 221, 192, 318, 380, 249, 67, 0,
- 0, 174, 175, 176, 511, 510, 513, 514, 515, 516,
- 0, 0, 213, 512, 219, 517, 518, 519, 0, 233,
- 268, 239, 232, 394, 0, 0, 0, 487, 504, 0,
- 532, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 501, 502, 577, 0, 0, 0, 548, 0, 503, 0,
- 0, 496, 497, 499, 498, 500, 505, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 256, 0, 307, 547,
- 0, 0, 421, 0, 0, 545, 0, 0, 0, 0,
- 0, 279, 0, 276, 188, 202, 0, 0, 317, 355,
- 360, 0, 0, 0, 224, 0, 358, 330, 409, 209,
- 247, 352, 335, 356, 0, 0, 357, 285, 398, 347,
- 408, 422, 423, 231, 311, 415, 391, 419, 431, 203,
- 228, 324, 384, 412, 376, 304, 395, 275, 375, 254,
- 191, 283, 195, 386, 406, 214, 368, 0, 0, 0,
- 197, 404, 383, 301, 272, 273, 196, 0, 351, 235,
- 252, 226, 320, 401, 402, 225, 433, 204, 418, 199,
- 205, 417, 313, 397, 405, 302, 293, 198, 403, 300,
- 292, 278, 245, 261, 345, 288, 346, 262, 309, 308,
- 310, 0, 193, 0, 381, 413, 434, 211, 0, 0,
- 393, 427, 430, 0, 348, 212, 253, 244, 344, 251,
- 281, 426, 428, 429, 210, 342, 259, 312, 206, 264,
- 377, 277, 286, 0, 0, 329, 359, 215, 411, 378,
- 535, 546, 541, 542, 539, 540, 534, 538, 537, 536,
- 549, 526, 527, 528, 529, 531, 0, 543, 544, 530,
- 187, 200, 282, 0, 349, 250, 432, 416, 414, 0,
- 0, 230, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1331, 0, 0, 0, 0, 0, 0, 1335,
+ 0, 0, 1841, 0, 0, 0, 0, 0, 1344, 1345,
+ 1346, 1347, 1348, 1349, 1350, 0, 0, 0, 0, 0,
+ 0, 148, 0, 489, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1218, 0,
+ 0, 0, 1104, 0, 0, 0, 0, 0, 0, 0,
+ 461, 463, 464, 0, 480, 482, 490, 0, 0, 0,
+ 478, 479, 491, 465, 466, 495, 494, 481, 0, 470,
+ 467, 469, 475, 0, 0, 142, 488, 473, 492, 0,
+ 0, 0, 0, 0, 0, 0, 0, 136, 0, 0,
+ 137, 0, 0, 0, 0, 0, 0, 0, 1144, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 189, 190, 201, 208, 217, 229,
- 242, 248, 257, 260, 263, 266, 267, 269, 274, 291,
- 295, 296, 297, 298, 314, 315, 316, 319, 322, 323,
- 325, 327, 328, 331, 337, 338, 339, 340, 341, 343,
- 350, 354, 361, 362, 363, 364, 365, 366, 367, 371,
- 372, 373, 374, 382, 385, 399, 400, 410, 420, 424,
- 258, 407, 425, 0, 290, 0, 194, 220, 207, 227,
- 241, 243, 271, 299, 305, 333, 336, 255, 238, 218,
- 353, 216, 369, 388, 389, 390, 392, 303, 234, 321,
- 0, 0, 0, 0, 490, 0, 0, 0, 237, 0,
- 489, 0, 0, 0, 280, 0, 0, 334, 0, 370,
- 223, 289, 287, 396, 246, 240, 236, 222, 265, 294,
- 332, 387, 326, 533, 284, 0, 0, 379, 306, 0,
- 0, 0, 0, 0, 524, 525, 0, 0, 0, 0,
- 0, 0, 1438, 0, 270, 221, 192, 318, 380, 249,
- 67, 0, 0, 174, 175, 176, 511, 510, 513, 514,
- 515, 516, 0, 0, 213, 512, 219, 517, 518, 519,
- 1439, 233, 268, 239, 232, 394, 0, 0, 0, 487,
- 504, 0, 532, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 501, 502, 0, 0, 0, 0, 548, 0,
- 503, 0, 0, 496, 497, 499, 498, 500, 505, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 256, 0,
- 307, 547, 0, 0, 421, 0, 0, 545, 0, 0,
- 0, 0, 0, 279, 0, 276, 188, 202, 0, 0,
- 317, 355, 360, 0, 0, 0, 224, 0, 358, 330,
- 409, 209, 247, 352, 335, 356, 0, 0, 357, 285,
- 398, 347, 408, 422, 423, 231, 311, 415, 391, 419,
- 431, 203, 228, 324, 384, 412, 376, 304, 395, 275,
- 375, 254, 191, 283, 195, 386, 406, 214, 368, 0,
- 0, 0, 197, 404, 383, 301, 272, 273, 196, 0,
- 351, 235, 252, 226, 320, 401, 402, 225, 433, 204,
- 418, 199, 205, 417, 313, 397, 405, 302, 293, 198,
- 403, 300, 292, 278, 245, 261, 345, 288, 346, 262,
- 309, 308, 310, 0, 193, 0, 381, 413, 434, 211,
- 0, 0, 393, 427, 430, 0, 348, 212, 253, 244,
- 344, 251, 281, 426, 428, 429, 210, 342, 259, 312,
- 206, 264, 377, 277, 286, 0, 0, 329, 359, 215,
- 411, 378, 535, 546, 541, 542, 539, 540, 534, 538,
- 537, 536, 549, 526, 527, 528, 529, 531, 0, 543,
- 544, 530, 187, 200, 282, 0, 349, 250, 432, 416,
- 414, 0, 0, 230, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 189, 190, 201, 208,
- 217, 229, 242, 248, 257, 260, 263, 266, 267, 269,
- 274, 291, 295, 296, 297, 298, 314, 315, 316, 319,
- 322, 323, 325, 327, 328, 331, 337, 338, 339, 340,
- 341, 343, 350, 354, 361, 362, 363, 364, 365, 366,
- 367, 371, 372, 373, 374, 382, 385, 399, 400, 410,
- 420, 424, 258, 407, 425, 0, 290, 0, 194, 220,
- 207, 227, 241, 243, 271, 299, 305, 333, 336, 255,
- 238, 218, 353, 216, 369, 388, 389, 390, 392, 303,
- 234, 321, 0, 0, 0, 0, 490, 0, 0, 0,
- 237, 0, 489, 0, 0, 0, 280, 0, 0, 334,
- 0, 370, 223, 289, 287, 396, 246, 240, 236, 222,
- 265, 294, 332, 387, 326, 533, 284, 0, 0, 379,
- 306, 0, 0, 0, 0, 0, 524, 525, 0, 0,
- 0, 0, 0, 0, 0, 0, 270, 221, 192, 318,
- 380, 249, 67, 0, 565, 174, 175, 176, 511, 510,
- 513, 514, 515, 516, 0, 0, 213, 512, 219, 517,
- 518, 519, 0, 233, 268, 239, 232, 394, 0, 0,
- 0, 487, 504, 0, 532, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 501, 502, 0, 0, 0, 0,
- 548, 0, 503, 0, 0, 496, 497, 499, 498, 500,
- 505, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 256, 0, 307, 547, 0, 0, 421, 0, 0, 545,
- 0, 0, 0, 0, 0, 279, 0, 276, 188, 202,
- 0, 0, 317, 355, 360, 0, 0, 0, 224, 0,
- 358, 330, 409, 209, 247, 352, 335, 356, 0, 0,
- 357, 285, 398, 347, 408, 422, 423, 231, 311, 415,
- 391, 419, 431, 203, 228, 324, 384, 412, 376, 304,
- 395, 275, 375, 254, 191, 283, 195, 386, 406, 214,
- 368, 0, 0, 0, 197, 404, 383, 301, 272, 273,
- 196, 0, 351, 235, 252, 226, 320, 401, 402, 225,
- 433, 204, 418, 199, 205, 417, 313, 397, 405, 302,
- 293, 198, 403, 300, 292, 278, 245, 261, 345, 288,
- 346, 262, 309, 308, 310, 0, 193, 0, 381, 413,
- 434, 211, 0, 0, 393, 427, 430, 0, 348, 212,
- 253, 244, 344, 251, 281, 426, 428, 429, 210, 342,
- 259, 312, 206, 264, 377, 277, 286, 0, 0, 329,
- 359, 215, 411, 378, 535, 546, 541, 542, 539, 540,
- 534, 538, 537, 536, 549, 526, 527, 528, 529, 531,
- 0, 543, 544, 530, 187, 200, 282, 0, 349, 250,
- 432, 416, 414, 0, 0, 230, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 189, 190,
- 201, 208, 217, 229, 242, 248, 257, 260, 263, 266,
- 267, 269, 274, 291, 295, 296, 297, 298, 314, 315,
- 316, 319, 322, 323, 325, 327, 328, 331, 337, 338,
- 339, 340, 341, 343, 350, 354, 361, 362, 363, 364,
- 365, 366, 367, 371, 372, 373, 374, 382, 385, 399,
- 400, 410, 420, 424, 258, 407, 425, 0, 290, 0,
- 194, 220, 207, 227, 241, 243, 271, 299, 305, 333,
- 336, 255, 238, 218, 353, 216, 369, 388, 389, 390,
- 392, 303, 234, 321, 0, 0, 0, 0, 490, 0,
- 0, 0, 237, 0, 489, 0, 0, 0, 280, 0,
- 0, 334, 0, 370, 223, 289, 287, 396, 246, 240,
- 236, 222, 265, 294, 332, 387, 326, 533, 284, 0,
- 0, 379, 306, 0, 0, 0, 0, 0, 524, 525,
- 0, 0, 0, 0, 0, 0, 0, 0, 270, 221,
- 192, 318, 380, 249, 67, 0, 0, 174, 175, 176,
- 511, 510, 513, 514, 515, 516, 0, 0, 213, 512,
- 219, 517, 518, 519, 0, 233, 268, 239, 232, 394,
- 0, 0, 0, 487, 504, 0, 532, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 501, 502, 577, 0,
- 0, 0, 548, 0, 503, 0, 0, 496, 497, 499,
- 498, 500, 505, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 256, 0, 307, 547, 0, 0, 421, 0,
- 0, 545, 0, 0, 0, 0, 0, 279, 0, 276,
- 188, 202, 0, 0, 317, 355, 360, 0, 0, 0,
- 224, 0, 358, 330, 409, 209, 247, 352, 335, 356,
- 0, 0, 357, 285, 398, 347, 408, 422, 423, 231,
- 311, 415, 391, 419, 431, 203, 228, 324, 384, 412,
- 376, 304, 395, 275, 375, 254, 191, 283, 195, 386,
- 406, 214, 368, 0, 0, 0, 197, 404, 383, 301,
- 272, 273, 196, 0, 351, 235, 252, 226, 320, 401,
- 402, 225, 433, 204, 418, 199, 205, 417, 313, 397,
- 405, 302, 293, 198, 403, 300, 292, 278, 245, 261,
- 345, 288, 346, 262, 309, 308, 310, 0, 193, 0,
- 381, 413, 434, 211, 0, 0, 393, 427, 430, 0,
- 348, 212, 253, 244, 344, 251, 281, 426, 428, 429,
- 210, 342, 259, 312, 206, 264, 377, 277, 286, 0,
- 0, 329, 359, 215, 411, 378, 535, 546, 541, 542,
- 539, 540, 534, 538, 537, 536, 549, 526, 527, 528,
- 529, 531, 0, 543, 544, 530, 187, 200, 282, 0,
- 349, 250, 432, 416, 414, 0, 0, 230, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 189, 190, 201, 208, 217, 229, 242, 248, 257, 260,
- 263, 266, 267, 269, 274, 291, 295, 296, 297, 298,
- 314, 315, 316, 319, 322, 323, 325, 327, 328, 331,
- 337, 338, 339, 340, 341, 343, 350, 354, 361, 362,
- 363, 364, 365, 366, 367, 371, 372, 373, 374, 382,
- 385, 399, 400, 410, 420, 424, 258, 407, 425, 0,
- 290, 0, 194, 220, 207, 227, 241, 243, 271, 299,
- 305, 333, 336, 255, 238, 218, 353, 216, 369, 388,
- 389, 390, 392, 303, 234, 321, 0, 0, 0, 0,
- 490, 0, 0, 0, 237, 0, 489, 0, 0, 0,
- 280, 0, 0, 334, 0, 370, 223, 289, 287, 396,
- 246, 240, 236, 222, 265, 294, 332, 387, 326, 533,
- 284, 0, 0, 379, 306, 0, 0, 0, 0, 0,
- 524, 525, 0, 0, 0, 0, 0, 0, 0, 0,
- 270, 221, 192, 318, 380, 249, 67, 0, 0, 174,
- 175, 176, 511, 1346, 513, 514, 515, 516, 0, 0,
- 213, 512, 219, 517, 518, 519, 0, 233, 268, 239,
- 232, 394, 0, 0, 0, 487, 504, 0, 532, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 501, 502,
- 577, 0, 0, 0, 548, 0, 503, 0, 0, 496,
- 497, 499, 498, 500, 505, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 256, 0, 307, 547, 0, 0,
- 421, 0, 0, 545, 0, 0, 0, 0, 0, 279,
- 0, 276, 188, 202, 0, 0, 317, 355, 360, 0,
- 0, 0, 224, 0, 358, 330, 409, 209, 247, 352,
- 335, 356, 0, 0, 357, 285, 398, 347, 408, 422,
- 423, 231, 311, 415, 391, 419, 431, 203, 228, 324,
- 384, 412, 376, 304, 395, 275, 375, 254, 191, 283,
- 195, 386, 406, 214, 368, 0, 0, 0, 197, 404,
- 383, 301, 272, 273, 196, 0, 351, 235, 252, 226,
- 320, 401, 402, 225, 433, 204, 418, 199, 205, 417,
- 313, 397, 405, 302, 293, 198, 403, 300, 292, 278,
- 245, 261, 345, 288, 346, 262, 309, 308, 310, 0,
- 193, 0, 381, 413, 434, 211, 0, 0, 393, 427,
- 430, 0, 348, 212, 253, 244, 344, 251, 281, 426,
- 428, 429, 210, 342, 259, 312, 206, 264, 377, 277,
- 286, 0, 0, 329, 359, 215, 411, 378, 535, 546,
- 541, 542, 539, 540, 534, 538, 537, 536, 549, 526,
- 527, 528, 529, 531, 0, 543, 544, 530, 187, 200,
- 282, 0, 349, 250, 432, 416, 414, 0, 0, 230,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 189, 190, 201, 208, 217, 229, 242, 248,
- 257, 260, 263, 266, 267, 269, 274, 291, 295, 296,
- 297, 298, 314, 315, 316, 319, 322, 323, 325, 327,
- 328, 331, 337, 338, 339, 340, 341, 343, 350, 354,
- 361, 362, 363, 364, 365, 366, 367, 371, 372, 373,
- 374, 382, 385, 399, 400, 410, 420, 424, 258, 407,
- 425, 0, 290, 0, 194, 220, 207, 227, 241, 243,
- 271, 299, 305, 333, 336, 255, 238, 218, 353, 216,
- 369, 388, 389, 390, 392, 303, 234, 321, 0, 0,
- 0, 0, 490, 0, 0, 0, 237, 0, 489, 0,
- 0, 0, 280, 0, 0, 334, 0, 370, 223, 289,
- 287, 396, 246, 240, 236, 222, 265, 294, 332, 387,
- 326, 533, 284, 0, 0, 379, 306, 0, 0, 0,
- 0, 0, 524, 525, 0, 0, 0, 0, 0, 0,
- 0, 0, 270, 221, 192, 318, 380, 249, 67, 0,
- 0, 174, 175, 176, 511, 1343, 513, 514, 515, 516,
- 0, 0, 213, 512, 219, 517, 518, 519, 0, 233,
- 268, 239, 232, 394, 0, 0, 0, 487, 504, 0,
- 532, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 501, 502, 577, 0, 0, 0, 548, 0, 503, 0,
- 0, 496, 497, 499, 498, 500, 505, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 256, 0, 307, 547,
- 0, 0, 421, 0, 0, 545, 0, 0, 0, 0,
- 0, 279, 0, 276, 188, 202, 0, 0, 317, 355,
- 360, 0, 0, 0, 224, 0, 358, 330, 409, 209,
- 247, 352, 335, 356, 0, 0, 357, 285, 398, 347,
- 408, 422, 423, 231, 311, 415, 391, 419, 431, 203,
- 228, 324, 384, 412, 376, 304, 395, 275, 375, 254,
- 191, 283, 195, 386, 406, 214, 368, 0, 0, 0,
- 197, 404, 383, 301, 272, 273, 196, 0, 351, 235,
- 252, 226, 320, 401, 402, 225, 433, 204, 418, 199,
- 205, 417, 313, 397, 405, 302, 293, 198, 403, 300,
- 292, 278, 245, 261, 345, 288, 346, 262, 309, 308,
- 310, 0, 193, 0, 381, 413, 434, 211, 0, 0,
- 393, 427, 430, 0, 348, 212, 253, 244, 344, 251,
- 281, 426, 428, 429, 210, 342, 259, 312, 206, 264,
- 377, 277, 286, 0, 0, 329, 359, 215, 411, 378,
- 535, 546, 541, 542, 539, 540, 534, 538, 537, 536,
- 549, 526, 527, 528, 529, 531, 0, 543, 544, 530,
- 187, 200, 282, 0, 349, 250, 432, 416, 414, 0,
- 0, 230, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 189, 190, 201, 208, 217, 229,
- 242, 248, 257, 260, 263, 266, 267, 269, 274, 291,
- 295, 296, 297, 298, 314, 315, 316, 319, 322, 323,
- 325, 327, 328, 331, 337, 338, 339, 340, 341, 343,
- 350, 354, 361, 362, 363, 364, 365, 366, 367, 371,
- 372, 373, 374, 382, 385, 399, 400, 410, 420, 424,
- 258, 407, 425, 0, 290, 0, 194, 220, 207, 227,
- 241, 243, 271, 299, 305, 333, 336, 255, 238, 218,
- 353, 216, 369, 388, 389, 390, 392, 303, 234, 558,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 321, 0, 0, 0, 0, 490, 0, 0,
- 0, 237, 0, 489, 0, 0, 0, 280, 0, 0,
- 334, 0, 370, 223, 289, 287, 396, 246, 240, 236,
- 222, 265, 294, 332, 387, 326, 533, 284, 0, 0,
- 379, 306, 0, 0, 0, 0, 0, 524, 525, 0,
- 0, 0, 0, 0, 0, 0, 0, 270, 221, 192,
- 318, 380, 249, 67, 0, 0, 174, 175, 176, 511,
- 510, 513, 514, 515, 516, 0, 0, 213, 512, 219,
- 517, 518, 519, 0, 233, 268, 239, 232, 394, 0,
- 0, 0, 487, 504, 0, 532, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 501, 502, 0, 0, 0,
- 0, 548, 0, 503, 0, 0, 496, 497, 499, 498,
- 500, 505, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 256, 0, 307, 547, 0, 0, 421, 0, 0,
- 545, 0, 0, 0, 0, 0, 279, 0, 276, 188,
- 202, 0, 0, 317, 355, 360, 0, 0, 0, 224,
- 0, 358, 330, 409, 209, 247, 352, 335, 356, 0,
- 0, 357, 285, 398, 347, 408, 422, 423, 231, 311,
- 415, 391, 419, 431, 203, 228, 324, 384, 412, 376,
- 304, 395, 275, 375, 254, 191, 283, 195, 386, 406,
- 214, 368, 0, 0, 0, 197, 404, 383, 301, 272,
- 273, 196, 0, 351, 235, 252, 226, 320, 401, 402,
- 225, 433, 204, 418, 199, 205, 417, 313, 397, 405,
- 302, 293, 198, 403, 300, 292, 278, 245, 261, 345,
- 288, 346, 262, 309, 308, 310, 0, 193, 0, 381,
- 413, 434, 211, 0, 0, 393, 427, 430, 0, 348,
- 212, 253, 244, 344, 251, 281, 426, 428, 429, 210,
- 342, 259, 312, 206, 264, 377, 277, 286, 0, 0,
- 329, 359, 215, 411, 378, 535, 546, 541, 542, 539,
- 540, 534, 538, 537, 536, 549, 526, 527, 528, 529,
- 531, 0, 543, 544, 530, 187, 200, 282, 0, 349,
- 250, 432, 416, 414, 0, 0, 230, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 189,
- 190, 201, 208, 217, 229, 242, 248, 257, 260, 263,
- 266, 267, 269, 274, 291, 295, 296, 297, 298, 314,
- 315, 316, 319, 322, 323, 325, 327, 328, 331, 337,
- 338, 339, 340, 341, 343, 350, 354, 361, 362, 363,
- 364, 365, 366, 367, 371, 372, 373, 374, 382, 385,
- 399, 400, 410, 420, 424, 258, 407, 425, 0, 290,
- 0, 194, 220, 207, 227, 241, 243, 271, 299, 305,
- 333, 336, 255, 238, 218, 353, 216, 369, 388, 389,
- 390, 392, 303, 234, 321, 0, 0, 0, 0, 490,
- 0, 0, 0, 237, 0, 489, 0, 0, 0, 280,
- 0, 0, 334, 0, 370, 223, 289, 287, 396, 246,
- 240, 236, 222, 265, 294, 332, 387, 326, 533, 284,
- 0, 0, 379, 306, 0, 0, 0, 0, 0, 524,
- 525, 0, 0, 0, 0, 0, 0, 0, 0, 270,
- 221, 192, 318, 380, 249, 67, 0, 0, 174, 175,
- 176, 511, 510, 513, 514, 515, 516, 0, 0, 213,
- 512, 219, 517, 518, 519, 0, 233, 268, 239, 232,
- 394, 0, 0, 0, 487, 504, 0, 532, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 501, 502, 0,
- 0, 0, 0, 548, 0, 503, 0, 0, 496, 497,
- 499, 498, 500, 505, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 256, 0, 307, 547, 0, 0, 421,
- 0, 0, 545, 0, 0, 0, 0, 0, 279, 0,
- 276, 188, 202, 0, 0, 317, 355, 360, 0, 0,
- 0, 224, 0, 358, 330, 409, 209, 247, 352, 335,
- 356, 0, 0, 357, 285, 398, 347, 408, 422, 423,
- 231, 311, 415, 391, 419, 431, 203, 228, 324, 384,
- 412, 376, 304, 395, 275, 375, 254, 191, 283, 195,
- 386, 406, 214, 368, 0, 0, 0, 197, 404, 383,
- 301, 272, 273, 196, 0, 351, 235, 252, 226, 320,
- 401, 402, 225, 433, 204, 418, 199, 205, 417, 313,
- 397, 405, 302, 293, 198, 403, 300, 292, 278, 245,
- 261, 345, 288, 346, 262, 309, 308, 310, 0, 193,
- 0, 381, 413, 434, 211, 0, 0, 393, 427, 430,
- 0, 348, 212, 253, 244, 344, 251, 281, 426, 428,
- 429, 210, 342, 259, 312, 206, 264, 377, 277, 286,
- 0, 0, 329, 359, 215, 411, 378, 535, 546, 541,
- 542, 539, 540, 534, 538, 537, 536, 549, 526, 527,
- 528, 529, 531, 0, 543, 544, 530, 187, 200, 282,
- 0, 349, 250, 432, 416, 414, 0, 0, 230, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 189, 190, 201, 208, 217, 229, 242, 248, 257,
- 260, 263, 266, 267, 269, 274, 291, 295, 296, 297,
- 298, 314, 315, 316, 319, 322, 323, 325, 327, 328,
- 331, 337, 338, 339, 340, 341, 343, 350, 354, 361,
- 362, 363, 364, 365, 366, 367, 371, 372, 373, 374,
- 382, 385, 399, 400, 410, 420, 424, 258, 407, 425,
- 0, 290, 0, 194, 220, 207, 227, 241, 243, 271,
- 299, 305, 333, 336, 255, 238, 218, 353, 216, 369,
- 388, 389, 390, 392, 303, 234, 321, 0, 0, 0,
- 0, 0, 0, 0, 0, 237, 0, 0, 0, 0,
- 0, 280, 0, 0, 334, 0, 370, 223, 289, 287,
- 396, 246, 240, 236, 222, 265, 294, 332, 387, 326,
- 533, 284, 0, 0, 379, 306, 0, 0, 0, 0,
- 0, 524, 525, 0, 0, 0, 0, 0, 0, 0,
- 0, 270, 221, 192, 318, 380, 249, 67, 0, 0,
- 174, 175, 176, 511, 510, 513, 514, 515, 516, 0,
- 0, 213, 512, 219, 517, 518, 519, 0, 233, 268,
- 239, 232, 394, 0, 0, 0, 0, 504, 0, 532,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 501,
- 502, 0, 0, 0, 0, 548, 0, 503, 0, 0,
- 496, 497, 499, 498, 500, 505, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 256, 0, 307, 547, 0,
- 0, 421, 0, 0, 545, 0, 0, 0, 0, 0,
- 279, 0, 276, 188, 202, 0, 0, 317, 355, 360,
- 0, 0, 0, 224, 0, 358, 330, 409, 209, 247,
- 352, 335, 356, 2087, 0, 357, 285, 398, 347, 408,
- 422, 423, 231, 311, 415, 391, 419, 431, 203, 228,
- 324, 384, 412, 376, 304, 395, 275, 375, 254, 191,
- 283, 195, 386, 406, 214, 368, 0, 0, 0, 197,
- 404, 383, 301, 272, 273, 196, 0, 351, 235, 252,
- 226, 320, 401, 402, 225, 433, 204, 418, 199, 205,
- 417, 313, 397, 405, 302, 293, 198, 403, 300, 292,
- 278, 245, 261, 345, 288, 346, 262, 309, 308, 310,
- 0, 193, 0, 381, 413, 434, 211, 0, 0, 393,
- 427, 430, 0, 348, 212, 253, 244, 344, 251, 281,
- 426, 428, 429, 210, 342, 259, 312, 206, 264, 377,
- 277, 286, 0, 0, 329, 359, 215, 411, 378, 535,
- 546, 541, 542, 539, 540, 534, 538, 537, 536, 549,
- 526, 527, 528, 529, 531, 0, 543, 544, 530, 187,
- 200, 282, 0, 349, 250, 432, 416, 414, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1928, 1828, 34, 0, 0,
+ 1218, 0, 1835, 0, 0, 1828, 0, 0, 0, 0,
+ 625, 0, 1840, 0, 0, 0, 0, 0, 0, 0,
+ 1100, 0, 0, 0, 0, 0, 0, 0, 0, 1486,
+ 0, 0, 0, 0, 0, 0, 1490, 0, 1493, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1512, 0, 0,
+ 0, 149, 154, 151, 157, 158, 159, 160, 162, 163,
+ 164, 165, 493, 0, 0, 0, 0, 166, 167, 168,
+ 169, 1132, 0, 0, 0, 0, 0, 0, 0, 0,
+ 486, 0, 0, 0, 0, 625, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 487, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1145, 0, 0, 0, 0,
+ 0, 1224, 0, 0, 0, 0, 1579, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 625, 0, 0, 1218, 0, 0, 1931, 1224,
+ 0, 0, 0, 0, 2027, 0, 0, 0, 0, 0,
+ 0, 2033, 2034, 2035, 0, 0, 1158, 1161, 1162, 1163,
+ 1164, 1165, 1166, 0, 1167, 1168, 1169, 1170, 1171, 1146,
+ 1147, 1148, 1149, 1130, 1131, 1159, 0, 1133, 0, 1134,
+ 1135, 1136, 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1150,
+ 1151, 1152, 1153, 1154, 1155, 1156, 1157, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 771, 0, 0, 1218, 0, 0, 0,
+ 1104, 0, 0, 0, 1634, 1635, 1636, 1637, 1638, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1642, 1643,
+ 1104, 1645, 0, 0, 2001, 2002, 2003, 0, 0, 0,
+ 0, 1651, 1160, 0, 0, 0, 0, 0, 1654, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1928, 0, 34,
+ 0, 1928, 0, 1658, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 35,
+ 36, 37, 72, 39, 40, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 34, 0, 1218, 76,
+ 0, 0, 0, 0, 41, 67, 68, 0, 65, 69,
+ 0, 0, 0, 0, 0, 66, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1928, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 34, 2171, 54, 0, 1828, 2075, 0, 0,
+ 0, 0, 0, 0, 71, 0, 0, 0, 0, 1828,
+ 0, 0, 625, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 2104, 2104, 2104,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 2119, 0, 2121, 0, 0, 0, 0, 0, 1828,
+ 0, 1769, 0, 0, 0, 0, 44, 47, 50, 49,
+ 52, 0, 64, 0, 0, 70, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1828, 0, 0, 0, 0, 0, 53, 75,
+ 74, 0, 0, 62, 63, 51, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 1822, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 625, 625, 0, 55, 56, 0, 57, 58, 59,
+ 60, 0, 0, 0, 0, 2185, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 1218, 0, 2199, 0, 1852, 0, 1828, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1867, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 73, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 1916, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 1978, 0, 0, 1979,
+ 1980, 1981, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 1991, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 2004, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 750, 737,
+ 0, 0, 686, 753, 657, 675, 762, 677, 680, 720,
+ 636, 699, 327, 672, 0, 661, 632, 668, 633, 659,
+ 688, 237, 692, 656, 739, 702, 752, 285, 0, 638,
+ 662, 341, 722, 379, 223, 294, 292, 407, 247, 240,
+ 236, 222, 269, 300, 339, 397, 333, 759, 289, 709,
+ 0, 388, 312, 0, 0, 0, 690, 742, 697, 733,
+ 685, 721, 646, 708, 754, 673, 717, 755, 275, 221,
+ 190, 324, 389, 251, 0, 0, 0, 182, 183, 184,
+ 0, 2178, 2179, 0, 0, 0, 0, 0, 212, 0,
+ 219, 714, 749, 670, 716, 233, 273, 239, 232, 404,
+ 719, 765, 631, 711, 0, 634, 637, 761, 745, 665,
+ 666, 0, 0, 0, 0, 0, 0, 0, 689, 698,
+ 730, 683, 0, 0, 0, 0, 0, 0, 0, 0,
+ 663, 0, 707, 0, 0, 0, 642, 635, 0, 0,
+ 0, 0, 687, 2131, 0, 0, 645, 0, 664, 731,
+ 0, 629, 259, 639, 313, 2140, 735, 744, 684, 435,
+ 748, 682, 681, 751, 726, 643, 741, 676, 284, 641,
+ 281, 186, 201, 0, 674, 323, 362, 368, 740, 660,
+ 669, 224, 667, 366, 337, 421, 208, 249, 359, 342,
+ 364, 706, 724, 365, 290, 409, 354, 419, 436, 437,
+ 231, 317, 427, 401, 433, 447, 202, 228, 331, 394,
+ 424, 385, 310, 405, 406, 280, 384, 257, 189, 288,
+ 444, 200, 374, 216, 193, 396, 417, 213, 377, 0,
+ 0, 0, 195, 415, 393, 307, 277, 278, 194, 0,
+ 358, 235, 255, 226, 326, 412, 413, 225, 449, 204,
+ 432, 197, 940, 431, 319, 408, 416, 308, 299, 196,
+ 414, 306, 298, 283, 245, 265, 352, 293, 353, 266,
+ 315, 314, 316, 0, 191, 0, 390, 425, 450, 210,
+ 655, 736, 403, 441, 446, 0, 355, 211, 256, 244,
+ 351, 254, 286, 440, 442, 443, 445, 209, 349, 262,
+ 330, 420, 248, 428, 318, 205, 268, 386, 282, 291,
+ 728, 764, 336, 367, 214, 423, 387, 650, 654, 648,
+ 649, 700, 701, 651, 756, 757, 758, 732, 644, 0,
+ 652, 653, 0, 738, 746, 747, 705, 185, 198, 287,
+ 760, 356, 252, 448, 430, 426, 630, 647, 230, 658,
+ 0, 0, 671, 678, 679, 691, 693, 694, 695, 696,
+ 704, 712, 713, 715, 723, 725, 727, 729, 734, 743,
+ 763, 187, 188, 199, 207, 217, 229, 242, 250, 260,
+ 264, 267, 270, 271, 274, 279, 296, 301, 302, 303,
+ 304, 320, 321, 322, 325, 328, 329, 332, 334, 335,
+ 338, 344, 345, 346, 347, 348, 350, 357, 361, 369,
+ 370, 371, 372, 373, 375, 376, 380, 381, 382, 383,
+ 391, 395, 410, 411, 422, 434, 438, 261, 418, 439,
+ 0, 295, 703, 710, 297, 246, 263, 272, 718, 429,
+ 392, 203, 363, 253, 192, 220, 206, 227, 241, 243,
+ 276, 305, 311, 340, 343, 258, 238, 218, 360, 215,
+ 378, 398, 399, 400, 402, 309, 234, 750, 737, 0,
+ 0, 686, 753, 657, 675, 762, 677, 680, 720, 636,
+ 699, 327, 672, 0, 661, 632, 668, 633, 659, 688,
+ 237, 692, 656, 739, 702, 752, 285, 0, 638, 662,
+ 341, 722, 379, 223, 294, 292, 407, 247, 240, 236,
+ 222, 269, 300, 339, 397, 333, 759, 289, 709, 0,
+ 388, 312, 0, 0, 0, 690, 742, 697, 733, 685,
+ 721, 646, 708, 754, 673, 717, 755, 275, 221, 190,
+ 324, 389, 251, 0, 0, 0, 182, 183, 184, 0,
+ 0, 0, 0, 0, 0, 0, 0, 212, 0, 219,
+ 714, 749, 670, 716, 233, 273, 239, 232, 404, 719,
+ 765, 631, 711, 0, 634, 637, 761, 745, 665, 666,
+ 0, 0, 0, 0, 0, 0, 0, 689, 698, 730,
+ 683, 0, 0, 0, 0, 0, 0, 1920, 0, 663,
+ 0, 707, 0, 0, 0, 642, 635, 0, 0, 0,
+ 0, 687, 0, 0, 0, 645, 0, 664, 731, 0,
+ 629, 259, 639, 313, 0, 735, 744, 684, 435, 748,
+ 682, 681, 751, 726, 643, 741, 676, 284, 641, 281,
+ 186, 201, 0, 674, 323, 362, 368, 740, 660, 669,
+ 224, 667, 366, 337, 421, 208, 249, 359, 342, 364,
+ 706, 724, 365, 290, 409, 354, 419, 436, 437, 231,
+ 317, 427, 401, 433, 447, 202, 228, 331, 394, 424,
+ 385, 310, 405, 406, 280, 384, 257, 189, 288, 444,
+ 200, 374, 216, 193, 396, 417, 213, 377, 0, 0,
+ 0, 195, 415, 393, 307, 277, 278, 194, 0, 358,
+ 235, 255, 226, 326, 412, 413, 225, 449, 204, 432,
+ 197, 940, 431, 319, 408, 416, 308, 299, 196, 414,
+ 306, 298, 283, 245, 265, 352, 293, 353, 266, 315,
+ 314, 316, 0, 191, 0, 390, 425, 450, 210, 655,
+ 736, 403, 441, 446, 0, 355, 211, 256, 244, 351,
+ 254, 286, 440, 442, 443, 445, 209, 349, 262, 330,
+ 420, 248, 428, 318, 205, 268, 386, 282, 291, 728,
+ 764, 336, 367, 214, 423, 387, 650, 654, 648, 649,
+ 700, 701, 651, 756, 757, 758, 732, 644, 0, 652,
+ 653, 0, 738, 746, 747, 705, 185, 198, 287, 760,
+ 356, 252, 448, 430, 426, 630, 647, 230, 658, 0,
+ 0, 671, 678, 679, 691, 693, 694, 695, 696, 704,
+ 712, 713, 715, 723, 725, 727, 729, 734, 743, 763,
+ 187, 188, 199, 207, 217, 229, 242, 250, 260, 264,
+ 267, 270, 271, 274, 279, 296, 301, 302, 303, 304,
+ 320, 321, 322, 325, 328, 329, 332, 334, 335, 338,
+ 344, 345, 346, 347, 348, 350, 357, 361, 369, 370,
+ 371, 372, 373, 375, 376, 380, 381, 382, 383, 391,
+ 395, 410, 411, 422, 434, 438, 261, 418, 439, 0,
+ 295, 703, 710, 297, 246, 263, 272, 718, 429, 392,
+ 203, 363, 253, 192, 220, 206, 227, 241, 243, 276,
+ 305, 311, 340, 343, 258, 238, 218, 360, 215, 378,
+ 398, 399, 400, 402, 309, 234, 750, 737, 0, 0,
+ 686, 753, 657, 675, 762, 677, 680, 720, 636, 699,
+ 327, 672, 0, 661, 632, 668, 633, 659, 688, 237,
+ 692, 656, 739, 702, 752, 285, 0, 638, 662, 341,
+ 722, 379, 223, 294, 292, 407, 247, 240, 236, 222,
+ 269, 300, 339, 397, 333, 759, 289, 709, 0, 388,
+ 312, 0, 0, 0, 690, 742, 697, 733, 685, 721,
+ 646, 708, 754, 673, 717, 755, 275, 221, 190, 324,
+ 389, 251, 0, 0, 0, 182, 183, 184, 0, 0,
+ 0, 0, 0, 0, 0, 0, 212, 0, 219, 714,
+ 749, 670, 716, 233, 273, 239, 232, 404, 719, 765,
+ 631, 711, 0, 634, 637, 761, 745, 665, 666, 0,
+ 0, 0, 0, 0, 0, 0, 689, 698, 730, 683,
+ 0, 0, 0, 0, 0, 0, 1773, 0, 663, 0,
+ 707, 0, 0, 0, 642, 635, 0, 0, 0, 0,
+ 687, 0, 0, 0, 645, 0, 664, 731, 0, 629,
+ 259, 639, 313, 0, 735, 744, 684, 435, 748, 682,
+ 681, 751, 726, 643, 741, 676, 284, 641, 281, 186,
+ 201, 0, 674, 323, 362, 368, 740, 660, 669, 224,
+ 667, 366, 337, 421, 208, 249, 359, 342, 364, 706,
+ 724, 365, 290, 409, 354, 419, 436, 437, 231, 317,
+ 427, 401, 433, 447, 202, 228, 331, 394, 424, 385,
+ 310, 405, 406, 280, 384, 257, 189, 288, 444, 200,
+ 374, 216, 193, 396, 417, 213, 377, 0, 0, 0,
+ 195, 415, 393, 307, 277, 278, 194, 0, 358, 235,
+ 255, 226, 326, 412, 413, 225, 449, 204, 432, 197,
+ 940, 431, 319, 408, 416, 308, 299, 196, 414, 306,
+ 298, 283, 245, 265, 352, 293, 353, 266, 315, 314,
+ 316, 0, 191, 0, 390, 425, 450, 210, 655, 736,
+ 403, 441, 446, 0, 355, 211, 256, 244, 351, 254,
+ 286, 440, 442, 443, 445, 209, 349, 262, 330, 420,
+ 248, 428, 318, 205, 268, 386, 282, 291, 728, 764,
+ 336, 367, 214, 423, 387, 650, 654, 648, 649, 700,
+ 701, 651, 756, 757, 758, 732, 644, 0, 652, 653,
+ 0, 738, 746, 747, 705, 185, 198, 287, 760, 356,
+ 252, 448, 430, 426, 630, 647, 230, 658, 0, 0,
+ 671, 678, 679, 691, 693, 694, 695, 696, 704, 712,
+ 713, 715, 723, 725, 727, 729, 734, 743, 763, 187,
+ 188, 199, 207, 217, 229, 242, 250, 260, 264, 267,
+ 270, 271, 274, 279, 296, 301, 302, 303, 304, 320,
+ 321, 322, 325, 328, 329, 332, 334, 335, 338, 344,
+ 345, 346, 347, 348, 350, 357, 361, 369, 370, 371,
+ 372, 373, 375, 376, 380, 381, 382, 383, 391, 395,
+ 410, 411, 422, 434, 438, 261, 418, 439, 0, 295,
+ 703, 710, 297, 246, 263, 272, 718, 429, 392, 203,
+ 363, 253, 192, 220, 206, 227, 241, 243, 276, 305,
+ 311, 340, 343, 258, 238, 218, 360, 215, 378, 398,
+ 399, 400, 402, 309, 234, 750, 737, 0, 0, 686,
+ 753, 657, 675, 762, 677, 680, 720, 636, 699, 327,
+ 672, 0, 661, 632, 668, 633, 659, 688, 237, 692,
+ 656, 739, 702, 752, 285, 0, 638, 662, 341, 722,
+ 379, 223, 294, 292, 407, 247, 240, 236, 222, 269,
+ 300, 339, 397, 333, 759, 289, 709, 0, 388, 312,
+ 0, 0, 0, 690, 742, 697, 733, 685, 721, 646,
+ 708, 754, 673, 717, 755, 275, 221, 190, 324, 389,
+ 251, 0, 0, 0, 182, 183, 184, 0, 0, 0,
+ 0, 0, 0, 0, 0, 212, 0, 219, 714, 749,
+ 670, 716, 233, 273, 239, 232, 404, 719, 765, 631,
+ 711, 0, 634, 637, 761, 745, 665, 666, 0, 0,
+ 0, 0, 0, 0, 0, 689, 698, 730, 683, 0,
+ 0, 0, 0, 0, 0, 1488, 0, 663, 0, 707,
+ 0, 0, 0, 642, 635, 0, 0, 0, 0, 687,
+ 0, 0, 0, 645, 0, 664, 731, 0, 629, 259,
+ 639, 313, 0, 735, 744, 684, 435, 748, 682, 681,
+ 751, 726, 643, 741, 676, 284, 641, 281, 186, 201,
+ 0, 674, 323, 362, 368, 740, 660, 669, 224, 667,
+ 366, 337, 421, 208, 249, 359, 342, 364, 706, 724,
+ 365, 290, 409, 354, 419, 436, 437, 231, 317, 427,
+ 401, 433, 447, 202, 228, 331, 394, 424, 385, 310,
+ 405, 406, 280, 384, 257, 189, 288, 444, 200, 374,
+ 216, 193, 396, 417, 213, 377, 0, 0, 0, 195,
+ 415, 393, 307, 277, 278, 194, 0, 358, 235, 255,
+ 226, 326, 412, 413, 225, 449, 204, 432, 197, 940,
+ 431, 319, 408, 416, 308, 299, 196, 414, 306, 298,
+ 283, 245, 265, 352, 293, 353, 266, 315, 314, 316,
+ 0, 191, 0, 390, 425, 450, 210, 655, 736, 403,
+ 441, 446, 0, 355, 211, 256, 244, 351, 254, 286,
+ 440, 442, 443, 445, 209, 349, 262, 330, 420, 248,
+ 428, 318, 205, 268, 386, 282, 291, 728, 764, 336,
+ 367, 214, 423, 387, 650, 654, 648, 649, 700, 701,
+ 651, 756, 757, 758, 732, 644, 0, 652, 653, 0,
+ 738, 746, 747, 705, 185, 198, 287, 760, 356, 252,
+ 448, 430, 426, 630, 647, 230, 658, 0, 0, 671,
+ 678, 679, 691, 693, 694, 695, 696, 704, 712, 713,
+ 715, 723, 725, 727, 729, 734, 743, 763, 187, 188,
+ 199, 207, 217, 229, 242, 250, 260, 264, 267, 270,
+ 271, 274, 279, 296, 301, 302, 303, 304, 320, 321,
+ 322, 325, 328, 329, 332, 334, 335, 338, 344, 345,
+ 346, 347, 348, 350, 357, 361, 369, 370, 371, 372,
+ 373, 375, 376, 380, 381, 382, 383, 391, 395, 410,
+ 411, 422, 434, 438, 261, 418, 439, 0, 295, 703,
+ 710, 297, 246, 263, 272, 718, 429, 392, 203, 363,
+ 253, 192, 220, 206, 227, 241, 243, 276, 305, 311,
+ 340, 343, 258, 238, 218, 360, 215, 378, 398, 399,
+ 400, 402, 309, 234, 750, 737, 0, 0, 686, 753,
+ 657, 675, 762, 677, 680, 720, 636, 699, 327, 672,
+ 0, 661, 632, 668, 633, 659, 688, 237, 692, 656,
+ 739, 702, 752, 285, 0, 638, 662, 341, 722, 379,
+ 223, 294, 292, 407, 247, 240, 236, 222, 269, 300,
+ 339, 397, 333, 759, 289, 709, 0, 388, 312, 0,
+ 0, 0, 690, 742, 697, 733, 685, 721, 646, 708,
+ 754, 673, 717, 755, 275, 221, 190, 324, 389, 251,
+ 71, 0, 0, 182, 183, 184, 0, 0, 0, 0,
+ 0, 0, 0, 0, 212, 0, 219, 714, 749, 670,
+ 716, 233, 273, 239, 232, 404, 719, 765, 631, 711,
+ 0, 634, 637, 761, 745, 665, 666, 0, 0, 0,
+ 0, 0, 0, 0, 689, 698, 730, 683, 0, 0,
+ 0, 0, 0, 0, 0, 0, 663, 0, 707, 0,
+ 0, 0, 642, 635, 0, 0, 0, 0, 687, 0,
+ 0, 0, 645, 0, 664, 731, 0, 629, 259, 639,
+ 313, 0, 735, 744, 684, 435, 748, 682, 681, 751,
+ 726, 643, 741, 676, 284, 641, 281, 186, 201, 0,
+ 674, 323, 362, 368, 740, 660, 669, 224, 667, 366,
+ 337, 421, 208, 249, 359, 342, 364, 706, 724, 365,
+ 290, 409, 354, 419, 436, 437, 231, 317, 427, 401,
+ 433, 447, 202, 228, 331, 394, 424, 385, 310, 405,
+ 406, 280, 384, 257, 189, 288, 444, 200, 374, 216,
+ 193, 396, 417, 213, 377, 0, 0, 0, 195, 415,
+ 393, 307, 277, 278, 194, 0, 358, 235, 255, 226,
+ 326, 412, 413, 225, 449, 204, 432, 197, 940, 431,
+ 319, 408, 416, 308, 299, 196, 414, 306, 298, 283,
+ 245, 265, 352, 293, 353, 266, 315, 314, 316, 0,
+ 191, 0, 390, 425, 450, 210, 655, 736, 403, 441,
+ 446, 0, 355, 211, 256, 244, 351, 254, 286, 440,
+ 442, 443, 445, 209, 349, 262, 330, 420, 248, 428,
+ 318, 205, 268, 386, 282, 291, 728, 764, 336, 367,
+ 214, 423, 387, 650, 654, 648, 649, 700, 701, 651,
+ 756, 757, 758, 732, 644, 0, 652, 653, 0, 738,
+ 746, 747, 705, 185, 198, 287, 760, 356, 252, 448,
+ 430, 426, 630, 647, 230, 658, 0, 0, 671, 678,
+ 679, 691, 693, 694, 695, 696, 704, 712, 713, 715,
+ 723, 725, 727, 729, 734, 743, 763, 187, 188, 199,
+ 207, 217, 229, 242, 250, 260, 264, 267, 270, 271,
+ 274, 279, 296, 301, 302, 303, 304, 320, 321, 322,
+ 325, 328, 329, 332, 334, 335, 338, 344, 345, 346,
+ 347, 348, 350, 357, 361, 369, 370, 371, 372, 373,
+ 375, 376, 380, 381, 382, 383, 391, 395, 410, 411,
+ 422, 434, 438, 261, 418, 439, 0, 295, 703, 710,
+ 297, 246, 263, 272, 718, 429, 392, 203, 363, 253,
+ 192, 220, 206, 227, 241, 243, 276, 305, 311, 340,
+ 343, 258, 238, 218, 360, 215, 378, 398, 399, 400,
+ 402, 309, 234, 750, 737, 0, 0, 686, 753, 657,
+ 675, 762, 677, 680, 720, 636, 699, 327, 672, 0,
+ 661, 632, 668, 633, 659, 688, 237, 692, 656, 739,
+ 702, 752, 285, 0, 638, 662, 341, 722, 379, 223,
+ 294, 292, 407, 247, 240, 236, 222, 269, 300, 339,
+ 397, 333, 759, 289, 709, 0, 388, 312, 0, 0,
+ 0, 690, 742, 697, 733, 685, 721, 646, 708, 754,
+ 673, 717, 755, 275, 221, 190, 324, 389, 251, 0,
+ 0, 0, 182, 183, 184, 0, 0, 0, 0, 0,
+ 0, 0, 0, 212, 0, 219, 714, 749, 670, 716,
+ 233, 273, 239, 232, 404, 719, 765, 631, 711, 0,
+ 634, 637, 761, 745, 665, 666, 0, 0, 0, 0,
+ 0, 0, 0, 689, 698, 730, 683, 0, 0, 0,
+ 0, 0, 0, 0, 0, 663, 0, 707, 0, 0,
+ 0, 642, 635, 0, 0, 0, 0, 687, 0, 0,
+ 0, 645, 0, 664, 731, 0, 629, 259, 639, 313,
+ 0, 735, 744, 684, 435, 748, 682, 681, 751, 726,
+ 643, 741, 676, 284, 641, 281, 186, 201, 0, 674,
+ 323, 362, 368, 740, 660, 669, 224, 667, 366, 337,
+ 421, 208, 249, 359, 342, 364, 706, 724, 365, 290,
+ 409, 354, 419, 436, 437, 231, 317, 427, 401, 433,
+ 447, 202, 228, 331, 394, 424, 385, 310, 405, 406,
+ 280, 384, 257, 189, 288, 444, 200, 374, 216, 193,
+ 396, 417, 213, 377, 0, 0, 0, 195, 415, 393,
+ 307, 277, 278, 194, 0, 358, 235, 255, 226, 326,
+ 412, 413, 225, 449, 204, 432, 197, 940, 431, 319,
+ 408, 416, 308, 299, 196, 414, 306, 298, 283, 245,
+ 265, 352, 293, 353, 266, 315, 314, 316, 0, 191,
+ 0, 390, 425, 450, 210, 655, 736, 403, 441, 446,
+ 0, 355, 211, 256, 244, 351, 254, 286, 440, 442,
+ 443, 445, 209, 349, 262, 330, 420, 248, 428, 318,
+ 205, 268, 386, 282, 291, 728, 764, 336, 367, 214,
+ 423, 387, 650, 654, 648, 649, 700, 701, 651, 756,
+ 757, 758, 732, 644, 0, 652, 653, 0, 738, 746,
+ 747, 705, 185, 198, 287, 760, 356, 252, 448, 430,
+ 426, 630, 647, 230, 658, 0, 0, 671, 678, 679,
+ 691, 693, 694, 695, 696, 704, 712, 713, 715, 723,
+ 725, 727, 729, 734, 743, 763, 187, 188, 199, 207,
+ 217, 229, 242, 250, 260, 264, 267, 270, 271, 274,
+ 279, 296, 301, 302, 303, 304, 320, 321, 322, 325,
+ 328, 329, 332, 334, 335, 338, 344, 345, 346, 347,
+ 348, 350, 357, 361, 369, 370, 371, 372, 373, 375,
+ 376, 380, 381, 382, 383, 391, 395, 410, 411, 422,
+ 434, 438, 261, 418, 439, 0, 295, 703, 710, 297,
+ 246, 263, 272, 718, 429, 392, 203, 363, 253, 192,
+ 220, 206, 227, 241, 243, 276, 305, 311, 340, 343,
+ 258, 238, 218, 360, 215, 378, 398, 399, 400, 402,
+ 309, 234, 750, 737, 0, 0, 686, 753, 657, 675,
+ 762, 677, 680, 720, 636, 699, 327, 672, 0, 661,
+ 632, 668, 633, 659, 688, 237, 692, 656, 739, 702,
+ 752, 285, 0, 638, 662, 341, 722, 379, 223, 294,
+ 292, 407, 247, 240, 236, 222, 269, 300, 339, 397,
+ 333, 759, 289, 709, 0, 388, 312, 0, 0, 0,
+ 690, 742, 697, 733, 685, 721, 646, 708, 754, 673,
+ 717, 755, 275, 221, 190, 324, 389, 251, 0, 0,
+ 0, 182, 183, 184, 0, 0, 0, 0, 0, 0,
+ 0, 0, 212, 0, 219, 714, 749, 670, 716, 233,
+ 273, 239, 232, 404, 719, 765, 631, 711, 0, 634,
+ 637, 761, 745, 665, 666, 0, 0, 0, 0, 0,
+ 0, 0, 689, 698, 730, 683, 0, 0, 0, 0,
+ 0, 0, 0, 0, 663, 0, 707, 0, 0, 0,
+ 642, 635, 0, 0, 0, 0, 687, 0, 0, 0,
+ 645, 0, 664, 731, 0, 629, 259, 639, 313, 0,
+ 735, 744, 684, 435, 748, 682, 681, 751, 726, 643,
+ 741, 676, 284, 641, 281, 186, 201, 0, 674, 323,
+ 362, 368, 740, 660, 669, 224, 667, 366, 337, 421,
+ 208, 249, 359, 342, 364, 706, 724, 365, 290, 409,
+ 354, 419, 436, 437, 231, 317, 427, 401, 433, 447,
+ 202, 228, 331, 394, 424, 385, 310, 405, 406, 280,
+ 384, 257, 189, 288, 444, 200, 374, 216, 193, 396,
+ 417, 213, 377, 0, 0, 0, 195, 415, 393, 307,
+ 277, 278, 194, 0, 358, 235, 255, 226, 326, 412,
+ 413, 225, 449, 204, 432, 197, 640, 431, 319, 408,
+ 416, 308, 299, 196, 414, 306, 298, 283, 245, 265,
+ 352, 293, 353, 266, 315, 314, 316, 0, 191, 0,
+ 390, 425, 450, 210, 655, 736, 403, 441, 446, 0,
+ 355, 211, 256, 244, 351, 254, 286, 440, 442, 443,
+ 445, 209, 349, 262, 330, 420, 248, 428, 628, 766,
+ 622, 621, 282, 291, 728, 764, 336, 367, 214, 423,
+ 387, 650, 654, 648, 649, 700, 701, 651, 756, 757,
+ 758, 732, 644, 0, 652, 653, 0, 738, 746, 747,
+ 705, 185, 198, 287, 760, 356, 252, 448, 430, 426,
+ 630, 647, 230, 658, 0, 0, 671, 678, 679, 691,
+ 693, 694, 695, 696, 704, 712, 713, 715, 723, 725,
+ 727, 729, 734, 743, 763, 187, 188, 199, 207, 217,
+ 229, 242, 250, 260, 264, 267, 270, 271, 274, 279,
+ 296, 301, 302, 303, 304, 320, 321, 322, 325, 328,
+ 329, 332, 334, 335, 338, 344, 345, 346, 347, 348,
+ 350, 357, 361, 369, 370, 371, 372, 373, 375, 376,
+ 380, 381, 382, 383, 391, 395, 410, 411, 422, 434,
+ 438, 261, 418, 439, 0, 295, 703, 710, 297, 246,
+ 263, 272, 718, 429, 392, 203, 363, 253, 192, 220,
+ 206, 227, 241, 243, 276, 305, 311, 340, 343, 258,
+ 238, 218, 360, 215, 378, 398, 399, 400, 402, 309,
+ 234, 750, 737, 0, 0, 686, 753, 657, 675, 762,
+ 677, 680, 720, 636, 699, 327, 672, 0, 661, 632,
+ 668, 633, 659, 688, 237, 692, 656, 739, 702, 752,
+ 285, 0, 638, 662, 341, 722, 379, 223, 294, 292,
+ 407, 247, 240, 236, 222, 269, 300, 339, 397, 333,
+ 759, 289, 709, 0, 388, 312, 0, 0, 0, 690,
+ 742, 697, 733, 685, 721, 646, 708, 754, 673, 717,
+ 755, 275, 221, 190, 324, 389, 251, 0, 0, 0,
+ 182, 183, 184, 0, 0, 0, 0, 0, 0, 0,
+ 0, 212, 0, 219, 714, 749, 670, 716, 233, 273,
+ 239, 232, 404, 719, 765, 631, 711, 0, 634, 637,
+ 761, 745, 665, 666, 0, 0, 0, 0, 0, 0,
+ 0, 689, 698, 730, 683, 0, 0, 0, 0, 0,
+ 0, 0, 0, 663, 0, 707, 0, 0, 0, 642,
+ 635, 0, 0, 0, 0, 687, 0, 0, 0, 645,
+ 0, 664, 731, 0, 629, 259, 639, 313, 0, 735,
+ 744, 684, 435, 748, 682, 681, 751, 726, 643, 741,
+ 676, 284, 641, 281, 186, 201, 0, 674, 323, 362,
+ 368, 740, 660, 669, 224, 667, 366, 337, 421, 208,
+ 249, 359, 342, 364, 706, 724, 365, 290, 409, 354,
+ 419, 436, 437, 231, 317, 427, 401, 433, 447, 202,
+ 228, 331, 394, 424, 385, 310, 405, 406, 280, 384,
+ 257, 189, 288, 444, 200, 374, 216, 193, 396, 1108,
+ 213, 377, 0, 0, 0, 195, 415, 393, 307, 277,
+ 278, 194, 0, 358, 235, 255, 226, 326, 412, 413,
+ 225, 449, 204, 432, 197, 640, 431, 319, 408, 416,
+ 308, 299, 196, 414, 306, 298, 283, 245, 265, 352,
+ 293, 353, 266, 315, 314, 316, 0, 191, 0, 390,
+ 425, 450, 210, 655, 736, 403, 441, 446, 0, 355,
+ 211, 256, 244, 351, 254, 286, 440, 442, 443, 445,
+ 209, 349, 262, 330, 420, 248, 428, 628, 766, 622,
+ 621, 282, 291, 728, 764, 336, 367, 214, 423, 387,
+ 650, 654, 648, 649, 700, 701, 651, 756, 757, 758,
+ 732, 644, 0, 652, 653, 0, 738, 746, 747, 705,
+ 185, 198, 287, 760, 356, 252, 448, 430, 426, 630,
+ 647, 230, 658, 0, 0, 671, 678, 679, 691, 693,
+ 694, 695, 696, 704, 712, 713, 715, 723, 725, 727,
+ 729, 734, 743, 763, 187, 188, 199, 207, 217, 229,
+ 242, 250, 260, 264, 267, 270, 271, 274, 279, 296,
+ 301, 302, 303, 304, 320, 321, 322, 325, 328, 329,
+ 332, 334, 335, 338, 344, 345, 346, 347, 348, 350,
+ 357, 361, 369, 370, 371, 372, 373, 375, 376, 380,
+ 381, 382, 383, 391, 395, 410, 411, 422, 434, 438,
+ 261, 418, 439, 0, 295, 703, 710, 297, 246, 263,
+ 272, 718, 429, 392, 203, 363, 253, 192, 220, 206,
+ 227, 241, 243, 276, 305, 311, 340, 343, 258, 238,
+ 218, 360, 215, 378, 398, 399, 400, 402, 309, 234,
+ 750, 737, 0, 0, 686, 753, 657, 675, 762, 677,
+ 680, 720, 636, 699, 327, 672, 0, 661, 632, 668,
+ 633, 659, 688, 237, 692, 656, 739, 702, 752, 285,
+ 0, 638, 662, 341, 722, 379, 223, 294, 292, 407,
+ 247, 240, 236, 222, 269, 300, 339, 397, 333, 759,
+ 289, 709, 0, 388, 312, 0, 0, 0, 690, 742,
+ 697, 733, 685, 721, 646, 708, 754, 673, 717, 755,
+ 275, 221, 190, 324, 389, 251, 0, 0, 0, 182,
+ 183, 184, 0, 0, 0, 0, 0, 0, 0, 0,
+ 212, 0, 219, 714, 749, 670, 716, 233, 273, 239,
+ 232, 404, 719, 765, 631, 711, 0, 634, 637, 761,
+ 745, 665, 666, 0, 0, 0, 0, 0, 0, 0,
+ 689, 698, 730, 683, 0, 0, 0, 0, 0, 0,
+ 0, 0, 663, 0, 707, 0, 0, 0, 642, 635,
+ 0, 0, 0, 0, 687, 0, 0, 0, 645, 0,
+ 664, 731, 0, 629, 259, 639, 313, 0, 735, 744,
+ 684, 435, 748, 682, 681, 751, 726, 643, 741, 676,
+ 284, 641, 281, 186, 201, 0, 674, 323, 362, 368,
+ 740, 660, 669, 224, 667, 366, 337, 421, 208, 249,
+ 359, 342, 364, 706, 724, 365, 290, 409, 354, 419,
+ 436, 437, 231, 317, 427, 401, 433, 447, 202, 228,
+ 331, 394, 424, 385, 310, 405, 406, 280, 384, 257,
+ 189, 288, 444, 200, 374, 216, 193, 396, 619, 213,
+ 377, 0, 0, 0, 195, 415, 393, 307, 277, 278,
+ 194, 0, 358, 235, 255, 226, 326, 412, 413, 225,
+ 449, 204, 432, 197, 640, 431, 319, 408, 416, 308,
+ 299, 196, 414, 306, 298, 283, 245, 265, 352, 293,
+ 353, 266, 315, 314, 316, 0, 191, 0, 390, 425,
+ 450, 210, 655, 736, 403, 441, 446, 0, 355, 211,
+ 256, 244, 351, 254, 286, 440, 442, 443, 445, 209,
+ 349, 262, 330, 420, 248, 428, 628, 766, 622, 621,
+ 282, 291, 728, 764, 336, 367, 214, 423, 387, 650,
+ 654, 648, 649, 700, 701, 651, 756, 757, 758, 732,
+ 644, 0, 652, 653, 0, 738, 746, 747, 705, 185,
+ 198, 287, 760, 356, 252, 448, 430, 426, 630, 647,
+ 230, 658, 0, 0, 671, 678, 679, 691, 693, 694,
+ 695, 696, 704, 712, 713, 715, 723, 725, 727, 729,
+ 734, 743, 763, 187, 188, 199, 207, 217, 229, 242,
+ 250, 260, 264, 267, 270, 271, 274, 279, 296, 301,
+ 302, 303, 304, 320, 321, 322, 325, 328, 329, 332,
+ 334, 335, 338, 344, 345, 346, 347, 348, 350, 357,
+ 361, 369, 370, 371, 372, 373, 375, 376, 380, 381,
+ 382, 383, 391, 395, 410, 411, 422, 434, 438, 261,
+ 418, 439, 0, 295, 703, 710, 297, 246, 263, 272,
+ 718, 429, 392, 203, 363, 253, 192, 220, 206, 227,
+ 241, 243, 276, 305, 311, 340, 343, 258, 238, 218,
+ 360, 215, 378, 398, 399, 400, 402, 309, 234, 327,
+ 0, 0, 1415, 0, 519, 0, 0, 0, 237, 0,
+ 518, 0, 0, 0, 285, 0, 0, 1416, 341, 0,
+ 379, 223, 294, 292, 407, 247, 240, 236, 222, 269,
+ 300, 339, 397, 333, 562, 289, 0, 0, 388, 312,
+ 0, 0, 0, 0, 0, 553, 554, 0, 0, 0,
+ 0, 0, 0, 0, 0, 275, 221, 190, 324, 389,
+ 251, 71, 0, 0, 182, 183, 184, 540, 539, 542,
+ 543, 544, 545, 0, 0, 212, 541, 219, 546, 547,
+ 548, 0, 233, 273, 239, 232, 404, 0, 0, 0,
+ 516, 533, 0, 561, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 530, 531, 609, 0, 0, 0, 577,
+ 0, 532, 0, 0, 525, 526, 528, 527, 529, 534,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 259,
+ 0, 313, 0, 576, 0, 0, 435, 0, 0, 574,
+ 0, 0, 0, 0, 0, 284, 0, 281, 186, 201,
+ 0, 0, 323, 362, 368, 0, 0, 0, 224, 0,
+ 366, 337, 421, 208, 249, 359, 342, 364, 0, 0,
+ 365, 290, 409, 354, 419, 436, 437, 231, 317, 427,
+ 401, 433, 447, 202, 228, 331, 394, 424, 385, 310,
+ 405, 406, 280, 384, 257, 189, 288, 444, 200, 374,
+ 216, 193, 396, 417, 213, 377, 0, 0, 0, 195,
+ 415, 393, 307, 277, 278, 194, 0, 358, 235, 255,
+ 226, 326, 412, 413, 225, 449, 204, 432, 197, 0,
+ 431, 319, 408, 416, 308, 299, 196, 414, 306, 298,
+ 283, 245, 265, 352, 293, 353, 266, 315, 314, 316,
+ 0, 191, 0, 390, 425, 450, 210, 0, 0, 403,
+ 441, 446, 0, 355, 211, 256, 244, 351, 254, 286,
+ 440, 442, 443, 445, 209, 349, 262, 330, 420, 248,
+ 428, 318, 205, 268, 386, 282, 291, 0, 0, 336,
+ 367, 214, 423, 387, 564, 575, 570, 571, 568, 569,
+ 563, 567, 566, 565, 578, 555, 556, 557, 558, 560,
+ 0, 572, 573, 559, 185, 198, 287, 0, 356, 252,
+ 448, 430, 426, 0, 0, 230, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
+ 199, 207, 217, 229, 242, 250, 260, 264, 267, 270,
+ 271, 274, 279, 296, 301, 302, 303, 304, 320, 321,
+ 322, 325, 328, 329, 332, 334, 335, 338, 344, 345,
+ 346, 347, 348, 350, 357, 361, 369, 370, 371, 372,
+ 373, 375, 376, 380, 381, 382, 383, 391, 395, 410,
+ 411, 422, 434, 438, 261, 418, 439, 0, 295, 0,
+ 0, 297, 246, 263, 272, 0, 429, 392, 203, 363,
+ 253, 192, 220, 206, 227, 241, 243, 276, 305, 311,
+ 340, 343, 258, 238, 218, 360, 215, 378, 398, 399,
+ 400, 402, 309, 234, 327, 0, 0, 0, 0, 519,
+ 0, 0, 0, 237, 0, 518, 0, 0, 0, 285,
+ 0, 0, 0, 341, 0, 379, 223, 294, 292, 407,
+ 247, 240, 236, 222, 269, 300, 339, 397, 333, 562,
+ 289, 0, 0, 388, 312, 0, 0, 0, 0, 0,
+ 553, 554, 0, 0, 0, 0, 0, 0, 1527, 0,
+ 275, 221, 190, 324, 389, 251, 71, 0, 0, 182,
+ 183, 184, 540, 539, 542, 543, 544, 545, 0, 0,
+ 212, 541, 219, 546, 547, 548, 1528, 233, 273, 239,
+ 232, 404, 0, 0, 0, 516, 533, 0, 561, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 530, 531,
+ 0, 0, 0, 0, 577, 0, 532, 0, 0, 525,
+ 526, 528, 527, 529, 534, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 259, 0, 313, 0, 576, 0,
+ 0, 435, 0, 0, 574, 0, 0, 0, 0, 0,
+ 284, 0, 281, 186, 201, 0, 0, 323, 362, 368,
+ 0, 0, 0, 224, 0, 366, 337, 421, 208, 249,
+ 359, 342, 364, 0, 0, 365, 290, 409, 354, 419,
+ 436, 437, 231, 317, 427, 401, 433, 447, 202, 228,
+ 331, 394, 424, 385, 310, 405, 406, 280, 384, 257,
+ 189, 288, 444, 200, 374, 216, 193, 396, 417, 213,
+ 377, 0, 0, 0, 195, 415, 393, 307, 277, 278,
+ 194, 0, 358, 235, 255, 226, 326, 412, 413, 225,
+ 449, 204, 432, 197, 0, 431, 319, 408, 416, 308,
+ 299, 196, 414, 306, 298, 283, 245, 265, 352, 293,
+ 353, 266, 315, 314, 316, 0, 191, 0, 390, 425,
+ 450, 210, 0, 0, 403, 441, 446, 0, 355, 211,
+ 256, 244, 351, 254, 286, 440, 442, 443, 445, 209,
+ 349, 262, 330, 420, 248, 428, 318, 205, 268, 386,
+ 282, 291, 0, 0, 336, 367, 214, 423, 387, 564,
+ 575, 570, 571, 568, 569, 563, 567, 566, 565, 578,
+ 555, 556, 557, 558, 560, 0, 572, 573, 559, 185,
+ 198, 287, 0, 356, 252, 448, 430, 426, 0, 0,
230, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 189, 190, 201, 208, 217, 229, 242,
- 248, 257, 260, 263, 266, 267, 269, 274, 291, 295,
- 296, 297, 298, 314, 315, 316, 319, 322, 323, 325,
- 327, 328, 331, 337, 338, 339, 340, 341, 343, 350,
- 354, 361, 362, 363, 364, 365, 366, 367, 371, 372,
- 373, 374, 382, 385, 399, 400, 410, 420, 424, 258,
- 407, 425, 0, 290, 0, 194, 220, 207, 227, 241,
- 243, 271, 299, 305, 333, 336, 255, 238, 218, 353,
- 216, 369, 388, 389, 390, 392, 303, 234, 321, 0,
- 0, 0, 0, 0, 0, 0, 0, 237, 0, 0,
- 0, 0, 0, 280, 0, 0, 334, 0, 370, 223,
- 289, 287, 396, 246, 240, 236, 222, 265, 294, 332,
- 387, 326, 533, 284, 0, 0, 379, 306, 0, 0,
- 0, 0, 0, 524, 525, 0, 0, 0, 0, 0,
- 0, 0, 0, 270, 221, 192, 318, 380, 249, 67,
- 0, 565, 174, 175, 176, 511, 510, 513, 514, 515,
- 516, 0, 0, 213, 512, 219, 517, 518, 519, 0,
- 233, 268, 239, 232, 394, 0, 0, 0, 0, 504,
- 0, 532, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 501, 502, 0, 0, 0, 0, 548, 0, 503,
- 0, 0, 496, 497, 499, 498, 500, 505, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 256, 0, 307,
- 547, 0, 0, 421, 0, 0, 545, 0, 0, 0,
- 0, 0, 279, 0, 276, 188, 202, 0, 0, 317,
- 355, 360, 0, 0, 0, 224, 0, 358, 330, 409,
- 209, 247, 352, 335, 356, 0, 0, 357, 285, 398,
- 347, 408, 422, 423, 231, 311, 415, 391, 419, 431,
- 203, 228, 324, 384, 412, 376, 304, 395, 275, 375,
- 254, 191, 283, 195, 386, 406, 214, 368, 0, 0,
- 0, 197, 404, 383, 301, 272, 273, 196, 0, 351,
- 235, 252, 226, 320, 401, 402, 225, 433, 204, 418,
- 199, 205, 417, 313, 397, 405, 302, 293, 198, 403,
- 300, 292, 278, 245, 261, 345, 288, 346, 262, 309,
- 308, 310, 0, 193, 0, 381, 413, 434, 211, 0,
- 0, 393, 427, 430, 0, 348, 212, 253, 244, 344,
- 251, 281, 426, 428, 429, 210, 342, 259, 312, 206,
- 264, 377, 277, 286, 0, 0, 329, 359, 215, 411,
- 378, 535, 546, 541, 542, 539, 540, 534, 538, 537,
- 536, 549, 526, 527, 528, 529, 531, 0, 543, 544,
- 530, 187, 200, 282, 0, 349, 250, 432, 416, 414,
- 0, 0, 230, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 189, 190, 201, 208, 217,
- 229, 242, 248, 257, 260, 263, 266, 267, 269, 274,
- 291, 295, 296, 297, 298, 314, 315, 316, 319, 322,
- 323, 325, 327, 328, 331, 337, 338, 339, 340, 341,
- 343, 350, 354, 361, 362, 363, 364, 365, 366, 367,
- 371, 372, 373, 374, 382, 385, 399, 400, 410, 420,
- 424, 258, 407, 425, 0, 290, 0, 194, 220, 207,
- 227, 241, 243, 271, 299, 305, 333, 336, 255, 238,
- 218, 353, 216, 369, 388, 389, 390, 392, 303, 234,
- 321, 0, 0, 0, 0, 0, 0, 0, 0, 237,
- 0, 0, 0, 0, 0, 280, 0, 0, 334, 0,
- 370, 223, 289, 287, 396, 246, 240, 236, 222, 265,
- 294, 332, 387, 326, 533, 284, 0, 0, 379, 306,
- 0, 0, 0, 0, 0, 524, 525, 0, 0, 0,
- 0, 0, 0, 0, 0, 270, 221, 192, 318, 380,
- 249, 67, 0, 0, 174, 175, 176, 511, 510, 513,
- 514, 515, 516, 0, 0, 213, 512, 219, 517, 518,
- 519, 0, 233, 268, 239, 232, 394, 0, 0, 0,
- 0, 504, 0, 532, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 501, 502, 0, 0, 0, 0, 548,
- 0, 503, 0, 0, 496, 497, 499, 498, 500, 505,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 256,
- 0, 307, 547, 0, 0, 421, 0, 0, 545, 0,
- 0, 0, 0, 0, 279, 0, 276, 188, 202, 0,
- 0, 317, 355, 360, 0, 0, 0, 224, 0, 358,
- 330, 409, 209, 247, 352, 335, 356, 0, 0, 357,
- 285, 398, 347, 408, 422, 423, 231, 311, 415, 391,
- 419, 431, 203, 228, 324, 384, 412, 376, 304, 395,
- 275, 375, 254, 191, 283, 195, 386, 406, 214, 368,
- 0, 0, 0, 197, 404, 383, 301, 272, 273, 196,
- 0, 351, 235, 252, 226, 320, 401, 402, 225, 433,
- 204, 418, 199, 205, 417, 313, 397, 405, 302, 293,
- 198, 403, 300, 292, 278, 245, 261, 345, 288, 346,
- 262, 309, 308, 310, 0, 193, 0, 381, 413, 434,
- 211, 0, 0, 393, 427, 430, 0, 348, 212, 253,
- 244, 344, 251, 281, 426, 428, 429, 210, 342, 259,
- 312, 206, 264, 377, 277, 286, 0, 0, 329, 359,
- 215, 411, 378, 535, 546, 541, 542, 539, 540, 534,
- 538, 537, 536, 549, 526, 527, 528, 529, 531, 0,
- 543, 544, 530, 187, 200, 282, 0, 349, 250, 432,
- 416, 414, 0, 0, 230, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 189, 190, 201,
- 208, 217, 229, 242, 248, 257, 260, 263, 266, 267,
- 269, 274, 291, 295, 296, 297, 298, 314, 315, 316,
- 319, 322, 323, 325, 327, 328, 331, 337, 338, 339,
- 340, 341, 343, 350, 354, 361, 362, 363, 364, 365,
- 366, 367, 371, 372, 373, 374, 382, 385, 399, 400,
- 410, 420, 424, 258, 407, 425, 0, 290, 0, 194,
- 220, 207, 227, 241, 243, 271, 299, 305, 333, 336,
- 255, 238, 218, 353, 216, 369, 388, 389, 390, 392,
- 303, 234, 321, 0, 0, 0, 0, 0, 0, 0,
- 0, 237, 0, 0, 0, 0, 0, 280, 0, 0,
- 334, 0, 370, 223, 289, 287, 396, 246, 240, 236,
- 222, 265, 294, 332, 387, 326, 0, 284, 0, 0,
- 379, 306, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 270, 221, 192,
- 318, 380, 249, 0, 0, 0, 174, 175, 176, 0,
- 0, 0, 0, 0, 0, 0, 0, 213, 0, 219,
- 0, 0, 0, 0, 233, 268, 239, 232, 394, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 922, 921, 931, 932, 924, 925, 926, 927, 928,
- 929, 930, 923, 0, 0, 933, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 256, 0, 307, 0, 0, 0, 421, 0, 0,
- 0, 0, 0, 0, 0, 0, 279, 0, 276, 188,
- 202, 0, 0, 317, 355, 360, 0, 0, 0, 224,
- 0, 358, 330, 409, 209, 247, 352, 335, 356, 0,
- 0, 357, 285, 398, 347, 408, 422, 423, 231, 311,
- 415, 391, 419, 431, 203, 228, 324, 384, 412, 376,
- 304, 395, 275, 375, 254, 191, 283, 195, 386, 406,
- 214, 368, 0, 0, 0, 197, 404, 383, 301, 272,
- 273, 196, 0, 351, 235, 252, 226, 320, 401, 402,
- 225, 433, 204, 418, 199, 205, 417, 313, 397, 405,
- 302, 293, 198, 403, 300, 292, 278, 245, 261, 345,
- 288, 346, 262, 309, 308, 310, 0, 193, 0, 381,
- 413, 434, 211, 0, 0, 393, 427, 430, 0, 348,
- 212, 253, 244, 344, 251, 281, 426, 428, 429, 210,
- 342, 259, 312, 206, 264, 377, 277, 286, 0, 0,
- 329, 359, 215, 411, 378, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 187, 200, 282, 0, 349,
- 250, 432, 416, 414, 0, 0, 230, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 189,
- 190, 201, 208, 217, 229, 242, 248, 257, 260, 263,
- 266, 267, 269, 274, 291, 295, 296, 297, 298, 314,
- 315, 316, 319, 322, 323, 325, 327, 328, 331, 337,
- 338, 339, 340, 341, 343, 350, 354, 361, 362, 363,
- 364, 365, 366, 367, 371, 372, 373, 374, 382, 385,
- 399, 400, 410, 420, 424, 258, 407, 425, 0, 290,
- 0, 194, 220, 207, 227, 241, 243, 271, 299, 305,
- 333, 336, 255, 238, 218, 353, 216, 369, 388, 389,
- 390, 392, 303, 234, 321, 0, 0, 0, 0, 0,
- 0, 0, 0, 237, 772, 0, 0, 0, 0, 280,
- 0, 0, 334, 0, 370, 223, 289, 287, 396, 246,
- 240, 236, 222, 265, 294, 332, 387, 326, 0, 284,
- 0, 0, 379, 306, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 270,
- 221, 192, 318, 380, 249, 0, 0, 0, 174, 175,
- 176, 0, 0, 0, 0, 0, 0, 0, 0, 213,
- 0, 219, 0, 0, 0, 0, 233, 268, 239, 232,
- 394, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 256, 0, 307, 0, 0, 771, 421,
- 0, 0, 0, 0, 0, 0, 768, 769, 279, 739,
- 276, 188, 202, 762, 766, 317, 355, 360, 0, 0,
- 0, 224, 0, 358, 330, 409, 209, 247, 352, 335,
- 356, 0, 0, 357, 285, 398, 347, 408, 422, 423,
- 231, 311, 415, 391, 419, 431, 203, 228, 324, 384,
- 412, 376, 304, 395, 275, 375, 254, 191, 283, 195,
- 386, 406, 214, 368, 0, 0, 0, 197, 404, 383,
- 301, 272, 273, 196, 0, 351, 235, 252, 226, 320,
- 401, 402, 225, 433, 204, 418, 199, 205, 417, 313,
- 397, 405, 302, 293, 198, 403, 300, 292, 278, 245,
- 261, 345, 288, 346, 262, 309, 308, 310, 0, 193,
- 0, 381, 413, 434, 211, 0, 0, 393, 427, 430,
- 0, 348, 212, 253, 244, 344, 251, 281, 426, 428,
- 429, 210, 342, 259, 312, 206, 264, 377, 277, 286,
- 0, 0, 329, 359, 215, 411, 378, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 187, 200, 282,
- 0, 349, 250, 432, 416, 414, 0, 0, 230, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 189, 190, 201, 208, 217, 229, 242, 248, 257,
- 260, 263, 266, 267, 269, 274, 291, 295, 296, 297,
- 298, 314, 315, 316, 319, 322, 323, 325, 327, 328,
- 331, 337, 338, 339, 340, 341, 343, 350, 354, 361,
- 362, 363, 364, 365, 366, 367, 371, 372, 373, 374,
- 382, 385, 399, 400, 410, 420, 424, 258, 407, 425,
- 0, 290, 0, 194, 220, 207, 227, 241, 243, 271,
- 299, 305, 333, 336, 255, 238, 218, 353, 216, 369,
- 388, 389, 390, 392, 303, 234, 321, 0, 0, 0,
- 1023, 0, 0, 0, 0, 237, 0, 0, 0, 0,
- 0, 280, 0, 0, 334, 0, 370, 223, 289, 287,
- 396, 246, 240, 236, 222, 265, 294, 332, 387, 326,
- 0, 284, 0, 0, 379, 306, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 270, 221, 192, 318, 380, 249, 0, 0, 0,
- 174, 175, 176, 0, 1025, 0, 0, 0, 0, 0,
- 0, 213, 0, 219, 0, 0, 0, 0, 233, 268,
- 239, 232, 394, 911, 912, 910, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 913, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 256, 0, 307, 0, 0,
- 0, 421, 0, 0, 0, 0, 0, 0, 0, 0,
- 279, 0, 276, 188, 202, 0, 0, 317, 355, 360,
- 0, 0, 0, 224, 0, 358, 330, 409, 209, 247,
- 352, 335, 356, 0, 0, 357, 285, 398, 347, 408,
- 422, 423, 231, 311, 415, 391, 419, 431, 203, 228,
- 324, 384, 412, 376, 304, 395, 275, 375, 254, 191,
- 283, 195, 386, 406, 214, 368, 0, 0, 0, 197,
- 404, 383, 301, 272, 273, 196, 0, 351, 235, 252,
- 226, 320, 401, 402, 225, 433, 204, 418, 199, 205,
- 417, 313, 397, 405, 302, 293, 198, 403, 300, 292,
- 278, 245, 261, 345, 288, 346, 262, 309, 308, 310,
- 0, 193, 0, 381, 413, 434, 211, 0, 0, 393,
- 427, 430, 0, 348, 212, 253, 244, 344, 251, 281,
- 426, 428, 429, 210, 342, 259, 312, 206, 264, 377,
- 277, 286, 0, 0, 329, 359, 215, 411, 378, 0,
+ 0, 0, 0, 187, 188, 199, 207, 217, 229, 242,
+ 250, 260, 264, 267, 270, 271, 274, 279, 296, 301,
+ 302, 303, 304, 320, 321, 322, 325, 328, 329, 332,
+ 334, 335, 338, 344, 345, 346, 347, 348, 350, 357,
+ 361, 369, 370, 371, 372, 373, 375, 376, 380, 381,
+ 382, 383, 391, 395, 410, 411, 422, 434, 438, 261,
+ 418, 439, 0, 295, 0, 0, 297, 246, 263, 272,
+ 0, 429, 392, 203, 363, 253, 192, 220, 206, 227,
+ 241, 243, 276, 305, 311, 340, 343, 258, 238, 218,
+ 360, 215, 378, 398, 399, 400, 402, 309, 234, 327,
+ 0, 0, 0, 0, 519, 0, 0, 0, 237, 0,
+ 518, 0, 0, 0, 285, 0, 0, 0, 341, 0,
+ 379, 223, 294, 292, 407, 247, 240, 236, 222, 269,
+ 300, 339, 397, 333, 562, 289, 0, 0, 388, 312,
+ 0, 0, 0, 0, 0, 553, 554, 0, 0, 0,
+ 0, 0, 0, 0, 0, 275, 221, 190, 324, 389,
+ 251, 71, 0, 596, 182, 183, 184, 540, 539, 542,
+ 543, 544, 545, 0, 0, 212, 541, 219, 546, 547,
+ 548, 0, 233, 273, 239, 232, 404, 0, 0, 0,
+ 516, 533, 0, 561, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 530, 531, 0, 0, 0, 0, 577,
+ 0, 532, 0, 0, 525, 526, 528, 527, 529, 534,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 259,
+ 0, 313, 0, 576, 0, 0, 435, 0, 0, 574,
+ 0, 0, 0, 0, 0, 284, 0, 281, 186, 201,
+ 0, 0, 323, 362, 368, 0, 0, 0, 224, 0,
+ 366, 337, 421, 208, 249, 359, 342, 364, 0, 0,
+ 365, 290, 409, 354, 419, 436, 437, 231, 317, 427,
+ 401, 433, 447, 202, 228, 331, 394, 424, 385, 310,
+ 405, 406, 280, 384, 257, 189, 288, 444, 200, 374,
+ 216, 193, 396, 417, 213, 377, 0, 0, 0, 195,
+ 415, 393, 307, 277, 278, 194, 0, 358, 235, 255,
+ 226, 326, 412, 413, 225, 449, 204, 432, 197, 0,
+ 431, 319, 408, 416, 308, 299, 196, 414, 306, 298,
+ 283, 245, 265, 352, 293, 353, 266, 315, 314, 316,
+ 0, 191, 0, 390, 425, 450, 210, 0, 0, 403,
+ 441, 446, 0, 355, 211, 256, 244, 351, 254, 286,
+ 440, 442, 443, 445, 209, 349, 262, 330, 420, 248,
+ 428, 318, 205, 268, 386, 282, 291, 0, 0, 336,
+ 367, 214, 423, 387, 564, 575, 570, 571, 568, 569,
+ 563, 567, 566, 565, 578, 555, 556, 557, 558, 560,
+ 0, 572, 573, 559, 185, 198, 287, 0, 356, 252,
+ 448, 430, 426, 0, 0, 230, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
+ 199, 207, 217, 229, 242, 250, 260, 264, 267, 270,
+ 271, 274, 279, 296, 301, 302, 303, 304, 320, 321,
+ 322, 325, 328, 329, 332, 334, 335, 338, 344, 345,
+ 346, 347, 348, 350, 357, 361, 369, 370, 371, 372,
+ 373, 375, 376, 380, 381, 382, 383, 391, 395, 410,
+ 411, 422, 434, 438, 261, 418, 439, 0, 295, 0,
+ 0, 297, 246, 263, 272, 0, 429, 392, 203, 363,
+ 253, 192, 220, 206, 227, 241, 243, 276, 305, 311,
+ 340, 343, 258, 238, 218, 360, 215, 378, 398, 399,
+ 400, 402, 309, 234, 327, 0, 0, 0, 0, 519,
+ 0, 0, 0, 237, 0, 518, 0, 0, 0, 285,
+ 0, 0, 0, 341, 0, 379, 223, 294, 292, 407,
+ 247, 240, 236, 222, 269, 300, 339, 397, 333, 562,
+ 289, 0, 0, 388, 312, 0, 0, 0, 0, 0,
+ 553, 554, 0, 0, 0, 0, 0, 0, 0, 0,
+ 275, 221, 190, 324, 389, 251, 71, 0, 0, 182,
+ 183, 184, 540, 539, 542, 543, 544, 545, 0, 0,
+ 212, 541, 219, 546, 547, 548, 0, 233, 273, 239,
+ 232, 404, 0, 0, 0, 516, 533, 0, 561, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 530, 531,
+ 609, 0, 0, 0, 577, 0, 532, 0, 0, 525,
+ 526, 528, 527, 529, 534, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 259, 0, 313, 0, 576, 0,
+ 0, 435, 0, 0, 574, 0, 0, 0, 0, 0,
+ 284, 0, 281, 186, 201, 0, 0, 323, 362, 368,
+ 0, 0, 0, 224, 0, 366, 337, 421, 208, 249,
+ 359, 342, 364, 0, 0, 365, 290, 409, 354, 419,
+ 436, 437, 231, 317, 427, 401, 433, 447, 202, 228,
+ 331, 394, 424, 385, 310, 405, 406, 280, 384, 257,
+ 189, 288, 444, 200, 374, 216, 193, 396, 417, 213,
+ 377, 0, 0, 0, 195, 415, 393, 307, 277, 278,
+ 194, 0, 358, 235, 255, 226, 326, 412, 413, 225,
+ 449, 204, 432, 197, 0, 431, 319, 408, 416, 308,
+ 299, 196, 414, 306, 298, 283, 245, 265, 352, 293,
+ 353, 266, 315, 314, 316, 0, 191, 0, 390, 425,
+ 450, 210, 0, 0, 403, 441, 446, 0, 355, 211,
+ 256, 244, 351, 254, 286, 440, 442, 443, 445, 209,
+ 349, 262, 330, 420, 248, 428, 318, 205, 268, 386,
+ 282, 291, 0, 0, 336, 367, 214, 423, 387, 564,
+ 575, 570, 571, 568, 569, 563, 567, 566, 565, 578,
+ 555, 556, 557, 558, 560, 0, 572, 573, 559, 185,
+ 198, 287, 0, 356, 252, 448, 430, 426, 0, 0,
+ 230, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 187,
- 200, 282, 0, 349, 250, 432, 416, 414, 0, 0,
+ 0, 0, 0, 187, 188, 199, 207, 217, 229, 242,
+ 250, 260, 264, 267, 270, 271, 274, 279, 296, 301,
+ 302, 303, 304, 320, 321, 322, 325, 328, 329, 332,
+ 334, 335, 338, 344, 345, 346, 347, 348, 350, 357,
+ 361, 369, 370, 371, 372, 373, 375, 376, 380, 381,
+ 382, 383, 391, 395, 410, 411, 422, 434, 438, 261,
+ 418, 439, 0, 295, 0, 0, 297, 246, 263, 272,
+ 0, 429, 392, 203, 363, 253, 192, 220, 206, 227,
+ 241, 243, 276, 305, 311, 340, 343, 258, 238, 218,
+ 360, 215, 378, 398, 399, 400, 402, 309, 234, 327,
+ 0, 0, 0, 0, 519, 0, 0, 0, 237, 0,
+ 518, 0, 0, 0, 285, 0, 0, 0, 341, 0,
+ 379, 223, 294, 292, 407, 247, 240, 236, 222, 269,
+ 300, 339, 397, 333, 562, 289, 0, 0, 388, 312,
+ 0, 0, 0, 0, 0, 553, 554, 0, 0, 0,
+ 0, 0, 0, 0, 0, 275, 221, 190, 324, 389,
+ 251, 71, 0, 0, 182, 183, 184, 540, 1433, 542,
+ 543, 544, 545, 0, 0, 212, 541, 219, 546, 547,
+ 548, 0, 233, 273, 239, 232, 404, 0, 0, 0,
+ 516, 533, 0, 561, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 530, 531, 609, 0, 0, 0, 577,
+ 0, 532, 0, 0, 525, 526, 528, 527, 529, 534,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 259,
+ 0, 313, 0, 576, 0, 0, 435, 0, 0, 574,
+ 0, 0, 0, 0, 0, 284, 0, 281, 186, 201,
+ 0, 0, 323, 362, 368, 0, 0, 0, 224, 0,
+ 366, 337, 421, 208, 249, 359, 342, 364, 0, 0,
+ 365, 290, 409, 354, 419, 436, 437, 231, 317, 427,
+ 401, 433, 447, 202, 228, 331, 394, 424, 385, 310,
+ 405, 406, 280, 384, 257, 189, 288, 444, 200, 374,
+ 216, 193, 396, 417, 213, 377, 0, 0, 0, 195,
+ 415, 393, 307, 277, 278, 194, 0, 358, 235, 255,
+ 226, 326, 412, 413, 225, 449, 204, 432, 197, 0,
+ 431, 319, 408, 416, 308, 299, 196, 414, 306, 298,
+ 283, 245, 265, 352, 293, 353, 266, 315, 314, 316,
+ 0, 191, 0, 390, 425, 450, 210, 0, 0, 403,
+ 441, 446, 0, 355, 211, 256, 244, 351, 254, 286,
+ 440, 442, 443, 445, 209, 349, 262, 330, 420, 248,
+ 428, 318, 205, 268, 386, 282, 291, 0, 0, 336,
+ 367, 214, 423, 387, 564, 575, 570, 571, 568, 569,
+ 563, 567, 566, 565, 578, 555, 556, 557, 558, 560,
+ 0, 572, 573, 559, 185, 198, 287, 0, 356, 252,
+ 448, 430, 426, 0, 0, 230, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 187, 188,
+ 199, 207, 217, 229, 242, 250, 260, 264, 267, 270,
+ 271, 274, 279, 296, 301, 302, 303, 304, 320, 321,
+ 322, 325, 328, 329, 332, 334, 335, 338, 344, 345,
+ 346, 347, 348, 350, 357, 361, 369, 370, 371, 372,
+ 373, 375, 376, 380, 381, 382, 383, 391, 395, 410,
+ 411, 422, 434, 438, 261, 418, 439, 0, 295, 0,
+ 0, 297, 246, 263, 272, 0, 429, 392, 203, 363,
+ 253, 192, 220, 206, 227, 241, 243, 276, 305, 311,
+ 340, 343, 258, 238, 218, 360, 215, 378, 398, 399,
+ 400, 402, 309, 234, 327, 0, 0, 0, 0, 519,
+ 0, 0, 0, 237, 0, 518, 0, 0, 0, 285,
+ 0, 0, 0, 341, 0, 379, 223, 294, 292, 407,
+ 247, 240, 236, 222, 269, 300, 339, 397, 333, 562,
+ 289, 0, 0, 388, 312, 0, 0, 0, 0, 0,
+ 553, 554, 0, 0, 0, 0, 0, 0, 0, 0,
+ 275, 221, 190, 324, 389, 251, 71, 0, 0, 182,
+ 183, 184, 540, 1430, 542, 543, 544, 545, 0, 0,
+ 212, 541, 219, 546, 547, 548, 0, 233, 273, 239,
+ 232, 404, 0, 0, 0, 516, 533, 0, 561, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 530, 531,
+ 609, 0, 0, 0, 577, 0, 532, 0, 0, 525,
+ 526, 528, 527, 529, 534, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 259, 0, 313, 0, 576, 0,
+ 0, 435, 0, 0, 574, 0, 0, 0, 0, 0,
+ 284, 0, 281, 186, 201, 0, 0, 323, 362, 368,
+ 0, 0, 0, 224, 0, 366, 337, 421, 208, 249,
+ 359, 342, 364, 0, 0, 365, 290, 409, 354, 419,
+ 436, 437, 231, 317, 427, 401, 433, 447, 202, 228,
+ 331, 394, 424, 385, 310, 405, 406, 280, 384, 257,
+ 189, 288, 444, 200, 374, 216, 193, 396, 417, 213,
+ 377, 0, 0, 0, 195, 415, 393, 307, 277, 278,
+ 194, 0, 358, 235, 255, 226, 326, 412, 413, 225,
+ 449, 204, 432, 197, 0, 431, 319, 408, 416, 308,
+ 299, 196, 414, 306, 298, 283, 245, 265, 352, 293,
+ 353, 266, 315, 314, 316, 0, 191, 0, 390, 425,
+ 450, 210, 0, 0, 403, 441, 446, 0, 355, 211,
+ 256, 244, 351, 254, 286, 440, 442, 443, 445, 209,
+ 349, 262, 330, 420, 248, 428, 318, 205, 268, 386,
+ 282, 291, 0, 0, 336, 367, 214, 423, 387, 564,
+ 575, 570, 571, 568, 569, 563, 567, 566, 565, 578,
+ 555, 556, 557, 558, 560, 0, 572, 573, 559, 185,
+ 198, 287, 0, 356, 252, 448, 430, 426, 0, 0,
230, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 189, 190, 201, 208, 217, 229, 242,
- 248, 257, 260, 263, 266, 267, 269, 274, 291, 295,
- 296, 297, 298, 314, 315, 316, 319, 322, 323, 325,
- 327, 328, 331, 337, 338, 339, 340, 341, 343, 350,
- 354, 361, 362, 363, 364, 365, 366, 367, 371, 372,
- 373, 374, 382, 385, 399, 400, 410, 420, 424, 258,
- 407, 425, 0, 290, 0, 194, 220, 207, 227, 241,
- 243, 271, 299, 305, 333, 336, 255, 238, 218, 353,
- 216, 369, 388, 389, 390, 392, 303, 234, 33, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 321, 0, 0, 0, 0, 0, 0, 0, 0,
- 237, 0, 0, 0, 0, 0, 280, 0, 0, 334,
- 0, 370, 223, 289, 287, 396, 246, 240, 236, 222,
- 265, 294, 332, 387, 326, 0, 284, 0, 0, 379,
- 306, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 270, 221, 192, 318,
- 380, 249, 67, 0, 565, 174, 175, 176, 0, 0,
- 0, 0, 0, 0, 0, 0, 213, 0, 219, 0,
- 0, 0, 0, 233, 268, 239, 232, 394, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 256, 0, 307, 0, 0, 0, 421, 0, 0, 0,
- 0, 0, 0, 0, 0, 279, 0, 276, 188, 202,
- 0, 0, 317, 355, 360, 0, 0, 0, 224, 0,
- 358, 330, 409, 209, 247, 352, 335, 356, 0, 0,
- 357, 285, 398, 347, 408, 422, 423, 231, 311, 415,
- 391, 419, 431, 203, 228, 324, 384, 412, 376, 304,
- 395, 275, 375, 254, 191, 283, 195, 386, 406, 214,
- 368, 0, 0, 0, 197, 404, 383, 301, 272, 273,
- 196, 0, 351, 235, 252, 226, 320, 401, 402, 225,
- 433, 204, 418, 199, 205, 417, 313, 397, 405, 302,
- 293, 198, 403, 300, 292, 278, 245, 261, 345, 288,
- 346, 262, 309, 308, 310, 0, 193, 0, 381, 413,
- 434, 211, 0, 0, 393, 427, 430, 0, 348, 212,
- 253, 244, 344, 251, 281, 426, 428, 429, 210, 342,
- 259, 312, 206, 264, 377, 277, 286, 0, 0, 329,
- 359, 215, 411, 378, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 187, 200, 282, 0, 349, 250,
- 432, 416, 414, 0, 0, 230, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 189, 190,
- 201, 208, 217, 229, 242, 248, 257, 260, 263, 266,
- 267, 269, 274, 291, 295, 296, 297, 298, 314, 315,
- 316, 319, 322, 323, 325, 327, 328, 331, 337, 338,
- 339, 340, 341, 343, 350, 354, 361, 362, 363, 364,
- 365, 366, 367, 371, 372, 373, 374, 382, 385, 399,
- 400, 410, 420, 424, 258, 407, 425, 0, 290, 0,
- 194, 220, 207, 227, 241, 243, 271, 299, 305, 333,
- 336, 255, 238, 218, 353, 216, 369, 388, 389, 390,
- 392, 303, 234, 321, 0, 0, 0, 1373, 0, 0,
- 0, 0, 237, 0, 0, 0, 0, 0, 280, 0,
- 0, 334, 0, 370, 223, 289, 287, 396, 246, 240,
- 236, 222, 265, 294, 332, 387, 326, 0, 284, 0,
- 0, 379, 306, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 270, 221,
- 192, 318, 380, 249, 0, 0, 0, 174, 175, 176,
- 0, 1375, 0, 0, 0, 0, 0, 0, 213, 0,
- 219, 0, 0, 0, 0, 233, 268, 239, 232, 394,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 256, 0, 307, 0, 0, 0, 421, 0,
- 0, 0, 0, 0, 0, 0, 0, 279, 0, 276,
- 188, 202, 0, 0, 317, 355, 360, 0, 0, 0,
- 224, 0, 358, 330, 409, 209, 247, 352, 335, 356,
- 0, 1371, 357, 285, 398, 347, 408, 422, 423, 231,
- 311, 415, 391, 419, 431, 203, 228, 324, 384, 412,
- 376, 304, 395, 275, 375, 254, 191, 283, 195, 386,
- 406, 214, 368, 0, 0, 0, 197, 404, 383, 301,
- 272, 273, 196, 0, 351, 235, 252, 226, 320, 401,
- 402, 225, 433, 204, 418, 199, 205, 417, 313, 397,
- 405, 302, 293, 198, 403, 300, 292, 278, 245, 261,
- 345, 288, 346, 262, 309, 308, 310, 0, 193, 0,
- 381, 413, 434, 211, 0, 0, 393, 427, 430, 0,
- 348, 212, 253, 244, 344, 251, 281, 426, 428, 429,
- 210, 342, 259, 312, 206, 264, 377, 277, 286, 0,
- 0, 329, 359, 215, 411, 378, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 187, 200, 282, 0,
- 349, 250, 432, 416, 414, 0, 0, 230, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 189, 190, 201, 208, 217, 229, 242, 248, 257, 260,
- 263, 266, 267, 269, 274, 291, 295, 296, 297, 298,
- 314, 315, 316, 319, 322, 323, 325, 327, 328, 331,
- 337, 338, 339, 340, 341, 343, 350, 354, 361, 362,
- 363, 364, 365, 366, 367, 371, 372, 373, 374, 382,
- 385, 399, 400, 410, 420, 424, 258, 407, 425, 0,
- 290, 0, 194, 220, 207, 227, 241, 243, 271, 299,
- 305, 333, 336, 255, 238, 218, 353, 216, 369, 388,
- 389, 390, 392, 303, 234, 321, 0, 0, 0, 0,
+ 0, 0, 0, 187, 188, 199, 207, 217, 229, 242,
+ 250, 260, 264, 267, 270, 271, 274, 279, 296, 301,
+ 302, 303, 304, 320, 321, 322, 325, 328, 329, 332,
+ 334, 335, 338, 344, 345, 346, 347, 348, 350, 357,
+ 361, 369, 370, 371, 372, 373, 375, 376, 380, 381,
+ 382, 383, 391, 395, 410, 411, 422, 434, 438, 261,
+ 418, 439, 0, 295, 0, 0, 297, 246, 263, 272,
+ 0, 429, 392, 203, 363, 253, 192, 220, 206, 227,
+ 241, 243, 276, 305, 311, 340, 343, 258, 238, 218,
+ 360, 215, 378, 398, 399, 400, 402, 309, 234, 589,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 327, 0, 0, 0, 0, 519, 0, 0,
+ 0, 237, 0, 518, 0, 0, 0, 285, 0, 0,
+ 0, 341, 0, 379, 223, 294, 292, 407, 247, 240,
+ 236, 222, 269, 300, 339, 397, 333, 562, 289, 0,
+ 0, 388, 312, 0, 0, 0, 0, 0, 553, 554,
+ 0, 0, 0, 0, 0, 0, 0, 0, 275, 221,
+ 190, 324, 389, 251, 71, 0, 0, 182, 183, 184,
+ 540, 539, 542, 543, 544, 545, 0, 0, 212, 541,
+ 219, 546, 547, 548, 0, 233, 273, 239, 232, 404,
+ 0, 0, 0, 516, 533, 0, 561, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 530, 531, 0, 0,
+ 0, 0, 577, 0, 532, 0, 0, 525, 526, 528,
+ 527, 529, 534, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 259, 0, 313, 0, 576, 0, 0, 435,
+ 0, 0, 574, 0, 0, 0, 0, 0, 284, 0,
+ 281, 186, 201, 0, 0, 323, 362, 368, 0, 0,
+ 0, 224, 0, 366, 337, 421, 208, 249, 359, 342,
+ 364, 0, 0, 365, 290, 409, 354, 419, 436, 437,
+ 231, 317, 427, 401, 433, 447, 202, 228, 331, 394,
+ 424, 385, 310, 405, 406, 280, 384, 257, 189, 288,
+ 444, 200, 374, 216, 193, 396, 417, 213, 377, 0,
+ 0, 0, 195, 415, 393, 307, 277, 278, 194, 0,
+ 358, 235, 255, 226, 326, 412, 413, 225, 449, 204,
+ 432, 197, 0, 431, 319, 408, 416, 308, 299, 196,
+ 414, 306, 298, 283, 245, 265, 352, 293, 353, 266,
+ 315, 314, 316, 0, 191, 0, 390, 425, 450, 210,
+ 0, 0, 403, 441, 446, 0, 355, 211, 256, 244,
+ 351, 254, 286, 440, 442, 443, 445, 209, 349, 262,
+ 330, 420, 248, 428, 318, 205, 268, 386, 282, 291,
+ 0, 0, 336, 367, 214, 423, 387, 564, 575, 570,
+ 571, 568, 569, 563, 567, 566, 565, 578, 555, 556,
+ 557, 558, 560, 0, 572, 573, 559, 185, 198, 287,
+ 0, 356, 252, 448, 430, 426, 0, 0, 230, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 187, 188, 199, 207, 217, 229, 242, 250, 260,
+ 264, 267, 270, 271, 274, 279, 296, 301, 302, 303,
+ 304, 320, 321, 322, 325, 328, 329, 332, 334, 335,
+ 338, 344, 345, 346, 347, 348, 350, 357, 361, 369,
+ 370, 371, 372, 373, 375, 376, 380, 381, 382, 383,
+ 391, 395, 410, 411, 422, 434, 438, 261, 418, 439,
+ 0, 295, 0, 0, 297, 246, 263, 272, 0, 429,
+ 392, 203, 363, 253, 192, 220, 206, 227, 241, 243,
+ 276, 305, 311, 340, 343, 258, 238, 218, 360, 215,
+ 378, 398, 399, 400, 402, 309, 234, 327, 0, 0,
+ 0, 0, 519, 0, 0, 0, 237, 0, 518, 0,
+ 0, 0, 285, 0, 0, 0, 341, 0, 379, 223,
+ 294, 292, 407, 247, 240, 236, 222, 269, 300, 339,
+ 397, 333, 562, 289, 0, 0, 388, 312, 0, 0,
+ 0, 0, 0, 553, 554, 0, 0, 0, 0, 0,
+ 0, 0, 0, 275, 221, 190, 324, 389, 251, 71,
+ 0, 0, 182, 183, 184, 540, 539, 542, 543, 544,
+ 545, 0, 0, 212, 541, 219, 546, 547, 548, 0,
+ 233, 273, 239, 232, 404, 0, 0, 0, 516, 533,
+ 0, 561, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 530, 531, 0, 0, 0, 0, 577, 0, 532,
+ 0, 0, 525, 526, 528, 527, 529, 534, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 259, 0, 313,
+ 0, 576, 0, 0, 435, 0, 0, 574, 0, 0,
+ 0, 0, 0, 284, 0, 281, 186, 201, 0, 0,
+ 323, 362, 368, 0, 0, 0, 224, 0, 366, 337,
+ 421, 208, 249, 359, 342, 364, 0, 0, 365, 290,
+ 409, 354, 419, 436, 437, 231, 317, 427, 401, 433,
+ 447, 202, 228, 331, 394, 424, 385, 310, 405, 406,
+ 280, 384, 257, 189, 288, 444, 200, 374, 216, 193,
+ 396, 417, 213, 377, 0, 0, 0, 195, 415, 393,
+ 307, 277, 278, 194, 0, 358, 235, 255, 226, 326,
+ 412, 413, 225, 449, 204, 432, 197, 0, 431, 319,
+ 408, 416, 308, 299, 196, 414, 306, 298, 283, 245,
+ 265, 352, 293, 353, 266, 315, 314, 316, 0, 191,
+ 0, 390, 425, 450, 210, 0, 0, 403, 441, 446,
+ 0, 355, 211, 256, 244, 351, 254, 286, 440, 442,
+ 443, 445, 209, 349, 262, 330, 420, 248, 428, 318,
+ 205, 268, 386, 282, 291, 0, 0, 336, 367, 214,
+ 423, 387, 564, 575, 570, 571, 568, 569, 563, 567,
+ 566, 565, 578, 555, 556, 557, 558, 560, 0, 572,
+ 573, 559, 185, 198, 287, 0, 356, 252, 448, 430,
+ 426, 0, 0, 230, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 187, 188, 199, 207,
+ 217, 229, 242, 250, 260, 264, 267, 270, 271, 274,
+ 279, 296, 301, 302, 303, 304, 320, 321, 322, 325,
+ 328, 329, 332, 334, 335, 338, 344, 345, 346, 347,
+ 348, 350, 357, 361, 369, 370, 371, 372, 373, 375,
+ 376, 380, 381, 382, 383, 391, 395, 410, 411, 422,
+ 434, 438, 261, 418, 439, 0, 295, 0, 0, 297,
+ 246, 263, 272, 0, 429, 392, 203, 363, 253, 192,
+ 220, 206, 227, 241, 243, 276, 305, 311, 340, 343,
+ 258, 238, 218, 360, 215, 378, 398, 399, 400, 402,
+ 309, 234, 327, 0, 0, 0, 0, 0, 0, 0,
+ 0, 237, 0, 0, 0, 0, 0, 285, 0, 0,
+ 0, 341, 0, 379, 223, 294, 292, 407, 247, 240,
+ 236, 222, 269, 300, 339, 397, 333, 562, 289, 0,
+ 0, 388, 312, 0, 0, 0, 0, 0, 553, 554,
+ 0, 0, 0, 0, 0, 0, 0, 0, 275, 221,
+ 190, 324, 389, 251, 71, 0, 0, 182, 183, 184,
+ 540, 539, 542, 543, 544, 545, 0, 0, 212, 541,
+ 219, 546, 547, 548, 0, 233, 273, 239, 232, 404,
+ 0, 0, 0, 0, 533, 0, 561, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 530, 531, 0, 0,
+ 0, 0, 577, 0, 532, 0, 0, 525, 526, 528,
+ 527, 529, 534, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 259, 0, 313, 0, 576, 0, 0, 435,
+ 0, 0, 574, 0, 0, 0, 0, 0, 284, 0,
+ 281, 186, 201, 0, 0, 323, 362, 368, 0, 0,
+ 0, 224, 0, 366, 337, 421, 208, 249, 359, 342,
+ 364, 2202, 0, 365, 290, 409, 354, 419, 436, 437,
+ 231, 317, 427, 401, 433, 447, 202, 228, 331, 394,
+ 424, 385, 310, 405, 406, 280, 384, 257, 189, 288,
+ 444, 200, 374, 216, 193, 396, 417, 213, 377, 0,
+ 0, 0, 195, 415, 393, 307, 277, 278, 194, 0,
+ 358, 235, 255, 226, 326, 412, 413, 225, 449, 204,
+ 432, 197, 0, 431, 319, 408, 416, 308, 299, 196,
+ 414, 306, 298, 283, 245, 265, 352, 293, 353, 266,
+ 315, 314, 316, 0, 191, 0, 390, 425, 450, 210,
+ 0, 0, 403, 441, 446, 0, 355, 211, 256, 244,
+ 351, 254, 286, 440, 442, 443, 445, 209, 349, 262,
+ 330, 420, 248, 428, 318, 205, 268, 386, 282, 291,
+ 0, 0, 336, 367, 214, 423, 387, 564, 575, 570,
+ 571, 568, 569, 563, 567, 566, 565, 578, 555, 556,
+ 557, 558, 560, 0, 572, 573, 559, 185, 198, 287,
+ 0, 356, 252, 448, 430, 426, 0, 0, 230, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 187, 188, 199, 207, 217, 229, 242, 250, 260,
+ 264, 267, 270, 271, 274, 279, 296, 301, 302, 303,
+ 304, 320, 321, 322, 325, 328, 329, 332, 334, 335,
+ 338, 344, 345, 346, 347, 348, 350, 357, 361, 369,
+ 370, 371, 372, 373, 375, 376, 380, 381, 382, 383,
+ 391, 395, 410, 411, 422, 434, 438, 261, 418, 439,
+ 0, 295, 0, 0, 297, 246, 263, 272, 0, 429,
+ 392, 203, 363, 253, 192, 220, 206, 227, 241, 243,
+ 276, 305, 311, 340, 343, 258, 238, 218, 360, 215,
+ 378, 398, 399, 400, 402, 309, 234, 327, 0, 0,
+ 0, 0, 0, 0, 0, 0, 237, 0, 0, 0,
+ 0, 0, 285, 0, 0, 0, 341, 0, 379, 223,
+ 294, 292, 407, 247, 240, 236, 222, 269, 300, 339,
+ 397, 333, 562, 289, 0, 0, 388, 312, 0, 0,
+ 0, 0, 0, 553, 554, 0, 0, 0, 0, 0,
+ 0, 0, 0, 275, 221, 190, 324, 389, 251, 71,
+ 0, 596, 182, 183, 184, 540, 539, 542, 543, 544,
+ 545, 0, 0, 212, 541, 219, 546, 547, 548, 0,
+ 233, 273, 239, 232, 404, 0, 0, 0, 0, 533,
+ 0, 561, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 530, 531, 0, 0, 0, 0, 577, 0, 532,
+ 0, 0, 525, 526, 528, 527, 529, 534, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 259, 0, 313,
+ 0, 576, 0, 0, 435, 0, 0, 574, 0, 0,
+ 0, 0, 0, 284, 0, 281, 186, 201, 0, 0,
+ 323, 362, 368, 0, 0, 0, 224, 0, 366, 337,
+ 421, 208, 249, 359, 342, 364, 0, 0, 365, 290,
+ 409, 354, 419, 436, 437, 231, 317, 427, 401, 433,
+ 447, 202, 228, 331, 394, 424, 385, 310, 405, 406,
+ 280, 384, 257, 189, 288, 444, 200, 374, 216, 193,
+ 396, 417, 213, 377, 0, 0, 0, 195, 415, 393,
+ 307, 277, 278, 194, 0, 358, 235, 255, 226, 326,
+ 412, 413, 225, 449, 204, 432, 197, 0, 431, 319,
+ 408, 416, 308, 299, 196, 414, 306, 298, 283, 245,
+ 265, 352, 293, 353, 266, 315, 314, 316, 0, 191,
+ 0, 390, 425, 450, 210, 0, 0, 403, 441, 446,
+ 0, 355, 211, 256, 244, 351, 254, 286, 440, 442,
+ 443, 445, 209, 349, 262, 330, 420, 248, 428, 318,
+ 205, 268, 386, 282, 291, 0, 0, 336, 367, 214,
+ 423, 387, 564, 575, 570, 571, 568, 569, 563, 567,
+ 566, 565, 578, 555, 556, 557, 558, 560, 0, 572,
+ 573, 559, 185, 198, 287, 0, 356, 252, 448, 430,
+ 426, 0, 0, 230, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 187, 188, 199, 207,
+ 217, 229, 242, 250, 260, 264, 267, 270, 271, 274,
+ 279, 296, 301, 302, 303, 304, 320, 321, 322, 325,
+ 328, 329, 332, 334, 335, 338, 344, 345, 346, 347,
+ 348, 350, 357, 361, 369, 370, 371, 372, 373, 375,
+ 376, 380, 381, 382, 383, 391, 395, 410, 411, 422,
+ 434, 438, 261, 418, 439, 0, 295, 0, 0, 297,
+ 246, 263, 272, 0, 429, 392, 203, 363, 253, 192,
+ 220, 206, 227, 241, 243, 276, 305, 311, 340, 343,
+ 258, 238, 218, 360, 215, 378, 398, 399, 400, 402,
+ 309, 234, 327, 0, 0, 0, 0, 0, 0, 0,
+ 0, 237, 0, 0, 0, 0, 0, 285, 0, 0,
+ 0, 341, 0, 379, 223, 294, 292, 407, 247, 240,
+ 236, 222, 269, 300, 339, 397, 333, 562, 289, 0,
+ 0, 388, 312, 0, 0, 0, 0, 0, 553, 554,
+ 0, 0, 0, 0, 0, 0, 0, 0, 275, 221,
+ 190, 324, 389, 251, 71, 0, 0, 182, 183, 184,
+ 540, 539, 542, 543, 544, 545, 0, 0, 212, 541,
+ 219, 546, 547, 548, 0, 233, 273, 239, 232, 404,
+ 0, 0, 0, 0, 533, 0, 561, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 530, 531, 0, 0,
+ 0, 0, 577, 0, 532, 0, 0, 525, 526, 528,
+ 527, 529, 534, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 259, 0, 313, 0, 576, 0, 0, 435,
+ 0, 0, 574, 0, 0, 0, 0, 0, 284, 0,
+ 281, 186, 201, 0, 0, 323, 362, 368, 0, 0,
+ 0, 224, 0, 366, 337, 421, 208, 249, 359, 342,
+ 364, 0, 0, 365, 290, 409, 354, 419, 436, 437,
+ 231, 317, 427, 401, 433, 447, 202, 228, 331, 394,
+ 424, 385, 310, 405, 406, 280, 384, 257, 189, 288,
+ 444, 200, 374, 216, 193, 396, 417, 213, 377, 0,
+ 0, 0, 195, 415, 393, 307, 277, 278, 194, 0,
+ 358, 235, 255, 226, 326, 412, 413, 225, 449, 204,
+ 432, 197, 0, 431, 319, 408, 416, 308, 299, 196,
+ 414, 306, 298, 283, 245, 265, 352, 293, 353, 266,
+ 315, 314, 316, 0, 191, 0, 390, 425, 450, 210,
+ 0, 0, 403, 441, 446, 0, 355, 211, 256, 244,
+ 351, 254, 286, 440, 442, 443, 445, 209, 349, 262,
+ 330, 420, 248, 428, 318, 205, 268, 386, 282, 291,
+ 0, 0, 336, 367, 214, 423, 387, 564, 575, 570,
+ 571, 568, 569, 563, 567, 566, 565, 578, 555, 556,
+ 557, 558, 560, 0, 572, 573, 559, 185, 198, 287,
+ 0, 356, 252, 448, 430, 426, 0, 0, 230, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 187, 188, 199, 207, 217, 229, 242, 250, 260,
+ 264, 267, 270, 271, 274, 279, 296, 301, 302, 303,
+ 304, 320, 321, 322, 325, 328, 329, 332, 334, 335,
+ 338, 344, 345, 346, 347, 348, 350, 357, 361, 369,
+ 370, 371, 372, 373, 375, 376, 380, 381, 382, 383,
+ 391, 395, 410, 411, 422, 434, 438, 261, 418, 439,
+ 0, 295, 0, 0, 297, 246, 263, 272, 0, 429,
+ 392, 203, 363, 253, 192, 220, 206, 227, 241, 243,
+ 276, 305, 311, 340, 343, 258, 238, 218, 360, 215,
+ 378, 398, 399, 400, 402, 309, 234, 327, 0, 0,
+ 0, 0, 0, 0, 0, 0, 237, 0, 0, 0,
+ 0, 0, 285, 0, 0, 0, 341, 0, 379, 223,
+ 294, 292, 407, 247, 240, 236, 222, 269, 300, 339,
+ 397, 333, 0, 289, 0, 0, 388, 312, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 275, 221, 190, 324, 389, 251, 0,
+ 0, 0, 182, 183, 184, 0, 0, 0, 0, 0,
+ 0, 0, 0, 212, 0, 219, 0, 0, 0, 0,
+ 233, 273, 239, 232, 404, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 983, 982, 992,
+ 993, 985, 986, 987, 988, 989, 990, 991, 984, 0,
+ 0, 994, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 259, 0, 313,
+ 0, 0, 0, 0, 435, 0, 0, 0, 0, 0,
+ 0, 0, 0, 284, 0, 281, 186, 201, 0, 0,
+ 323, 362, 368, 0, 0, 0, 224, 0, 366, 337,
+ 421, 208, 249, 359, 342, 364, 0, 0, 365, 290,
+ 409, 354, 419, 436, 437, 231, 317, 427, 401, 433,
+ 447, 202, 228, 331, 394, 424, 385, 310, 405, 406,
+ 280, 384, 257, 189, 288, 444, 200, 374, 216, 193,
+ 396, 417, 213, 377, 0, 0, 0, 195, 415, 393,
+ 307, 277, 278, 194, 0, 358, 235, 255, 226, 326,
+ 412, 413, 225, 449, 204, 432, 197, 0, 431, 319,
+ 408, 416, 308, 299, 196, 414, 306, 298, 283, 245,
+ 265, 352, 293, 353, 266, 315, 314, 316, 0, 191,
+ 0, 390, 425, 450, 210, 0, 0, 403, 441, 446,
+ 0, 355, 211, 256, 244, 351, 254, 286, 440, 442,
+ 443, 445, 209, 349, 262, 330, 420, 248, 428, 318,
+ 205, 268, 386, 282, 291, 0, 0, 336, 367, 214,
+ 423, 387, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 185, 198, 287, 0, 356, 252, 448, 430,
+ 426, 0, 0, 230, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 187, 188, 199, 207,
+ 217, 229, 242, 250, 260, 264, 267, 270, 271, 274,
+ 279, 296, 301, 302, 303, 304, 320, 321, 322, 325,
+ 328, 329, 332, 334, 335, 338, 344, 345, 346, 347,
+ 348, 350, 357, 361, 369, 370, 371, 372, 373, 375,
+ 376, 380, 381, 382, 383, 391, 395, 410, 411, 422,
+ 434, 438, 261, 418, 439, 0, 295, 0, 0, 297,
+ 246, 263, 272, 0, 429, 392, 203, 363, 253, 192,
+ 220, 206, 227, 241, 243, 276, 305, 311, 340, 343,
+ 258, 238, 218, 360, 215, 378, 398, 399, 400, 402,
+ 309, 234, 327, 0, 0, 0, 0, 0, 0, 0,
+ 0, 237, 809, 0, 0, 0, 0, 285, 0, 0,
+ 0, 341, 0, 379, 223, 294, 292, 407, 247, 240,
+ 236, 222, 269, 300, 339, 397, 333, 0, 289, 0,
+ 0, 388, 312, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 275, 221,
+ 190, 324, 389, 251, 0, 0, 0, 182, 183, 184,
+ 0, 0, 0, 0, 0, 0, 0, 0, 212, 0,
+ 219, 0, 0, 0, 0, 233, 273, 239, 232, 404,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 259, 0, 313, 0, 0, 0, 808, 435,
+ 0, 0, 0, 0, 0, 0, 805, 806, 284, 774,
+ 281, 186, 201, 799, 803, 323, 362, 368, 0, 0,
+ 0, 224, 0, 366, 337, 421, 208, 249, 359, 342,
+ 364, 0, 0, 365, 290, 409, 354, 419, 436, 437,
+ 231, 317, 427, 401, 433, 447, 202, 228, 331, 394,
+ 424, 385, 310, 405, 406, 280, 384, 257, 189, 288,
+ 444, 200, 374, 216, 193, 396, 417, 213, 377, 0,
+ 0, 0, 195, 415, 393, 307, 277, 278, 194, 0,
+ 358, 235, 255, 226, 326, 412, 413, 225, 449, 204,
+ 432, 197, 0, 431, 319, 408, 416, 308, 299, 196,
+ 414, 306, 298, 283, 245, 265, 352, 293, 353, 266,
+ 315, 314, 316, 0, 191, 0, 390, 425, 450, 210,
+ 0, 0, 403, 441, 446, 0, 355, 211, 256, 244,
+ 351, 254, 286, 440, 442, 443, 445, 209, 349, 262,
+ 330, 420, 248, 428, 318, 205, 268, 386, 282, 291,
+ 0, 0, 336, 367, 214, 423, 387, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 185, 198, 287,
+ 0, 356, 252, 448, 430, 426, 0, 0, 230, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 187, 188, 199, 207, 217, 229, 242, 250, 260,
+ 264, 267, 270, 271, 274, 279, 296, 301, 302, 303,
+ 304, 320, 321, 322, 325, 328, 329, 332, 334, 335,
+ 338, 344, 345, 346, 347, 348, 350, 357, 361, 369,
+ 370, 371, 372, 373, 375, 376, 380, 381, 382, 383,
+ 391, 395, 410, 411, 422, 434, 438, 261, 418, 439,
+ 0, 295, 0, 0, 297, 246, 263, 272, 0, 429,
+ 392, 203, 363, 253, 192, 220, 206, 227, 241, 243,
+ 276, 305, 311, 340, 343, 258, 238, 218, 360, 215,
+ 378, 398, 399, 400, 402, 309, 234, 327, 0, 0,
+ 0, 1086, 0, 0, 0, 0, 237, 0, 0, 0,
+ 0, 0, 285, 0, 0, 0, 341, 0, 379, 223,
+ 294, 292, 407, 247, 240, 236, 222, 269, 300, 339,
+ 397, 333, 0, 289, 0, 0, 388, 312, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 275, 221, 190, 324, 389, 251, 0,
+ 0, 0, 182, 183, 184, 0, 1088, 0, 0, 0,
+ 0, 0, 0, 212, 0, 219, 0, 0, 0, 0,
+ 233, 273, 239, 232, 404, 972, 973, 971, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 974, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 259, 0, 313,
+ 0, 0, 0, 0, 435, 0, 0, 0, 0, 0,
+ 0, 0, 0, 284, 0, 281, 186, 201, 0, 0,
+ 323, 362, 368, 0, 0, 0, 224, 0, 366, 337,
+ 421, 208, 249, 359, 342, 364, 0, 0, 365, 290,
+ 409, 354, 419, 436, 437, 231, 317, 427, 401, 433,
+ 447, 202, 228, 331, 394, 424, 385, 310, 405, 406,
+ 280, 384, 257, 189, 288, 444, 200, 374, 216, 193,
+ 396, 417, 213, 377, 0, 0, 0, 195, 415, 393,
+ 307, 277, 278, 194, 0, 358, 235, 255, 226, 326,
+ 412, 413, 225, 449, 204, 432, 197, 0, 431, 319,
+ 408, 416, 308, 299, 196, 414, 306, 298, 283, 245,
+ 265, 352, 293, 353, 266, 315, 314, 316, 0, 191,
+ 0, 390, 425, 450, 210, 0, 0, 403, 441, 446,
+ 0, 355, 211, 256, 244, 351, 254, 286, 440, 442,
+ 443, 445, 209, 349, 262, 330, 420, 248, 428, 318,
+ 205, 268, 386, 282, 291, 0, 0, 336, 367, 214,
+ 423, 387, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 185, 198, 287, 0, 356, 252, 448, 430,
+ 426, 0, 0, 230, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 187, 188, 199, 207,
+ 217, 229, 242, 250, 260, 264, 267, 270, 271, 274,
+ 279, 296, 301, 302, 303, 304, 320, 321, 322, 325,
+ 328, 329, 332, 334, 335, 338, 344, 345, 346, 347,
+ 348, 350, 357, 361, 369, 370, 371, 372, 373, 375,
+ 376, 380, 381, 382, 383, 391, 395, 410, 411, 422,
+ 434, 438, 261, 418, 439, 0, 295, 0, 0, 297,
+ 246, 263, 272, 0, 429, 392, 203, 363, 253, 192,
+ 220, 206, 227, 241, 243, 276, 305, 311, 340, 343,
+ 258, 238, 218, 360, 215, 378, 398, 399, 400, 402,
+ 309, 234, 35, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 327, 0, 0, 0, 0,
0, 0, 0, 0, 237, 0, 0, 0, 0, 0,
- 280, 0, 0, 334, 0, 370, 223, 289, 287, 396,
- 246, 240, 236, 222, 265, 294, 332, 387, 326, 0,
- 284, 0, 0, 379, 306, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 270, 221, 192, 318, 380, 249, 0, 0, 0, 174,
- 175, 176, 0, 0, 0, 0, 0, 0, 0, 0,
- 213, 0, 219, 0, 0, 0, 0, 233, 268, 239,
- 232, 394, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 733, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 256, 0, 307, 0, 0, 0,
- 421, 0, 0, 0, 0, 0, 0, 0, 0, 279,
- 739, 276, 188, 202, 737, 0, 317, 355, 360, 0,
- 0, 0, 224, 0, 358, 330, 409, 209, 247, 352,
- 335, 356, 0, 0, 357, 285, 398, 347, 408, 422,
- 423, 231, 311, 415, 391, 419, 431, 203, 228, 324,
- 384, 412, 376, 304, 395, 275, 375, 254, 191, 283,
- 195, 386, 406, 214, 368, 0, 0, 0, 197, 404,
- 383, 301, 272, 273, 196, 0, 351, 235, 252, 226,
- 320, 401, 402, 225, 433, 204, 418, 199, 205, 417,
- 313, 397, 405, 302, 293, 198, 403, 300, 292, 278,
- 245, 261, 345, 288, 346, 262, 309, 308, 310, 0,
- 193, 0, 381, 413, 434, 211, 0, 0, 393, 427,
- 430, 0, 348, 212, 253, 244, 344, 251, 281, 426,
- 428, 429, 210, 342, 259, 312, 206, 264, 377, 277,
- 286, 0, 0, 329, 359, 215, 411, 378, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 187, 200,
- 282, 0, 349, 250, 432, 416, 414, 0, 0, 230,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 189, 190, 201, 208, 217, 229, 242, 248,
- 257, 260, 263, 266, 267, 269, 274, 291, 295, 296,
- 297, 298, 314, 315, 316, 319, 322, 323, 325, 327,
- 328, 331, 337, 338, 339, 340, 341, 343, 350, 354,
- 361, 362, 363, 364, 365, 366, 367, 371, 372, 373,
- 374, 382, 385, 399, 400, 410, 420, 424, 258, 407,
- 425, 0, 290, 0, 194, 220, 207, 227, 241, 243,
- 271, 299, 305, 333, 336, 255, 238, 218, 353, 216,
- 369, 388, 389, 390, 392, 303, 234, 321, 0, 0,
- 0, 1373, 0, 0, 0, 0, 237, 0, 0, 0,
- 0, 0, 280, 0, 0, 334, 0, 370, 223, 289,
- 287, 396, 246, 240, 236, 222, 265, 294, 332, 387,
- 326, 0, 284, 0, 0, 379, 306, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 270, 221, 192, 318, 380, 249, 0, 0,
- 0, 174, 175, 176, 0, 1375, 0, 0, 0, 0,
- 0, 0, 213, 0, 219, 0, 0, 0, 0, 233,
- 268, 239, 232, 394, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 256, 0, 307, 0,
- 0, 0, 421, 0, 0, 0, 0, 0, 0, 0,
- 0, 279, 0, 276, 188, 202, 0, 0, 317, 355,
- 360, 0, 0, 0, 224, 0, 358, 330, 409, 209,
- 247, 352, 335, 356, 0, 0, 357, 285, 398, 347,
- 408, 422, 423, 231, 311, 415, 391, 419, 431, 203,
- 228, 324, 384, 412, 376, 304, 395, 275, 375, 254,
- 191, 283, 195, 386, 406, 214, 368, 0, 0, 0,
- 197, 404, 383, 301, 272, 273, 196, 0, 351, 235,
- 252, 226, 320, 401, 402, 225, 433, 204, 418, 199,
- 205, 417, 313, 397, 405, 302, 293, 198, 403, 300,
- 292, 278, 245, 261, 345, 288, 346, 262, 309, 308,
- 310, 0, 193, 0, 381, 413, 434, 211, 0, 0,
- 393, 427, 430, 0, 348, 212, 253, 244, 344, 251,
- 281, 426, 428, 429, 210, 342, 259, 312, 206, 264,
- 377, 277, 286, 0, 0, 329, 359, 215, 411, 378,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 187, 200, 282, 0, 349, 250, 432, 416, 414, 0,
+ 285, 0, 0, 0, 341, 0, 379, 223, 294, 292,
+ 407, 247, 240, 236, 222, 269, 300, 339, 397, 333,
+ 0, 289, 0, 0, 388, 312, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 275, 221, 190, 324, 389, 251, 71, 0, 596,
+ 182, 183, 184, 0, 0, 0, 0, 0, 0, 0,
+ 0, 212, 0, 219, 0, 0, 0, 0, 233, 273,
+ 239, 232, 404, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 259, 0, 313, 0, 0,
+ 0, 0, 435, 0, 0, 0, 0, 0, 0, 0,
+ 0, 284, 0, 281, 186, 201, 0, 0, 323, 362,
+ 368, 0, 0, 0, 224, 0, 366, 337, 421, 208,
+ 249, 359, 342, 364, 0, 0, 365, 290, 409, 354,
+ 419, 436, 437, 231, 317, 427, 401, 433, 447, 202,
+ 228, 331, 394, 424, 385, 310, 405, 406, 280, 384,
+ 257, 189, 288, 444, 200, 374, 216, 193, 396, 417,
+ 213, 377, 0, 0, 0, 195, 415, 393, 307, 277,
+ 278, 194, 0, 358, 235, 255, 226, 326, 412, 413,
+ 225, 449, 204, 432, 197, 0, 431, 319, 408, 416,
+ 308, 299, 196, 414, 306, 298, 283, 245, 265, 352,
+ 293, 353, 266, 315, 314, 316, 0, 191, 0, 390,
+ 425, 450, 210, 0, 0, 403, 441, 446, 0, 355,
+ 211, 256, 244, 351, 254, 286, 440, 442, 443, 445,
+ 209, 349, 262, 330, 420, 248, 428, 318, 205, 268,
+ 386, 282, 291, 0, 0, 336, 367, 214, 423, 387,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 198, 287, 0, 356, 252, 448, 430, 426, 0,
0, 230, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 189, 190, 201, 208, 217, 229,
- 242, 248, 257, 260, 263, 266, 267, 269, 274, 291,
- 295, 296, 297, 298, 314, 315, 316, 319, 322, 323,
- 325, 327, 328, 331, 337, 338, 339, 340, 341, 343,
- 350, 354, 361, 362, 363, 364, 365, 366, 367, 371,
- 372, 373, 374, 382, 385, 399, 400, 410, 420, 424,
- 258, 407, 425, 0, 290, 0, 194, 220, 207, 227,
- 241, 243, 271, 299, 305, 333, 336, 255, 238, 218,
- 353, 216, 369, 388, 389, 390, 392, 303, 234, 321,
- 0, 0, 0, 0, 0, 0, 0, 0, 237, 0,
- 0, 0, 0, 0, 280, 0, 0, 334, 0, 370,
- 223, 289, 287, 396, 246, 240, 236, 222, 265, 294,
- 332, 387, 326, 0, 284, 0, 0, 379, 306, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 270, 221, 192, 318, 380, 249,
- 0, 0, 565, 174, 175, 176, 0, 0, 0, 0,
- 0, 0, 0, 0, 213, 0, 219, 0, 0, 0,
- 0, 233, 268, 239, 232, 394, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 256, 0,
- 307, 0, 0, 0, 421, 0, 0, 0, 0, 1986,
- 0, 0, 0, 279, 0, 276, 188, 202, 0, 0,
- 317, 355, 360, 0, 0, 0, 224, 0, 358, 330,
- 409, 209, 247, 352, 335, 356, 0, 0, 357, 285,
- 398, 347, 408, 422, 423, 231, 311, 415, 391, 419,
- 431, 203, 228, 324, 384, 412, 376, 304, 395, 275,
- 375, 254, 191, 283, 195, 386, 406, 214, 368, 0,
- 0, 0, 197, 404, 383, 301, 272, 273, 196, 0,
- 351, 235, 252, 226, 320, 401, 402, 225, 433, 204,
- 418, 199, 205, 417, 313, 397, 405, 302, 293, 198,
- 403, 300, 292, 278, 245, 261, 345, 288, 346, 262,
- 309, 308, 310, 0, 193, 0, 381, 413, 434, 211,
- 0, 0, 393, 427, 430, 0, 348, 212, 253, 244,
- 344, 251, 281, 426, 428, 429, 210, 342, 259, 312,
- 206, 264, 377, 277, 286, 0, 0, 329, 359, 215,
- 411, 378, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 187, 200, 282, 0, 349, 250, 432, 416,
- 414, 0, 0, 230, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 189, 190, 201, 208,
- 217, 229, 242, 248, 257, 260, 263, 266, 267, 269,
- 274, 291, 295, 296, 297, 298, 314, 315, 316, 319,
- 322, 323, 325, 327, 328, 331, 337, 338, 339, 340,
- 341, 343, 350, 354, 361, 362, 363, 364, 365, 366,
- 367, 371, 372, 373, 374, 382, 385, 399, 400, 410,
- 420, 424, 258, 407, 425, 0, 290, 0, 194, 220,
- 207, 227, 241, 243, 271, 299, 305, 333, 336, 255,
- 238, 218, 353, 216, 369, 388, 389, 390, 392, 303,
- 234, 33, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 321, 0, 0, 0, 0, 0,
- 0, 0, 0, 237, 0, 0, 0, 0, 0, 280,
- 0, 0, 334, 0, 370, 223, 289, 287, 396, 246,
- 240, 236, 222, 265, 294, 332, 387, 326, 0, 284,
- 0, 0, 379, 306, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 270,
- 221, 192, 318, 380, 249, 67, 0, 0, 174, 175,
- 176, 0, 0, 0, 0, 0, 0, 0, 0, 213,
- 0, 219, 0, 0, 0, 0, 233, 268, 239, 232,
- 394, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 256, 0, 307, 0, 0, 0, 421,
- 0, 0, 0, 0, 0, 0, 0, 0, 279, 0,
- 276, 188, 202, 0, 0, 317, 355, 360, 0, 0,
- 0, 224, 0, 358, 330, 409, 209, 247, 352, 335,
- 356, 0, 0, 357, 285, 398, 347, 408, 422, 423,
- 231, 311, 415, 391, 419, 431, 203, 228, 324, 384,
- 412, 376, 304, 395, 275, 375, 254, 191, 283, 195,
- 386, 406, 214, 368, 0, 0, 0, 197, 404, 383,
- 301, 272, 273, 196, 0, 351, 235, 252, 226, 320,
- 401, 402, 225, 433, 204, 418, 199, 205, 417, 313,
- 397, 405, 302, 293, 198, 403, 300, 292, 278, 245,
- 261, 345, 288, 346, 262, 309, 308, 310, 0, 193,
- 0, 381, 413, 434, 211, 0, 0, 393, 427, 430,
- 0, 348, 212, 253, 244, 344, 251, 281, 426, 428,
- 429, 210, 342, 259, 312, 206, 264, 377, 277, 286,
- 0, 0, 329, 359, 215, 411, 378, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 187, 200, 282,
- 0, 349, 250, 432, 416, 414, 0, 0, 230, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 189, 190, 201, 208, 217, 229, 242, 248, 257,
- 260, 263, 266, 267, 269, 274, 291, 295, 296, 297,
- 298, 314, 315, 316, 319, 322, 323, 325, 327, 328,
- 331, 337, 338, 339, 340, 341, 343, 350, 354, 361,
- 362, 363, 364, 365, 366, 367, 371, 372, 373, 374,
- 382, 385, 399, 400, 410, 420, 424, 258, 407, 425,
- 0, 290, 0, 194, 220, 207, 227, 241, 243, 271,
- 299, 305, 333, 336, 255, 238, 218, 353, 216, 369,
- 388, 389, 390, 392, 303, 234, 321, 0, 0, 0,
- 0, 0, 0, 0, 0, 237, 0, 0, 0, 0,
- 0, 280, 0, 0, 334, 0, 370, 223, 289, 287,
- 396, 246, 240, 236, 222, 265, 294, 332, 387, 326,
- 0, 284, 0, 0, 379, 306, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 270, 221, 192, 318, 380, 249, 0, 0, 0,
- 174, 175, 176, 0, 0, 1391, 0, 0, 1392, 0,
- 0, 213, 0, 219, 0, 0, 0, 0, 233, 268,
- 239, 232, 394, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 256, 0, 307, 0, 0,
- 0, 421, 0, 0, 0, 0, 0, 0, 0, 0,
- 279, 0, 276, 188, 202, 0, 0, 317, 355, 360,
- 0, 0, 0, 224, 0, 358, 330, 409, 209, 247,
- 352, 335, 356, 0, 0, 357, 285, 398, 347, 408,
- 422, 423, 231, 311, 415, 391, 419, 431, 203, 228,
- 324, 384, 412, 376, 304, 395, 275, 375, 254, 191,
- 283, 195, 386, 406, 214, 368, 0, 0, 0, 197,
- 404, 383, 301, 272, 273, 196, 0, 351, 235, 252,
- 226, 320, 401, 402, 225, 433, 204, 418, 199, 205,
- 417, 313, 397, 405, 302, 293, 198, 403, 300, 292,
- 278, 245, 261, 345, 288, 346, 262, 309, 308, 310,
- 0, 193, 0, 381, 413, 434, 211, 0, 0, 393,
- 427, 430, 0, 348, 212, 253, 244, 344, 251, 281,
- 426, 428, 429, 210, 342, 259, 312, 206, 264, 377,
- 277, 286, 0, 0, 329, 359, 215, 411, 378, 0,
+ 0, 0, 0, 0, 187, 188, 199, 207, 217, 229,
+ 242, 250, 260, 264, 267, 270, 271, 274, 279, 296,
+ 301, 302, 303, 304, 320, 321, 322, 325, 328, 329,
+ 332, 334, 335, 338, 344, 345, 346, 347, 348, 350,
+ 357, 361, 369, 370, 371, 372, 373, 375, 376, 380,
+ 381, 382, 383, 391, 395, 410, 411, 422, 434, 438,
+ 261, 418, 439, 0, 295, 0, 0, 297, 246, 263,
+ 272, 0, 429, 392, 203, 363, 253, 192, 220, 206,
+ 227, 241, 243, 276, 305, 311, 340, 343, 258, 238,
+ 218, 360, 215, 378, 398, 399, 400, 402, 309, 234,
+ 327, 0, 0, 0, 1460, 0, 0, 0, 0, 237,
+ 0, 0, 0, 0, 0, 285, 0, 0, 0, 341,
+ 0, 379, 223, 294, 292, 407, 247, 240, 236, 222,
+ 269, 300, 339, 397, 333, 0, 289, 0, 0, 388,
+ 312, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 275, 221, 190, 324,
+ 389, 251, 0, 0, 0, 182, 183, 184, 0, 1462,
+ 0, 0, 0, 0, 0, 0, 212, 0, 219, 0,
+ 0, 0, 0, 233, 273, 239, 232, 404, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 259, 0, 313, 0, 0, 0, 0, 435, 0, 0,
+ 0, 0, 0, 0, 0, 0, 284, 0, 281, 186,
+ 201, 0, 0, 323, 362, 368, 0, 0, 0, 224,
+ 0, 366, 337, 421, 208, 249, 359, 342, 364, 0,
+ 1458, 365, 290, 409, 354, 419, 436, 437, 231, 317,
+ 427, 401, 433, 447, 202, 228, 331, 394, 424, 385,
+ 310, 405, 406, 280, 384, 257, 189, 288, 444, 200,
+ 374, 216, 193, 396, 417, 213, 377, 0, 0, 0,
+ 195, 415, 393, 307, 277, 278, 194, 0, 358, 235,
+ 255, 226, 326, 412, 413, 225, 449, 204, 432, 197,
+ 0, 431, 319, 408, 416, 308, 299, 196, 414, 306,
+ 298, 283, 245, 265, 352, 293, 353, 266, 315, 314,
+ 316, 0, 191, 0, 390, 425, 450, 210, 0, 0,
+ 403, 441, 446, 0, 355, 211, 256, 244, 351, 254,
+ 286, 440, 442, 443, 445, 209, 349, 262, 330, 420,
+ 248, 428, 318, 205, 268, 386, 282, 291, 0, 0,
+ 336, 367, 214, 423, 387, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 185, 198, 287, 0, 356,
+ 252, 448, 430, 426, 0, 0, 230, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 187,
- 200, 282, 0, 349, 250, 432, 416, 414, 0, 0,
- 230, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 188, 199, 207, 217, 229, 242, 250, 260, 264, 267,
+ 270, 271, 274, 279, 296, 301, 302, 303, 304, 320,
+ 321, 322, 325, 328, 329, 332, 334, 335, 338, 344,
+ 345, 346, 347, 348, 350, 357, 361, 369, 370, 371,
+ 372, 373, 375, 376, 380, 381, 382, 383, 391, 395,
+ 410, 411, 422, 434, 438, 261, 418, 439, 0, 295,
+ 0, 0, 297, 246, 263, 272, 0, 429, 392, 203,
+ 363, 253, 192, 220, 206, 227, 241, 243, 276, 305,
+ 311, 340, 343, 258, 238, 218, 360, 215, 378, 398,
+ 399, 400, 402, 309, 234, 327, 0, 0, 0, 0,
+ 0, 0, 0, 0, 237, 0, 0, 0, 0, 0,
+ 285, 0, 0, 0, 341, 0, 379, 223, 294, 292,
+ 407, 247, 240, 236, 222, 269, 300, 339, 397, 333,
+ 0, 289, 0, 0, 388, 312, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 275, 221, 190, 324, 389, 251, 0, 0, 0,
+ 182, 183, 184, 0, 0, 0, 0, 0, 0, 0,
+ 0, 212, 0, 219, 0, 0, 0, 0, 233, 273,
+ 239, 232, 404, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 768, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 259, 0, 313, 0, 0,
+ 0, 0, 435, 0, 0, 0, 0, 0, 0, 0,
+ 0, 284, 774, 281, 186, 201, 772, 0, 323, 362,
+ 368, 0, 0, 0, 224, 0, 366, 337, 421, 208,
+ 249, 359, 342, 364, 0, 0, 365, 290, 409, 354,
+ 419, 436, 437, 231, 317, 427, 401, 433, 447, 202,
+ 228, 331, 394, 424, 385, 310, 405, 406, 280, 384,
+ 257, 189, 288, 444, 200, 374, 216, 193, 396, 417,
+ 213, 377, 0, 0, 0, 195, 415, 393, 307, 277,
+ 278, 194, 0, 358, 235, 255, 226, 326, 412, 413,
+ 225, 449, 204, 432, 197, 0, 431, 319, 408, 416,
+ 308, 299, 196, 414, 306, 298, 283, 245, 265, 352,
+ 293, 353, 266, 315, 314, 316, 0, 191, 0, 390,
+ 425, 450, 210, 0, 0, 403, 441, 446, 0, 355,
+ 211, 256, 244, 351, 254, 286, 440, 442, 443, 445,
+ 209, 349, 262, 330, 420, 248, 428, 318, 205, 268,
+ 386, 282, 291, 0, 0, 336, 367, 214, 423, 387,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 198, 287, 0, 356, 252, 448, 430, 426, 0,
+ 0, 230, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 189, 190, 201, 208, 217, 229, 242,
- 248, 257, 260, 263, 266, 267, 269, 274, 291, 295,
- 296, 297, 298, 314, 315, 316, 319, 322, 323, 325,
- 327, 328, 331, 337, 338, 339, 340, 341, 343, 350,
- 354, 361, 362, 363, 364, 365, 366, 367, 371, 372,
- 373, 374, 382, 385, 399, 400, 410, 420, 424, 258,
- 407, 425, 0, 290, 0, 194, 220, 207, 227, 241,
- 243, 271, 299, 305, 333, 336, 255, 238, 218, 353,
- 216, 369, 388, 389, 390, 392, 303, 234, 321, 0,
- 0, 0, 0, 0, 0, 0, 0, 237, 0, 1056,
- 0, 0, 0, 280, 0, 0, 334, 0, 370, 223,
- 289, 287, 396, 246, 240, 236, 222, 265, 294, 332,
- 387, 326, 0, 284, 0, 0, 379, 306, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 270, 221, 192, 318, 380, 249, 0,
- 0, 0, 174, 175, 176, 0, 1055, 0, 0, 0,
- 0, 0, 0, 213, 0, 219, 0, 0, 0, 0,
- 233, 268, 239, 232, 394, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 256, 0, 307,
- 0, 0, 0, 421, 0, 0, 0, 0, 0, 0,
- 0, 0, 279, 0, 276, 188, 202, 0, 0, 317,
- 355, 360, 0, 0, 0, 224, 0, 358, 330, 409,
- 209, 247, 352, 335, 356, 0, 0, 357, 285, 398,
- 347, 408, 422, 423, 231, 311, 415, 391, 419, 431,
- 203, 228, 324, 384, 412, 376, 304, 395, 275, 375,
- 254, 191, 283, 195, 386, 406, 214, 368, 0, 0,
- 0, 197, 404, 383, 301, 272, 273, 196, 0, 351,
- 235, 252, 226, 320, 401, 402, 225, 433, 204, 418,
- 199, 205, 417, 313, 397, 405, 302, 293, 198, 403,
- 300, 292, 278, 245, 261, 345, 288, 346, 262, 309,
- 308, 310, 0, 193, 0, 381, 413, 434, 211, 0,
- 0, 393, 427, 430, 0, 348, 212, 253, 244, 344,
- 251, 281, 426, 428, 429, 210, 342, 259, 312, 206,
- 264, 377, 277, 286, 0, 0, 329, 359, 215, 411,
- 378, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 187, 200, 282, 0, 349, 250, 432, 416, 414,
- 0, 0, 230, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 189, 190, 201, 208, 217,
- 229, 242, 248, 257, 260, 263, 266, 267, 269, 274,
- 291, 295, 296, 297, 298, 314, 315, 316, 319, 322,
- 323, 325, 327, 328, 331, 337, 338, 339, 340, 341,
- 343, 350, 354, 361, 362, 363, 364, 365, 366, 367,
- 371, 372, 373, 374, 382, 385, 399, 400, 410, 420,
- 424, 258, 407, 425, 0, 290, 0, 194, 220, 207,
- 227, 241, 243, 271, 299, 305, 333, 336, 255, 238,
- 218, 353, 216, 369, 388, 389, 390, 392, 303, 234,
- 321, 0, 0, 0, 0, 0, 0, 0, 0, 237,
- 0, 0, 0, 0, 0, 280, 0, 0, 334, 0,
- 370, 223, 289, 287, 396, 246, 240, 236, 222, 265,
- 294, 332, 387, 326, 0, 284, 0, 0, 379, 306,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 270, 221, 192, 318, 380,
- 249, 0, 0, 0, 174, 175, 176, 0, 0, 0,
- 0, 0, 0, 0, 0, 213, 0, 219, 0, 0,
- 0, 0, 233, 268, 239, 232, 394, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 256,
- 0, 307, 0, 0, 0, 421, 0, 0, 0, 0,
- 2072, 0, 0, 0, 279, 0, 276, 188, 202, 0,
- 0, 317, 355, 360, 0, 0, 0, 224, 0, 358,
- 330, 409, 209, 247, 352, 335, 356, 0, 0, 357,
- 285, 398, 347, 408, 422, 423, 231, 311, 415, 391,
- 419, 431, 203, 228, 324, 384, 412, 376, 304, 395,
- 275, 375, 254, 191, 283, 195, 386, 406, 214, 368,
- 0, 0, 0, 197, 404, 383, 301, 272, 273, 196,
- 0, 351, 235, 252, 226, 320, 401, 402, 225, 433,
- 204, 418, 199, 205, 417, 313, 397, 405, 302, 293,
- 198, 403, 300, 292, 278, 245, 261, 345, 288, 346,
- 262, 309, 308, 310, 0, 193, 0, 381, 413, 434,
- 211, 0, 0, 393, 427, 430, 0, 348, 212, 253,
- 244, 344, 251, 281, 426, 428, 429, 210, 342, 259,
- 312, 206, 264, 377, 277, 286, 0, 0, 329, 359,
- 215, 411, 378, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 187, 200, 282, 0, 349, 250, 432,
- 416, 414, 0, 0, 230, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 189, 190, 201,
- 208, 217, 229, 242, 248, 257, 260, 263, 266, 267,
- 269, 274, 291, 295, 296, 297, 298, 314, 315, 316,
- 319, 322, 323, 325, 327, 328, 331, 337, 338, 339,
- 340, 341, 343, 350, 354, 361, 362, 363, 364, 365,
- 366, 367, 371, 372, 373, 374, 382, 385, 399, 400,
- 410, 420, 424, 258, 407, 425, 0, 290, 0, 194,
- 220, 207, 227, 241, 243, 271, 299, 305, 333, 336,
- 255, 238, 218, 353, 216, 369, 388, 389, 390, 392,
- 303, 234, 321, 0, 0, 0, 0, 0, 0, 0,
- 0, 237, 0, 0, 0, 0, 0, 280, 0, 0,
- 334, 0, 370, 223, 289, 287, 396, 246, 240, 236,
- 222, 265, 294, 332, 387, 326, 0, 284, 0, 0,
- 379, 306, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 270, 221, 192,
- 318, 380, 249, 0, 0, 0, 174, 175, 176, 0,
- 0, 0, 0, 0, 0, 0, 0, 213, 0, 219,
- 0, 0, 0, 0, 233, 268, 239, 232, 394, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 256, 0, 307, 0, 0, 0, 421, 0, 0,
- 0, 0, 1986, 0, 0, 0, 279, 0, 276, 188,
- 202, 0, 0, 317, 355, 360, 0, 0, 0, 224,
- 0, 358, 330, 409, 209, 247, 352, 335, 356, 0,
- 0, 357, 285, 398, 347, 408, 422, 423, 231, 311,
- 415, 391, 419, 431, 203, 228, 324, 384, 412, 376,
- 304, 395, 275, 375, 254, 191, 283, 195, 386, 406,
- 214, 368, 0, 0, 0, 197, 404, 383, 301, 272,
- 273, 196, 0, 351, 235, 252, 226, 320, 401, 402,
- 225, 433, 204, 418, 199, 205, 417, 313, 397, 405,
- 302, 293, 198, 403, 300, 292, 278, 245, 261, 345,
- 288, 346, 262, 309, 308, 310, 0, 193, 0, 381,
- 413, 434, 211, 0, 0, 393, 427, 430, 0, 348,
- 212, 253, 244, 344, 251, 281, 426, 428, 429, 210,
- 342, 259, 312, 206, 264, 377, 277, 286, 0, 0,
- 329, 359, 215, 411, 378, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 187, 200, 282, 0, 349,
- 250, 432, 416, 414, 0, 0, 230, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 189,
- 190, 201, 208, 217, 229, 242, 248, 257, 260, 263,
- 266, 267, 269, 274, 291, 295, 296, 297, 298, 314,
- 315, 316, 319, 322, 323, 325, 327, 328, 331, 337,
- 338, 339, 340, 341, 343, 350, 354, 361, 362, 363,
- 364, 365, 366, 367, 371, 372, 373, 374, 382, 385,
- 399, 400, 410, 420, 424, 258, 407, 425, 0, 290,
- 0, 194, 220, 207, 227, 241, 243, 271, 299, 305,
- 333, 336, 255, 238, 218, 353, 216, 369, 388, 389,
- 390, 392, 303, 234, 321, 0, 0, 0, 0, 0,
- 0, 0, 0, 237, 0, 0, 0, 0, 0, 280,
- 0, 0, 334, 0, 370, 223, 289, 287, 396, 246,
- 240, 236, 222, 265, 294, 332, 387, 326, 0, 284,
- 0, 0, 379, 306, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 270,
- 221, 192, 318, 380, 249, 67, 0, 0, 174, 175,
- 176, 0, 0, 0, 0, 0, 0, 0, 0, 213,
- 0, 219, 0, 0, 0, 0, 233, 268, 239, 232,
- 394, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 256, 0, 307, 0, 0, 0, 421,
- 0, 0, 0, 0, 0, 0, 0, 0, 279, 0,
- 276, 188, 202, 0, 0, 317, 355, 360, 0, 0,
- 0, 224, 0, 358, 330, 409, 209, 247, 352, 335,
- 356, 0, 0, 357, 285, 398, 347, 408, 422, 423,
- 231, 311, 415, 391, 419, 431, 203, 228, 324, 384,
- 412, 376, 304, 395, 275, 375, 254, 191, 283, 195,
- 386, 406, 214, 368, 0, 0, 0, 197, 404, 383,
- 301, 272, 273, 196, 0, 351, 235, 252, 226, 320,
- 401, 402, 225, 433, 204, 418, 199, 205, 417, 313,
- 397, 405, 302, 293, 198, 403, 300, 292, 278, 245,
- 261, 345, 288, 346, 262, 309, 308, 310, 0, 193,
- 0, 381, 413, 434, 211, 0, 0, 393, 427, 430,
- 0, 348, 212, 253, 244, 344, 251, 281, 426, 428,
- 429, 210, 342, 259, 312, 206, 264, 377, 277, 286,
- 0, 0, 329, 359, 215, 411, 378, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 187, 200, 282,
- 0, 349, 250, 432, 416, 414, 0, 0, 230, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 189, 190, 201, 208, 217, 229, 242, 248, 257,
- 260, 263, 266, 267, 269, 274, 291, 295, 296, 297,
- 298, 314, 315, 316, 319, 322, 323, 325, 327, 328,
- 331, 337, 338, 339, 340, 341, 343, 350, 354, 361,
- 362, 363, 364, 365, 366, 367, 371, 372, 373, 374,
- 382, 385, 399, 400, 410, 420, 424, 258, 407, 425,
- 0, 290, 0, 194, 220, 207, 227, 241, 243, 271,
- 299, 305, 333, 336, 255, 238, 218, 353, 216, 369,
- 388, 389, 390, 392, 303, 234, 321, 0, 0, 0,
- 0, 0, 0, 0, 0, 237, 0, 0, 0, 0,
- 0, 280, 0, 0, 334, 0, 370, 223, 289, 287,
- 396, 246, 240, 236, 222, 265, 294, 332, 387, 326,
- 0, 284, 0, 0, 379, 306, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 270, 221, 192, 318, 380, 249, 0, 0, 0,
- 174, 175, 176, 0, 1375, 0, 0, 0, 0, 0,
- 0, 213, 0, 219, 0, 0, 0, 0, 233, 268,
- 239, 232, 394, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 256, 0, 307, 0, 0,
- 0, 421, 0, 0, 0, 0, 0, 0, 0, 0,
- 279, 0, 276, 188, 202, 0, 0, 317, 355, 360,
- 0, 0, 0, 224, 0, 358, 330, 409, 209, 247,
- 352, 335, 356, 0, 0, 357, 285, 398, 347, 408,
- 422, 423, 231, 311, 415, 391, 419, 431, 203, 228,
- 324, 384, 412, 376, 304, 395, 275, 375, 254, 191,
- 283, 195, 386, 406, 214, 368, 0, 0, 0, 197,
- 404, 383, 301, 272, 273, 196, 0, 351, 235, 252,
- 226, 320, 401, 402, 225, 433, 204, 418, 199, 205,
- 417, 313, 397, 405, 302, 293, 198, 403, 300, 292,
- 278, 245, 261, 345, 288, 346, 262, 309, 308, 310,
- 0, 193, 0, 381, 413, 434, 211, 0, 0, 393,
- 427, 430, 0, 348, 212, 253, 244, 344, 251, 281,
- 426, 428, 429, 210, 342, 259, 312, 206, 264, 377,
- 277, 286, 0, 0, 329, 359, 215, 411, 378, 0,
+ 0, 0, 0, 0, 187, 188, 199, 207, 217, 229,
+ 242, 250, 260, 264, 267, 270, 271, 274, 279, 296,
+ 301, 302, 303, 304, 320, 321, 322, 325, 328, 329,
+ 332, 334, 335, 338, 344, 345, 346, 347, 348, 350,
+ 357, 361, 369, 370, 371, 372, 373, 375, 376, 380,
+ 381, 382, 383, 391, 395, 410, 411, 422, 434, 438,
+ 261, 418, 439, 0, 295, 0, 0, 297, 246, 263,
+ 272, 0, 429, 392, 203, 363, 253, 192, 220, 206,
+ 227, 241, 243, 276, 305, 311, 340, 343, 258, 238,
+ 218, 360, 215, 378, 398, 399, 400, 402, 309, 234,
+ 327, 0, 0, 0, 1460, 0, 0, 0, 0, 237,
+ 0, 0, 0, 0, 0, 285, 0, 0, 0, 341,
+ 0, 379, 223, 294, 292, 407, 247, 240, 236, 222,
+ 269, 300, 339, 397, 333, 0, 289, 0, 0, 388,
+ 312, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 275, 221, 190, 324,
+ 389, 251, 0, 0, 0, 182, 183, 184, 0, 1462,
+ 0, 0, 0, 0, 0, 0, 212, 0, 219, 0,
+ 0, 0, 0, 233, 273, 239, 232, 404, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 259, 0, 313, 0, 0, 0, 0, 435, 0, 0,
+ 0, 0, 0, 0, 0, 0, 284, 0, 281, 186,
+ 201, 0, 0, 323, 362, 368, 0, 0, 0, 224,
+ 0, 366, 337, 421, 208, 249, 359, 342, 364, 0,
+ 0, 365, 290, 409, 354, 419, 436, 437, 231, 317,
+ 427, 401, 433, 447, 202, 228, 331, 394, 424, 385,
+ 310, 405, 406, 280, 384, 257, 189, 288, 444, 200,
+ 374, 216, 193, 396, 417, 213, 377, 0, 0, 0,
+ 195, 415, 393, 307, 277, 278, 194, 0, 358, 235,
+ 255, 226, 326, 412, 413, 225, 449, 204, 432, 197,
+ 0, 431, 319, 408, 416, 308, 299, 196, 414, 306,
+ 298, 283, 245, 265, 352, 293, 353, 266, 315, 314,
+ 316, 0, 191, 0, 390, 425, 450, 210, 0, 0,
+ 403, 441, 446, 0, 355, 211, 256, 244, 351, 254,
+ 286, 440, 442, 443, 445, 209, 349, 262, 330, 420,
+ 248, 428, 318, 205, 268, 386, 282, 291, 0, 0,
+ 336, 367, 214, 423, 387, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 185, 198, 287, 0, 356,
+ 252, 448, 430, 426, 0, 0, 230, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 187,
- 200, 282, 0, 349, 250, 432, 416, 414, 0, 0,
- 230, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 188, 199, 207, 217, 229, 242, 250, 260, 264, 267,
+ 270, 271, 274, 279, 296, 301, 302, 303, 304, 320,
+ 321, 322, 325, 328, 329, 332, 334, 335, 338, 344,
+ 345, 346, 347, 348, 350, 357, 361, 369, 370, 371,
+ 372, 373, 375, 376, 380, 381, 382, 383, 391, 395,
+ 410, 411, 422, 434, 438, 261, 418, 439, 0, 295,
+ 0, 0, 297, 246, 263, 272, 0, 429, 392, 203,
+ 363, 253, 192, 220, 206, 227, 241, 243, 276, 305,
+ 311, 340, 343, 258, 238, 218, 360, 215, 378, 398,
+ 399, 400, 402, 309, 234, 327, 0, 0, 0, 0,
+ 0, 0, 0, 0, 237, 0, 0, 0, 0, 0,
+ 285, 0, 0, 0, 341, 0, 379, 223, 294, 292,
+ 407, 247, 240, 236, 222, 269, 300, 339, 397, 333,
+ 0, 289, 0, 0, 388, 312, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 275, 221, 190, 324, 389, 251, 0, 0, 596,
+ 182, 183, 184, 0, 0, 0, 0, 0, 0, 0,
+ 0, 212, 0, 219, 0, 0, 0, 0, 233, 273,
+ 239, 232, 404, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 259, 0, 313, 0, 0,
+ 0, 0, 435, 0, 0, 0, 0, 2105, 0, 0,
+ 0, 284, 0, 281, 186, 201, 0, 0, 323, 362,
+ 368, 0, 0, 0, 224, 0, 366, 337, 421, 208,
+ 249, 359, 342, 364, 0, 0, 365, 290, 409, 354,
+ 419, 436, 437, 231, 317, 427, 401, 433, 447, 202,
+ 228, 331, 394, 424, 385, 310, 405, 406, 280, 384,
+ 257, 189, 288, 444, 200, 374, 216, 193, 396, 417,
+ 213, 377, 0, 0, 0, 195, 415, 393, 307, 277,
+ 278, 194, 0, 358, 235, 255, 226, 326, 412, 413,
+ 225, 449, 204, 432, 197, 0, 431, 319, 408, 416,
+ 308, 299, 196, 414, 306, 298, 283, 245, 265, 352,
+ 293, 353, 266, 315, 314, 316, 0, 191, 0, 390,
+ 425, 450, 210, 0, 0, 403, 441, 446, 0, 355,
+ 211, 256, 244, 351, 254, 286, 440, 442, 443, 445,
+ 209, 349, 262, 330, 420, 248, 428, 318, 205, 268,
+ 386, 282, 291, 0, 0, 336, 367, 214, 423, 387,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 198, 287, 0, 356, 252, 448, 430, 426, 0,
+ 0, 230, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 189, 190, 201, 208, 217, 229, 242,
- 248, 257, 260, 263, 266, 267, 269, 274, 291, 295,
- 296, 297, 298, 314, 315, 316, 319, 322, 323, 325,
- 327, 328, 331, 337, 338, 339, 340, 341, 343, 350,
- 354, 361, 362, 363, 364, 365, 366, 367, 371, 372,
- 373, 374, 382, 385, 399, 400, 410, 420, 424, 258,
- 407, 425, 0, 290, 0, 194, 220, 207, 227, 241,
- 243, 271, 299, 305, 333, 336, 255, 238, 218, 353,
- 216, 369, 388, 389, 390, 392, 303, 234, 321, 0,
+ 0, 0, 0, 0, 187, 188, 199, 207, 217, 229,
+ 242, 250, 260, 264, 267, 270, 271, 274, 279, 296,
+ 301, 302, 303, 304, 320, 321, 322, 325, 328, 329,
+ 332, 334, 335, 338, 344, 345, 346, 347, 348, 350,
+ 357, 361, 369, 370, 371, 372, 373, 375, 376, 380,
+ 381, 382, 383, 391, 395, 410, 411, 422, 434, 438,
+ 261, 418, 439, 0, 295, 0, 0, 297, 246, 263,
+ 272, 0, 429, 392, 203, 363, 253, 192, 220, 206,
+ 227, 241, 243, 276, 305, 311, 340, 343, 258, 238,
+ 218, 360, 215, 378, 398, 399, 400, 402, 309, 234,
+ 35, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 327, 0, 0, 0, 0, 0, 0,
+ 0, 0, 237, 0, 0, 0, 0, 0, 285, 0,
+ 0, 0, 341, 0, 379, 223, 294, 292, 407, 247,
+ 240, 236, 222, 269, 300, 339, 397, 333, 0, 289,
+ 0, 0, 388, 312, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 275,
+ 221, 190, 324, 389, 251, 71, 0, 0, 182, 183,
+ 184, 0, 0, 0, 0, 0, 0, 0, 0, 212,
+ 0, 219, 0, 0, 0, 0, 233, 273, 239, 232,
+ 404, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 259, 0, 313, 0, 0, 0, 0,
+ 435, 0, 0, 0, 0, 0, 0, 0, 0, 284,
+ 0, 281, 186, 201, 0, 0, 323, 362, 368, 0,
+ 0, 0, 224, 0, 366, 337, 421, 208, 249, 359,
+ 342, 364, 0, 0, 365, 290, 409, 354, 419, 436,
+ 437, 231, 317, 427, 401, 433, 447, 202, 228, 331,
+ 394, 424, 385, 310, 405, 406, 280, 384, 257, 189,
+ 288, 444, 200, 374, 216, 193, 396, 417, 213, 377,
+ 0, 0, 0, 195, 415, 393, 307, 277, 278, 194,
+ 0, 358, 235, 255, 226, 326, 412, 413, 225, 449,
+ 204, 432, 197, 0, 431, 319, 408, 416, 308, 299,
+ 196, 414, 306, 298, 283, 245, 265, 352, 293, 353,
+ 266, 315, 314, 316, 0, 191, 0, 390, 425, 450,
+ 210, 0, 0, 403, 441, 446, 0, 355, 211, 256,
+ 244, 351, 254, 286, 440, 442, 443, 445, 209, 349,
+ 262, 330, 420, 248, 428, 318, 205, 268, 386, 282,
+ 291, 0, 0, 336, 367, 214, 423, 387, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 185, 198,
+ 287, 0, 356, 252, 448, 430, 426, 0, 0, 230,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 187, 188, 199, 207, 217, 229, 242, 250,
+ 260, 264, 267, 270, 271, 274, 279, 296, 301, 302,
+ 303, 304, 320, 321, 322, 325, 328, 329, 332, 334,
+ 335, 338, 344, 345, 346, 347, 348, 350, 357, 361,
+ 369, 370, 371, 372, 373, 375, 376, 380, 381, 382,
+ 383, 391, 395, 410, 411, 422, 434, 438, 261, 418,
+ 439, 0, 295, 0, 0, 297, 246, 263, 272, 0,
+ 429, 392, 203, 363, 253, 192, 220, 206, 227, 241,
+ 243, 276, 305, 311, 340, 343, 258, 238, 218, 360,
+ 215, 378, 398, 399, 400, 402, 309, 234, 327, 0,
+ 0, 0, 0, 0, 0, 0, 0, 237, 0, 0,
+ 0, 0, 0, 285, 0, 0, 0, 341, 0, 379,
+ 223, 294, 292, 407, 247, 240, 236, 222, 269, 300,
+ 339, 397, 333, 0, 289, 0, 0, 388, 312, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 275, 221, 190, 324, 389, 251,
+ 0, 0, 0, 182, 183, 184, 0, 0, 1480, 0,
+ 0, 1481, 0, 0, 212, 0, 219, 0, 0, 0,
+ 0, 233, 273, 239, 232, 404, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 259, 0,
+ 313, 0, 0, 0, 0, 435, 0, 0, 0, 0,
+ 0, 0, 0, 0, 284, 0, 281, 186, 201, 0,
+ 0, 323, 362, 368, 0, 0, 0, 224, 0, 366,
+ 337, 421, 208, 249, 359, 342, 364, 0, 0, 365,
+ 290, 409, 354, 419, 436, 437, 231, 317, 427, 401,
+ 433, 447, 202, 228, 331, 394, 424, 385, 310, 405,
+ 406, 280, 384, 257, 189, 288, 444, 200, 374, 216,
+ 193, 396, 417, 213, 377, 0, 0, 0, 195, 415,
+ 393, 307, 277, 278, 194, 0, 358, 235, 255, 226,
+ 326, 412, 413, 225, 449, 204, 432, 197, 0, 431,
+ 319, 408, 416, 308, 299, 196, 414, 306, 298, 283,
+ 245, 265, 352, 293, 353, 266, 315, 314, 316, 0,
+ 191, 0, 390, 425, 450, 210, 0, 0, 403, 441,
+ 446, 0, 355, 211, 256, 244, 351, 254, 286, 440,
+ 442, 443, 445, 209, 349, 262, 330, 420, 248, 428,
+ 318, 205, 268, 386, 282, 291, 0, 0, 336, 367,
+ 214, 423, 387, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 185, 198, 287, 0, 356, 252, 448,
+ 430, 426, 0, 0, 230, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 187, 188, 199,
+ 207, 217, 229, 242, 250, 260, 264, 267, 270, 271,
+ 274, 279, 296, 301, 302, 303, 304, 320, 321, 322,
+ 325, 328, 329, 332, 334, 335, 338, 344, 345, 346,
+ 347, 348, 350, 357, 361, 369, 370, 371, 372, 373,
+ 375, 376, 380, 381, 382, 383, 391, 395, 410, 411,
+ 422, 434, 438, 261, 418, 439, 0, 295, 0, 0,
+ 297, 246, 263, 272, 0, 429, 392, 203, 363, 253,
+ 192, 220, 206, 227, 241, 243, 276, 305, 311, 340,
+ 343, 258, 238, 218, 360, 215, 378, 398, 399, 400,
+ 402, 309, 234, 327, 0, 0, 0, 0, 0, 0,
+ 0, 0, 237, 0, 1119, 0, 0, 0, 285, 0,
+ 0, 0, 341, 0, 379, 223, 294, 292, 407, 247,
+ 240, 236, 222, 269, 300, 339, 397, 333, 0, 289,
+ 0, 0, 388, 312, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 275,
+ 221, 190, 324, 389, 251, 0, 0, 0, 182, 183,
+ 184, 0, 1118, 0, 0, 0, 0, 0, 0, 212,
+ 0, 219, 0, 0, 0, 0, 233, 273, 239, 232,
+ 404, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 259, 0, 313, 0, 0, 0, 0,
+ 435, 0, 0, 0, 0, 0, 0, 0, 0, 284,
+ 0, 281, 186, 201, 0, 0, 323, 362, 368, 0,
+ 0, 0, 224, 0, 366, 337, 421, 208, 249, 359,
+ 342, 364, 0, 0, 365, 290, 409, 354, 419, 436,
+ 437, 231, 317, 427, 401, 433, 447, 202, 228, 331,
+ 394, 424, 385, 310, 405, 406, 280, 384, 257, 189,
+ 288, 444, 200, 374, 216, 193, 396, 417, 213, 377,
+ 0, 0, 0, 195, 415, 393, 307, 277, 278, 194,
+ 0, 358, 235, 255, 226, 326, 412, 413, 225, 449,
+ 204, 432, 197, 0, 431, 319, 408, 416, 308, 299,
+ 196, 414, 306, 298, 283, 245, 265, 352, 293, 353,
+ 266, 315, 314, 316, 0, 191, 0, 390, 425, 450,
+ 210, 0, 0, 403, 441, 446, 0, 355, 211, 256,
+ 244, 351, 254, 286, 440, 442, 443, 445, 209, 349,
+ 262, 330, 420, 248, 428, 318, 205, 268, 386, 282,
+ 291, 0, 0, 336, 367, 214, 423, 387, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 185, 198,
+ 287, 0, 356, 252, 448, 430, 426, 0, 0, 230,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 187, 188, 199, 207, 217, 229, 242, 250,
+ 260, 264, 267, 270, 271, 274, 279, 296, 301, 302,
+ 303, 304, 320, 321, 322, 325, 328, 329, 332, 334,
+ 335, 338, 344, 345, 346, 347, 348, 350, 357, 361,
+ 369, 370, 371, 372, 373, 375, 376, 380, 381, 382,
+ 383, 391, 395, 410, 411, 422, 434, 438, 261, 418,
+ 439, 0, 295, 0, 0, 297, 246, 263, 272, 0,
+ 429, 392, 203, 363, 253, 192, 220, 206, 227, 241,
+ 243, 276, 305, 311, 340, 343, 258, 238, 218, 360,
+ 215, 378, 398, 399, 400, 402, 309, 234, 327, 0,
+ 0, 0, 0, 0, 0, 0, 0, 237, 0, 0,
+ 0, 0, 0, 285, 0, 0, 0, 341, 0, 379,
+ 223, 294, 292, 407, 247, 240, 236, 222, 269, 300,
+ 339, 397, 333, 0, 289, 0, 0, 388, 312, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 275, 221, 190, 324, 389, 251,
+ 0, 0, 0, 182, 183, 184, 0, 0, 0, 0,
+ 0, 0, 0, 0, 212, 0, 219, 0, 0, 0,
+ 0, 233, 273, 239, 232, 404, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 259, 0,
+ 313, 0, 0, 0, 0, 435, 0, 0, 0, 0,
+ 2186, 0, 0, 0, 284, 0, 281, 186, 201, 0,
+ 0, 323, 362, 368, 0, 0, 0, 224, 0, 366,
+ 337, 421, 208, 249, 359, 342, 364, 0, 0, 365,
+ 290, 409, 354, 419, 436, 437, 231, 317, 427, 401,
+ 433, 447, 202, 228, 331, 394, 424, 385, 310, 405,
+ 406, 280, 384, 257, 189, 288, 444, 200, 374, 216,
+ 193, 396, 417, 213, 377, 0, 0, 0, 195, 415,
+ 393, 307, 277, 278, 194, 0, 358, 235, 255, 226,
+ 326, 412, 413, 225, 449, 204, 432, 197, 0, 431,
+ 319, 408, 416, 308, 299, 196, 414, 306, 298, 283,
+ 245, 265, 352, 293, 353, 266, 315, 314, 316, 0,
+ 191, 0, 390, 425, 450, 210, 0, 0, 403, 441,
+ 446, 0, 355, 211, 256, 244, 351, 254, 286, 440,
+ 442, 443, 445, 209, 349, 262, 330, 420, 248, 428,
+ 318, 205, 268, 386, 282, 291, 0, 0, 336, 367,
+ 214, 423, 387, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 185, 198, 287, 0, 356, 252, 448,
+ 430, 426, 0, 0, 230, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 187, 188, 199,
+ 207, 217, 229, 242, 250, 260, 264, 267, 270, 271,
+ 274, 279, 296, 301, 302, 303, 304, 320, 321, 322,
+ 325, 328, 329, 332, 334, 335, 338, 344, 345, 346,
+ 347, 348, 350, 357, 361, 369, 370, 371, 372, 373,
+ 375, 376, 380, 381, 382, 383, 391, 395, 410, 411,
+ 422, 434, 438, 261, 418, 439, 0, 295, 0, 0,
+ 297, 246, 263, 272, 0, 429, 392, 203, 363, 253,
+ 192, 220, 206, 227, 241, 243, 276, 305, 311, 340,
+ 343, 258, 238, 218, 360, 215, 378, 398, 399, 400,
+ 402, 309, 234, 327, 0, 0, 0, 0, 0, 0,
+ 0, 0, 237, 0, 0, 0, 0, 0, 285, 0,
+ 0, 0, 341, 0, 379, 223, 294, 292, 407, 247,
+ 240, 236, 222, 269, 300, 339, 397, 333, 0, 289,
+ 0, 0, 388, 312, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 275,
+ 221, 190, 324, 389, 251, 0, 0, 0, 182, 183,
+ 184, 0, 0, 0, 0, 0, 0, 0, 0, 212,
+ 0, 219, 0, 0, 0, 0, 233, 273, 239, 232,
+ 404, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 259, 0, 313, 0, 0, 0, 0,
+ 435, 0, 0, 0, 0, 2105, 0, 0, 0, 284,
+ 0, 281, 186, 201, 0, 0, 323, 362, 368, 0,
+ 0, 0, 224, 0, 366, 337, 421, 208, 249, 359,
+ 342, 364, 0, 0, 365, 290, 409, 354, 419, 436,
+ 437, 231, 317, 427, 401, 433, 447, 202, 228, 331,
+ 394, 424, 385, 310, 405, 406, 280, 384, 257, 189,
+ 288, 444, 200, 374, 216, 193, 396, 417, 213, 377,
+ 0, 0, 0, 195, 415, 393, 307, 277, 278, 194,
+ 0, 358, 235, 255, 226, 326, 412, 413, 225, 449,
+ 204, 432, 197, 0, 431, 319, 408, 416, 308, 299,
+ 196, 414, 306, 298, 283, 245, 265, 352, 293, 353,
+ 266, 315, 314, 316, 0, 191, 0, 390, 425, 450,
+ 210, 0, 0, 403, 441, 446, 0, 355, 211, 256,
+ 244, 351, 254, 286, 440, 442, 443, 445, 209, 349,
+ 262, 330, 420, 248, 428, 318, 205, 268, 386, 282,
+ 291, 0, 0, 336, 367, 214, 423, 387, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 185, 198,
+ 287, 0, 356, 252, 448, 430, 426, 0, 0, 230,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 187, 188, 199, 207, 217, 229, 242, 250,
+ 260, 264, 267, 270, 271, 274, 279, 296, 301, 302,
+ 303, 304, 320, 321, 322, 325, 328, 329, 332, 334,
+ 335, 338, 344, 345, 346, 347, 348, 350, 357, 361,
+ 369, 370, 371, 372, 373, 375, 376, 380, 381, 382,
+ 383, 391, 395, 410, 411, 422, 434, 438, 261, 418,
+ 439, 0, 295, 0, 0, 297, 246, 263, 272, 0,
+ 429, 392, 203, 363, 253, 192, 220, 206, 227, 241,
+ 243, 276, 305, 311, 340, 343, 258, 238, 218, 360,
+ 215, 378, 398, 399, 400, 402, 309, 234, 327, 0,
0, 0, 0, 0, 0, 0, 0, 237, 0, 0,
- 0, 0, 0, 280, 0, 0, 334, 0, 370, 223,
- 289, 287, 396, 246, 240, 236, 222, 265, 294, 332,
- 387, 326, 0, 284, 0, 0, 379, 306, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 270, 221, 192, 318, 380, 249, 0,
- 0, 0, 174, 175, 176, 0, 1025, 0, 0, 0,
- 0, 0, 0, 213, 0, 219, 0, 0, 0, 0,
- 233, 268, 239, 232, 394, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 256, 0, 307,
- 0, 0, 0, 421, 0, 0, 0, 0, 0, 0,
- 0, 0, 279, 0, 276, 188, 202, 0, 0, 317,
- 355, 360, 0, 0, 0, 224, 0, 358, 330, 409,
- 209, 247, 352, 335, 356, 0, 0, 357, 285, 398,
- 347, 408, 422, 423, 231, 311, 415, 391, 419, 431,
- 203, 228, 324, 384, 412, 376, 304, 395, 275, 375,
- 254, 191, 283, 195, 386, 406, 214, 368, 0, 0,
- 0, 197, 404, 383, 301, 272, 273, 196, 0, 351,
- 235, 252, 226, 320, 401, 402, 225, 433, 204, 418,
- 199, 205, 417, 313, 397, 405, 302, 293, 198, 403,
- 300, 292, 278, 245, 261, 345, 288, 346, 262, 309,
- 308, 310, 0, 193, 0, 381, 413, 434, 211, 0,
- 0, 393, 427, 430, 0, 348, 212, 253, 244, 344,
- 251, 281, 426, 428, 429, 210, 342, 259, 312, 206,
- 264, 377, 277, 286, 0, 0, 329, 359, 215, 411,
- 378, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 187, 200, 282, 0, 349, 250, 432, 416, 414,
- 0, 0, 230, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 189, 190, 201, 208, 217,
- 229, 242, 248, 257, 260, 263, 266, 267, 269, 274,
- 291, 295, 296, 297, 298, 314, 315, 316, 319, 322,
- 323, 325, 327, 328, 331, 337, 338, 339, 340, 341,
- 343, 350, 354, 361, 362, 363, 364, 365, 366, 367,
- 371, 372, 373, 374, 382, 385, 399, 400, 410, 420,
- 424, 258, 407, 425, 0, 290, 0, 194, 220, 207,
- 227, 241, 243, 271, 299, 305, 333, 336, 255, 238,
- 218, 353, 216, 369, 388, 389, 390, 392, 303, 234,
- 321, 0, 1175, 0, 0, 0, 0, 0, 0, 237,
- 0, 0, 0, 0, 0, 280, 0, 0, 334, 0,
- 370, 223, 289, 287, 396, 246, 240, 236, 222, 265,
- 294, 332, 387, 326, 0, 284, 0, 0, 379, 306,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 270, 221, 192, 318, 380,
- 249, 0, 0, 0, 174, 175, 176, 0, 0, 0,
- 0, 0, 0, 0, 0, 213, 0, 219, 0, 0,
- 0, 0, 233, 268, 239, 232, 394, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 256,
- 0, 307, 0, 0, 0, 421, 0, 0, 0, 0,
- 0, 0, 0, 0, 279, 0, 276, 188, 202, 0,
- 0, 317, 355, 360, 0, 0, 0, 224, 0, 358,
- 330, 409, 209, 247, 352, 335, 356, 0, 0, 357,
- 285, 398, 347, 408, 422, 423, 231, 311, 415, 391,
- 419, 431, 203, 228, 324, 384, 412, 376, 304, 395,
- 275, 375, 254, 191, 283, 195, 386, 406, 214, 368,
- 0, 0, 0, 197, 404, 383, 301, 272, 273, 196,
- 0, 351, 235, 252, 226, 320, 401, 402, 225, 433,
- 204, 418, 199, 205, 417, 313, 397, 405, 302, 293,
- 198, 403, 300, 292, 278, 245, 261, 345, 288, 346,
- 262, 309, 308, 310, 0, 193, 0, 381, 413, 434,
- 211, 0, 0, 393, 427, 430, 0, 348, 212, 253,
- 244, 344, 251, 281, 426, 428, 429, 210, 342, 259,
- 312, 206, 264, 377, 277, 286, 0, 0, 329, 359,
- 215, 411, 378, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 187, 200, 282, 0, 349, 250, 432,
- 416, 414, 0, 0, 230, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 189, 190, 201,
- 208, 217, 229, 242, 248, 257, 260, 263, 266, 267,
- 269, 274, 291, 295, 296, 297, 298, 314, 315, 316,
- 319, 322, 323, 325, 327, 328, 331, 337, 338, 339,
- 340, 341, 343, 350, 354, 361, 362, 363, 364, 365,
- 366, 367, 371, 372, 373, 374, 382, 385, 399, 400,
- 410, 420, 424, 258, 407, 425, 0, 290, 0, 194,
- 220, 207, 227, 241, 243, 271, 299, 305, 333, 336,
- 255, 238, 218, 353, 216, 369, 388, 389, 390, 392,
- 303, 234, 321, 0, 1173, 0, 0, 0, 0, 0,
- 0, 237, 0, 0, 0, 0, 0, 280, 0, 0,
- 334, 0, 370, 223, 289, 287, 396, 246, 240, 236,
- 222, 265, 294, 332, 387, 326, 0, 284, 0, 0,
- 379, 306, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 270, 221, 192,
- 318, 380, 249, 0, 0, 0, 174, 175, 176, 0,
- 0, 0, 0, 0, 0, 0, 0, 213, 0, 219,
- 0, 0, 0, 0, 233, 268, 239, 232, 394, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 256, 0, 307, 0, 0, 0, 421, 0, 0,
- 0, 0, 0, 0, 0, 0, 279, 0, 276, 188,
- 202, 0, 0, 317, 355, 360, 0, 0, 0, 224,
- 0, 358, 330, 409, 209, 247, 352, 335, 356, 0,
- 0, 357, 285, 398, 347, 408, 422, 423, 231, 311,
- 415, 391, 419, 431, 203, 228, 324, 384, 412, 376,
- 304, 395, 275, 375, 254, 191, 283, 195, 386, 406,
- 214, 368, 0, 0, 0, 197, 404, 383, 301, 272,
- 273, 196, 0, 351, 235, 252, 226, 320, 401, 402,
- 225, 433, 204, 418, 199, 205, 417, 313, 397, 405,
- 302, 293, 198, 403, 300, 292, 278, 245, 261, 345,
- 288, 346, 262, 309, 308, 310, 0, 193, 0, 381,
- 413, 434, 211, 0, 0, 393, 427, 430, 0, 348,
- 212, 253, 244, 344, 251, 281, 426, 428, 429, 210,
- 342, 259, 312, 206, 264, 377, 277, 286, 0, 0,
- 329, 359, 215, 411, 378, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 187, 200, 282, 0, 349,
- 250, 432, 416, 414, 0, 0, 230, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 189,
- 190, 201, 208, 217, 229, 242, 248, 257, 260, 263,
- 266, 267, 269, 274, 291, 295, 296, 297, 298, 314,
- 315, 316, 319, 322, 323, 325, 327, 328, 331, 337,
- 338, 339, 340, 341, 343, 350, 354, 361, 362, 363,
- 364, 365, 366, 367, 371, 372, 373, 374, 382, 385,
- 399, 400, 410, 420, 424, 258, 407, 425, 0, 290,
- 0, 194, 220, 207, 227, 241, 243, 271, 299, 305,
- 333, 336, 255, 238, 218, 353, 216, 369, 388, 389,
- 390, 392, 303, 234, 321, 0, 1171, 0, 0, 0,
- 0, 0, 0, 237, 0, 0, 0, 0, 0, 280,
- 0, 0, 334, 0, 370, 223, 289, 287, 396, 246,
- 240, 236, 222, 265, 294, 332, 387, 326, 0, 284,
- 0, 0, 379, 306, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 270,
- 221, 192, 318, 380, 249, 0, 0, 0, 174, 175,
- 176, 0, 0, 0, 0, 0, 0, 0, 0, 213,
- 0, 219, 0, 0, 0, 0, 233, 268, 239, 232,
- 394, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 256, 0, 307, 0, 0, 0, 421,
- 0, 0, 0, 0, 0, 0, 0, 0, 279, 0,
- 276, 188, 202, 0, 0, 317, 355, 360, 0, 0,
- 0, 224, 0, 358, 330, 409, 209, 247, 352, 335,
- 356, 0, 0, 357, 285, 398, 347, 408, 422, 423,
- 231, 311, 415, 391, 419, 431, 203, 228, 324, 384,
- 412, 376, 304, 395, 275, 375, 254, 191, 283, 195,
- 386, 406, 214, 368, 0, 0, 0, 197, 404, 383,
- 301, 272, 273, 196, 0, 351, 235, 252, 226, 320,
- 401, 402, 225, 433, 204, 418, 199, 205, 417, 313,
- 397, 405, 302, 293, 198, 403, 300, 292, 278, 245,
- 261, 345, 288, 346, 262, 309, 308, 310, 0, 193,
- 0, 381, 413, 434, 211, 0, 0, 393, 427, 430,
- 0, 348, 212, 253, 244, 344, 251, 281, 426, 428,
- 429, 210, 342, 259, 312, 206, 264, 377, 277, 286,
- 0, 0, 329, 359, 215, 411, 378, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 187, 200, 282,
- 0, 349, 250, 432, 416, 414, 0, 0, 230, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 189, 190, 201, 208, 217, 229, 242, 248, 257,
- 260, 263, 266, 267, 269, 274, 291, 295, 296, 297,
- 298, 314, 315, 316, 319, 322, 323, 325, 327, 328,
- 331, 337, 338, 339, 340, 341, 343, 350, 354, 361,
- 362, 363, 364, 365, 366, 367, 371, 372, 373, 374,
- 382, 385, 399, 400, 410, 420, 424, 258, 407, 425,
- 0, 290, 0, 194, 220, 207, 227, 241, 243, 271,
- 299, 305, 333, 336, 255, 238, 218, 353, 216, 369,
- 388, 389, 390, 392, 303, 234, 321, 0, 1169, 0,
- 0, 0, 0, 0, 0, 237, 0, 0, 0, 0,
- 0, 280, 0, 0, 334, 0, 370, 223, 289, 287,
- 396, 246, 240, 236, 222, 265, 294, 332, 387, 326,
- 0, 284, 0, 0, 379, 306, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 270, 221, 192, 318, 380, 249, 0, 0, 0,
- 174, 175, 176, 0, 0, 0, 0, 0, 0, 0,
- 0, 213, 0, 219, 0, 0, 0, 0, 233, 268,
- 239, 232, 394, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 256, 0, 307, 0, 0,
- 0, 421, 0, 0, 0, 0, 0, 0, 0, 0,
- 279, 0, 276, 188, 202, 0, 0, 317, 355, 360,
- 0, 0, 0, 224, 0, 358, 330, 409, 209, 247,
- 352, 335, 356, 0, 0, 357, 285, 398, 347, 408,
- 422, 423, 231, 311, 415, 391, 419, 431, 203, 228,
- 324, 384, 412, 376, 304, 395, 275, 375, 254, 191,
- 283, 195, 386, 406, 214, 368, 0, 0, 0, 197,
- 404, 383, 301, 272, 273, 196, 0, 351, 235, 252,
- 226, 320, 401, 402, 225, 433, 204, 418, 199, 205,
- 417, 313, 397, 405, 302, 293, 198, 403, 300, 292,
- 278, 245, 261, 345, 288, 346, 262, 309, 308, 310,
- 0, 193, 0, 381, 413, 434, 211, 0, 0, 393,
- 427, 430, 0, 348, 212, 253, 244, 344, 251, 281,
- 426, 428, 429, 210, 342, 259, 312, 206, 264, 377,
- 277, 286, 0, 0, 329, 359, 215, 411, 378, 0,
+ 0, 0, 0, 285, 0, 0, 0, 341, 0, 379,
+ 223, 294, 292, 407, 247, 240, 236, 222, 269, 300,
+ 339, 397, 333, 0, 289, 0, 0, 388, 312, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 275, 221, 190, 324, 389, 251,
+ 71, 0, 0, 182, 183, 184, 0, 0, 0, 0,
+ 0, 0, 0, 0, 212, 0, 219, 0, 0, 0,
+ 0, 233, 273, 239, 232, 404, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 259, 0,
+ 313, 0, 0, 0, 0, 435, 0, 0, 0, 0,
+ 0, 0, 0, 0, 284, 0, 281, 186, 201, 0,
+ 0, 323, 362, 368, 0, 0, 0, 224, 0, 366,
+ 337, 421, 208, 249, 359, 342, 364, 0, 0, 365,
+ 290, 409, 354, 419, 436, 437, 231, 317, 427, 401,
+ 433, 447, 202, 228, 331, 394, 424, 385, 310, 405,
+ 406, 280, 384, 257, 189, 288, 444, 200, 374, 216,
+ 193, 396, 417, 213, 377, 0, 0, 0, 195, 415,
+ 393, 307, 277, 278, 194, 0, 358, 235, 255, 226,
+ 326, 412, 413, 225, 449, 204, 432, 197, 0, 431,
+ 319, 408, 416, 308, 299, 196, 414, 306, 298, 283,
+ 245, 265, 352, 293, 353, 266, 315, 314, 316, 0,
+ 191, 0, 390, 425, 450, 210, 0, 0, 403, 441,
+ 446, 0, 355, 211, 256, 244, 351, 254, 286, 440,
+ 442, 443, 445, 209, 349, 262, 330, 420, 248, 428,
+ 318, 205, 268, 386, 282, 291, 0, 0, 336, 367,
+ 214, 423, 387, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 185, 198, 287, 0, 356, 252, 448,
+ 430, 426, 0, 0, 230, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 187, 188, 199,
+ 207, 217, 229, 242, 250, 260, 264, 267, 270, 271,
+ 274, 279, 296, 301, 302, 303, 304, 320, 321, 322,
+ 325, 328, 329, 332, 334, 335, 338, 344, 345, 346,
+ 347, 348, 350, 357, 361, 369, 370, 371, 372, 373,
+ 375, 376, 380, 381, 382, 383, 391, 395, 410, 411,
+ 422, 434, 438, 261, 418, 439, 0, 295, 0, 0,
+ 297, 246, 263, 272, 0, 429, 392, 203, 363, 253,
+ 192, 220, 206, 227, 241, 243, 276, 305, 311, 340,
+ 343, 258, 238, 218, 360, 215, 378, 398, 399, 400,
+ 402, 309, 234, 327, 0, 0, 0, 0, 0, 0,
+ 0, 0, 237, 0, 0, 0, 0, 0, 285, 0,
+ 0, 0, 341, 0, 379, 223, 294, 292, 407, 247,
+ 240, 236, 222, 269, 300, 339, 397, 333, 0, 289,
+ 0, 0, 388, 312, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 275,
+ 221, 190, 324, 389, 251, 0, 0, 0, 182, 183,
+ 184, 0, 1462, 0, 0, 0, 0, 0, 0, 212,
+ 0, 219, 0, 0, 0, 0, 233, 273, 239, 232,
+ 404, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 259, 0, 313, 0, 0, 0, 0,
+ 435, 0, 0, 0, 0, 0, 0, 0, 0, 284,
+ 0, 281, 186, 201, 0, 0, 323, 362, 368, 0,
+ 0, 0, 224, 0, 366, 337, 421, 208, 249, 359,
+ 342, 364, 0, 0, 365, 290, 409, 354, 419, 436,
+ 437, 231, 317, 427, 401, 433, 447, 202, 228, 331,
+ 394, 424, 385, 310, 405, 406, 280, 384, 257, 189,
+ 288, 444, 200, 374, 216, 193, 396, 417, 213, 377,
+ 0, 0, 0, 195, 415, 393, 307, 277, 278, 194,
+ 0, 358, 235, 255, 226, 326, 412, 413, 225, 449,
+ 204, 432, 197, 0, 431, 319, 408, 416, 308, 299,
+ 196, 414, 306, 298, 283, 245, 265, 352, 293, 353,
+ 266, 315, 314, 316, 0, 191, 0, 390, 425, 450,
+ 210, 0, 0, 403, 441, 446, 0, 355, 211, 256,
+ 244, 351, 254, 286, 440, 442, 443, 445, 209, 349,
+ 262, 330, 420, 248, 428, 318, 205, 268, 386, 282,
+ 291, 0, 0, 336, 367, 214, 423, 387, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 185, 198,
+ 287, 0, 356, 252, 448, 430, 426, 0, 0, 230,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 187, 188, 199, 207, 217, 229, 242, 250,
+ 260, 264, 267, 270, 271, 274, 279, 296, 301, 302,
+ 303, 304, 320, 321, 322, 325, 328, 329, 332, 334,
+ 335, 338, 344, 345, 346, 347, 348, 350, 357, 361,
+ 369, 370, 371, 372, 373, 375, 376, 380, 381, 382,
+ 383, 391, 395, 410, 411, 422, 434, 438, 261, 418,
+ 439, 0, 295, 0, 0, 297, 246, 263, 272, 0,
+ 429, 392, 203, 363, 253, 192, 220, 206, 227, 241,
+ 243, 276, 305, 311, 340, 343, 258, 238, 218, 360,
+ 215, 378, 398, 399, 400, 402, 309, 234, 327, 0,
+ 0, 0, 0, 0, 0, 0, 0, 237, 0, 0,
+ 0, 0, 0, 285, 0, 0, 0, 341, 0, 379,
+ 223, 294, 292, 407, 247, 240, 236, 222, 269, 300,
+ 339, 397, 333, 0, 289, 0, 0, 388, 312, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 275, 221, 190, 324, 389, 251,
+ 0, 0, 0, 182, 183, 184, 0, 1088, 0, 0,
+ 0, 0, 0, 0, 212, 0, 219, 0, 0, 0,
+ 0, 233, 273, 239, 232, 404, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 259, 0,
+ 313, 0, 0, 0, 0, 435, 0, 0, 0, 0,
+ 0, 0, 0, 0, 284, 0, 281, 186, 201, 0,
+ 0, 323, 362, 368, 0, 0, 0, 224, 0, 366,
+ 337, 421, 208, 249, 359, 342, 364, 0, 0, 365,
+ 290, 409, 354, 419, 436, 437, 231, 317, 427, 401,
+ 433, 447, 202, 228, 331, 394, 424, 385, 310, 405,
+ 406, 280, 384, 257, 189, 288, 444, 200, 374, 216,
+ 193, 396, 417, 213, 377, 0, 0, 0, 195, 415,
+ 393, 307, 277, 278, 194, 0, 358, 235, 255, 226,
+ 326, 412, 413, 225, 449, 204, 432, 197, 0, 431,
+ 319, 408, 416, 308, 299, 196, 414, 306, 298, 283,
+ 245, 265, 352, 293, 353, 266, 315, 314, 316, 0,
+ 191, 0, 390, 425, 450, 210, 0, 0, 403, 441,
+ 446, 0, 355, 211, 256, 244, 351, 254, 286, 440,
+ 442, 443, 445, 209, 349, 262, 330, 420, 248, 428,
+ 318, 205, 268, 386, 282, 291, 0, 0, 336, 367,
+ 214, 423, 387, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 185, 198, 287, 0, 356, 252, 448,
+ 430, 426, 0, 0, 230, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 187, 188, 199,
+ 207, 217, 229, 242, 250, 260, 264, 267, 270, 271,
+ 274, 279, 296, 301, 302, 303, 304, 320, 321, 322,
+ 325, 328, 329, 332, 334, 335, 338, 344, 345, 346,
+ 347, 348, 350, 357, 361, 369, 370, 371, 372, 373,
+ 375, 376, 380, 381, 382, 383, 391, 395, 410, 411,
+ 422, 434, 438, 261, 418, 439, 0, 295, 0, 0,
+ 297, 246, 263, 272, 0, 429, 392, 203, 363, 253,
+ 192, 220, 206, 227, 241, 243, 276, 305, 311, 340,
+ 343, 258, 238, 218, 360, 215, 378, 398, 399, 400,
+ 402, 309, 234, 327, 0, 0, 0, 0, 0, 0,
+ 0, 0, 237, 0, 0, 0, 0, 0, 285, 0,
+ 0, 0, 341, 0, 379, 223, 294, 292, 407, 247,
+ 240, 236, 222, 269, 300, 339, 397, 333, 0, 289,
+ 0, 0, 388, 312, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 275,
+ 221, 190, 324, 389, 251, 0, 0, 0, 182, 183,
+ 184, 0, 0, 0, 0, 0, 0, 0, 0, 212,
+ 0, 219, 0, 0, 0, 0, 233, 273, 239, 232,
+ 404, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 259, 0, 313, 0, 0, 0, 0,
+ 435, 0, 0, 0, 0, 0, 0, 0, 0, 284,
+ 0, 281, 186, 201, 0, 0, 323, 362, 368, 0,
+ 0, 0, 224, 0, 366, 337, 421, 208, 249, 359,
+ 342, 364, 0, 0, 365, 290, 409, 354, 419, 436,
+ 437, 231, 317, 427, 401, 433, 447, 202, 228, 331,
+ 394, 424, 385, 310, 405, 406, 280, 384, 257, 189,
+ 288, 444, 200, 374, 216, 193, 396, 417, 213, 377,
+ 0, 0, 0, 195, 415, 393, 307, 277, 278, 194,
+ 0, 358, 235, 255, 226, 326, 412, 413, 225, 449,
+ 204, 432, 197, 0, 431, 319, 408, 416, 308, 299,
+ 196, 414, 306, 298, 283, 245, 265, 352, 293, 353,
+ 266, 315, 314, 316, 0, 191, 0, 390, 425, 450,
+ 210, 0, 0, 403, 441, 446, 0, 355, 211, 256,
+ 244, 351, 254, 286, 440, 442, 443, 445, 209, 349,
+ 262, 330, 420, 248, 428, 318, 205, 268, 386, 282,
+ 291, 0, 0, 336, 367, 214, 423, 387, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 185, 198,
+ 287, 1365, 356, 252, 448, 430, 426, 0, 0, 230,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 187, 188, 199, 207, 217, 229, 242, 250,
+ 260, 264, 267, 270, 271, 274, 279, 296, 301, 302,
+ 303, 304, 320, 321, 322, 325, 328, 329, 332, 334,
+ 335, 338, 344, 345, 346, 347, 348, 350, 357, 361,
+ 369, 370, 371, 372, 373, 375, 376, 380, 381, 382,
+ 383, 391, 395, 410, 411, 422, 434, 438, 261, 418,
+ 439, 0, 295, 0, 0, 297, 246, 263, 272, 0,
+ 429, 392, 203, 363, 253, 192, 220, 206, 227, 241,
+ 243, 276, 305, 311, 340, 343, 258, 238, 218, 360,
+ 215, 378, 398, 399, 400, 402, 309, 234, 327, 0,
+ 1243, 0, 0, 0, 0, 0, 0, 237, 0, 0,
+ 0, 0, 0, 285, 0, 0, 0, 341, 0, 379,
+ 223, 294, 292, 407, 247, 240, 236, 222, 269, 300,
+ 339, 397, 333, 0, 289, 0, 0, 388, 312, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 275, 221, 190, 324, 389, 251,
+ 0, 0, 0, 182, 183, 184, 0, 0, 0, 0,
+ 0, 0, 0, 0, 212, 0, 219, 0, 0, 0,
+ 0, 233, 273, 239, 232, 404, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 259, 0,
+ 313, 0, 0, 0, 0, 435, 0, 0, 0, 0,
+ 0, 0, 0, 0, 284, 0, 281, 186, 201, 0,
+ 0, 323, 362, 368, 0, 0, 0, 224, 0, 366,
+ 337, 421, 208, 249, 359, 342, 364, 0, 0, 365,
+ 290, 409, 354, 419, 436, 437, 231, 317, 427, 401,
+ 433, 447, 202, 228, 331, 394, 424, 385, 310, 405,
+ 406, 280, 384, 257, 189, 288, 444, 200, 374, 216,
+ 193, 396, 417, 213, 377, 0, 0, 0, 195, 415,
+ 393, 307, 277, 278, 194, 0, 358, 235, 255, 226,
+ 326, 412, 413, 225, 449, 204, 432, 197, 0, 431,
+ 319, 408, 416, 308, 299, 196, 414, 306, 298, 283,
+ 245, 265, 352, 293, 353, 266, 315, 314, 316, 0,
+ 191, 0, 390, 425, 450, 210, 0, 0, 403, 441,
+ 446, 0, 355, 211, 256, 244, 351, 254, 286, 440,
+ 442, 443, 445, 209, 349, 262, 330, 420, 248, 428,
+ 318, 205, 268, 386, 282, 291, 0, 0, 336, 367,
+ 214, 423, 387, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 185, 198, 287, 0, 356, 252, 448,
+ 430, 426, 0, 0, 230, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 187, 188, 199,
+ 207, 217, 229, 242, 250, 260, 264, 267, 270, 271,
+ 274, 279, 296, 301, 302, 303, 304, 320, 321, 322,
+ 325, 328, 329, 332, 334, 335, 338, 344, 345, 346,
+ 347, 348, 350, 357, 361, 369, 370, 371, 372, 373,
+ 375, 376, 380, 381, 382, 383, 391, 395, 410, 411,
+ 422, 434, 438, 261, 418, 439, 0, 295, 0, 0,
+ 297, 246, 263, 272, 0, 429, 392, 203, 363, 253,
+ 192, 220, 206, 227, 241, 243, 276, 305, 311, 340,
+ 343, 258, 238, 218, 360, 215, 378, 398, 399, 400,
+ 402, 309, 234, 327, 0, 1241, 0, 0, 0, 0,
+ 0, 0, 237, 0, 0, 0, 0, 0, 285, 0,
+ 0, 0, 341, 0, 379, 223, 294, 292, 407, 247,
+ 240, 236, 222, 269, 300, 339, 397, 333, 0, 289,
+ 0, 0, 388, 312, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 275,
+ 221, 190, 324, 389, 251, 0, 0, 0, 182, 183,
+ 184, 0, 0, 0, 0, 0, 0, 0, 0, 212,
+ 0, 219, 0, 0, 0, 0, 233, 273, 239, 232,
+ 404, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 259, 0, 313, 0, 0, 0, 0,
+ 435, 0, 0, 0, 0, 0, 0, 0, 0, 284,
+ 0, 281, 186, 201, 0, 0, 323, 362, 368, 0,
+ 0, 0, 224, 0, 366, 337, 421, 208, 249, 359,
+ 342, 364, 0, 0, 365, 290, 409, 354, 419, 436,
+ 437, 231, 317, 427, 401, 433, 447, 202, 228, 331,
+ 394, 424, 385, 310, 405, 406, 280, 384, 257, 189,
+ 288, 444, 200, 374, 216, 193, 396, 417, 213, 377,
+ 0, 0, 0, 195, 415, 393, 307, 277, 278, 194,
+ 0, 358, 235, 255, 226, 326, 412, 413, 225, 449,
+ 204, 432, 197, 0, 431, 319, 408, 416, 308, 299,
+ 196, 414, 306, 298, 283, 245, 265, 352, 293, 353,
+ 266, 315, 314, 316, 0, 191, 0, 390, 425, 450,
+ 210, 0, 0, 403, 441, 446, 0, 355, 211, 256,
+ 244, 351, 254, 286, 440, 442, 443, 445, 209, 349,
+ 262, 330, 420, 248, 428, 318, 205, 268, 386, 282,
+ 291, 0, 0, 336, 367, 214, 423, 387, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 185, 198,
+ 287, 0, 356, 252, 448, 430, 426, 0, 0, 230,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 187, 188, 199, 207, 217, 229, 242, 250,
+ 260, 264, 267, 270, 271, 274, 279, 296, 301, 302,
+ 303, 304, 320, 321, 322, 325, 328, 329, 332, 334,
+ 335, 338, 344, 345, 346, 347, 348, 350, 357, 361,
+ 369, 370, 371, 372, 373, 375, 376, 380, 381, 382,
+ 383, 391, 395, 410, 411, 422, 434, 438, 261, 418,
+ 439, 0, 295, 0, 0, 297, 246, 263, 272, 0,
+ 429, 392, 203, 363, 253, 192, 220, 206, 227, 241,
+ 243, 276, 305, 311, 340, 343, 258, 238, 218, 360,
+ 215, 378, 398, 399, 400, 402, 309, 234, 327, 0,
+ 1239, 0, 0, 0, 0, 0, 0, 237, 0, 0,
+ 0, 0, 0, 285, 0, 0, 0, 341, 0, 379,
+ 223, 294, 292, 407, 247, 240, 236, 222, 269, 300,
+ 339, 397, 333, 0, 289, 0, 0, 388, 312, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 275, 221, 190, 324, 389, 251,
+ 0, 0, 0, 182, 183, 184, 0, 0, 0, 0,
+ 0, 0, 0, 0, 212, 0, 219, 0, 0, 0,
+ 0, 233, 273, 239, 232, 404, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 259, 0,
+ 313, 0, 0, 0, 0, 435, 0, 0, 0, 0,
+ 0, 0, 0, 0, 284, 0, 281, 186, 201, 0,
+ 0, 323, 362, 368, 0, 0, 0, 224, 0, 366,
+ 337, 421, 208, 249, 359, 342, 364, 0, 0, 365,
+ 290, 409, 354, 419, 436, 437, 231, 317, 427, 401,
+ 433, 447, 202, 228, 331, 394, 424, 385, 310, 405,
+ 406, 280, 384, 257, 189, 288, 444, 200, 374, 216,
+ 193, 396, 417, 213, 377, 0, 0, 0, 195, 415,
+ 393, 307, 277, 278, 194, 0, 358, 235, 255, 226,
+ 326, 412, 413, 225, 449, 204, 432, 197, 0, 431,
+ 319, 408, 416, 308, 299, 196, 414, 306, 298, 283,
+ 245, 265, 352, 293, 353, 266, 315, 314, 316, 0,
+ 191, 0, 390, 425, 450, 210, 0, 0, 403, 441,
+ 446, 0, 355, 211, 256, 244, 351, 254, 286, 440,
+ 442, 443, 445, 209, 349, 262, 330, 420, 248, 428,
+ 318, 205, 268, 386, 282, 291, 0, 0, 336, 367,
+ 214, 423, 387, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 185, 198, 287, 0, 356, 252, 448,
+ 430, 426, 0, 0, 230, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 187, 188, 199,
+ 207, 217, 229, 242, 250, 260, 264, 267, 270, 271,
+ 274, 279, 296, 301, 302, 303, 304, 320, 321, 322,
+ 325, 328, 329, 332, 334, 335, 338, 344, 345, 346,
+ 347, 348, 350, 357, 361, 369, 370, 371, 372, 373,
+ 375, 376, 380, 381, 382, 383, 391, 395, 410, 411,
+ 422, 434, 438, 261, 418, 439, 0, 295, 0, 0,
+ 297, 246, 263, 272, 0, 429, 392, 203, 363, 253,
+ 192, 220, 206, 227, 241, 243, 276, 305, 311, 340,
+ 343, 258, 238, 218, 360, 215, 378, 398, 399, 400,
+ 402, 309, 234, 327, 0, 1237, 0, 0, 0, 0,
+ 0, 0, 237, 0, 0, 0, 0, 0, 285, 0,
+ 0, 0, 341, 0, 379, 223, 294, 292, 407, 247,
+ 240, 236, 222, 269, 300, 339, 397, 333, 0, 289,
+ 0, 0, 388, 312, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 275,
+ 221, 190, 324, 389, 251, 0, 0, 0, 182, 183,
+ 184, 0, 0, 0, 0, 0, 0, 0, 0, 212,
+ 0, 219, 0, 0, 0, 0, 233, 273, 239, 232,
+ 404, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 259, 0, 313, 0, 0, 0, 0,
+ 435, 0, 0, 0, 0, 0, 0, 0, 0, 284,
+ 0, 281, 186, 201, 0, 0, 323, 362, 368, 0,
+ 0, 0, 224, 0, 366, 337, 421, 208, 249, 359,
+ 342, 364, 0, 0, 365, 290, 409, 354, 419, 436,
+ 437, 231, 317, 427, 401, 433, 447, 202, 228, 331,
+ 394, 424, 385, 310, 405, 406, 280, 384, 257, 189,
+ 288, 444, 200, 374, 216, 193, 396, 417, 213, 377,
+ 0, 0, 0, 195, 415, 393, 307, 277, 278, 194,
+ 0, 358, 235, 255, 226, 326, 412, 413, 225, 449,
+ 204, 432, 197, 0, 431, 319, 408, 416, 308, 299,
+ 196, 414, 306, 298, 283, 245, 265, 352, 293, 353,
+ 266, 315, 314, 316, 0, 191, 0, 390, 425, 450,
+ 210, 0, 0, 403, 441, 446, 0, 355, 211, 256,
+ 244, 351, 254, 286, 440, 442, 443, 445, 209, 349,
+ 262, 330, 420, 248, 428, 318, 205, 268, 386, 282,
+ 291, 0, 0, 336, 367, 214, 423, 387, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 185, 198,
+ 287, 0, 356, 252, 448, 430, 426, 0, 0, 230,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 187, 188, 199, 207, 217, 229, 242, 250,
+ 260, 264, 267, 270, 271, 274, 279, 296, 301, 302,
+ 303, 304, 320, 321, 322, 325, 328, 329, 332, 334,
+ 335, 338, 344, 345, 346, 347, 348, 350, 357, 361,
+ 369, 370, 371, 372, 373, 375, 376, 380, 381, 382,
+ 383, 391, 395, 410, 411, 422, 434, 438, 261, 418,
+ 439, 0, 295, 0, 0, 297, 246, 263, 272, 0,
+ 429, 392, 203, 363, 253, 192, 220, 206, 227, 241,
+ 243, 276, 305, 311, 340, 343, 258, 238, 218, 360,
+ 215, 378, 398, 399, 400, 402, 309, 234, 327, 0,
+ 1235, 0, 0, 0, 0, 0, 0, 237, 0, 0,
+ 0, 0, 0, 285, 0, 0, 0, 341, 0, 379,
+ 223, 294, 292, 407, 247, 240, 236, 222, 269, 300,
+ 339, 397, 333, 0, 289, 0, 0, 388, 312, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 275, 221, 190, 324, 389, 251,
+ 0, 0, 0, 182, 183, 184, 0, 0, 0, 0,
+ 0, 0, 0, 0, 212, 0, 219, 0, 0, 0,
+ 0, 233, 273, 239, 232, 404, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 259, 0,
+ 313, 0, 0, 0, 0, 435, 0, 0, 0, 0,
+ 0, 0, 0, 0, 284, 0, 281, 186, 201, 0,
+ 0, 323, 362, 368, 0, 0, 0, 224, 0, 366,
+ 337, 421, 208, 249, 359, 342, 364, 0, 0, 365,
+ 290, 409, 354, 419, 436, 437, 231, 317, 427, 401,
+ 433, 447, 202, 228, 331, 394, 424, 385, 310, 405,
+ 406, 280, 384, 257, 189, 288, 444, 200, 374, 216,
+ 193, 396, 417, 213, 377, 0, 0, 0, 195, 415,
+ 393, 307, 277, 278, 194, 0, 358, 235, 255, 226,
+ 326, 412, 413, 225, 449, 204, 432, 197, 0, 431,
+ 319, 408, 416, 308, 299, 196, 414, 306, 298, 283,
+ 245, 265, 352, 293, 353, 266, 315, 314, 316, 0,
+ 191, 0, 390, 425, 450, 210, 0, 0, 403, 441,
+ 446, 0, 355, 211, 256, 244, 351, 254, 286, 440,
+ 442, 443, 445, 209, 349, 262, 330, 420, 248, 428,
+ 318, 205, 268, 386, 282, 291, 0, 0, 336, 367,
+ 214, 423, 387, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 185, 198, 287, 0, 356, 252, 448,
+ 430, 426, 0, 0, 230, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 187, 188, 199,
+ 207, 217, 229, 242, 250, 260, 264, 267, 270, 271,
+ 274, 279, 296, 301, 302, 303, 304, 320, 321, 322,
+ 325, 328, 329, 332, 334, 335, 338, 344, 345, 346,
+ 347, 348, 350, 357, 361, 369, 370, 371, 372, 373,
+ 375, 376, 380, 381, 382, 383, 391, 395, 410, 411,
+ 422, 434, 438, 261, 418, 439, 0, 295, 0, 0,
+ 297, 246, 263, 272, 0, 429, 392, 203, 363, 253,
+ 192, 220, 206, 227, 241, 243, 276, 305, 311, 340,
+ 343, 258, 238, 218, 360, 215, 378, 398, 399, 400,
+ 402, 309, 234, 327, 0, 1231, 0, 0, 0, 0,
+ 0, 0, 237, 0, 0, 0, 0, 0, 285, 0,
+ 0, 0, 341, 0, 379, 223, 294, 292, 407, 247,
+ 240, 236, 222, 269, 300, 339, 397, 333, 0, 289,
+ 0, 0, 388, 312, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 275,
+ 221, 190, 324, 389, 251, 0, 0, 0, 182, 183,
+ 184, 0, 0, 0, 0, 0, 0, 0, 0, 212,
+ 0, 219, 0, 0, 0, 0, 233, 273, 239, 232,
+ 404, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 259, 0, 313, 0, 0, 0, 0,
+ 435, 0, 0, 0, 0, 0, 0, 0, 0, 284,
+ 0, 281, 186, 201, 0, 0, 323, 362, 368, 0,
+ 0, 0, 224, 0, 366, 337, 421, 208, 249, 359,
+ 342, 364, 0, 0, 365, 290, 409, 354, 419, 436,
+ 437, 231, 317, 427, 401, 433, 447, 202, 228, 331,
+ 394, 424, 385, 310, 405, 406, 280, 384, 257, 189,
+ 288, 444, 200, 374, 216, 193, 396, 417, 213, 377,
+ 0, 0, 0, 195, 415, 393, 307, 277, 278, 194,
+ 0, 358, 235, 255, 226, 326, 412, 413, 225, 449,
+ 204, 432, 197, 0, 431, 319, 408, 416, 308, 299,
+ 196, 414, 306, 298, 283, 245, 265, 352, 293, 353,
+ 266, 315, 314, 316, 0, 191, 0, 390, 425, 450,
+ 210, 0, 0, 403, 441, 446, 0, 355, 211, 256,
+ 244, 351, 254, 286, 440, 442, 443, 445, 209, 349,
+ 262, 330, 420, 248, 428, 318, 205, 268, 386, 282,
+ 291, 0, 0, 336, 367, 214, 423, 387, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 185, 198,
+ 287, 0, 356, 252, 448, 430, 426, 0, 0, 230,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 187, 188, 199, 207, 217, 229, 242, 250,
+ 260, 264, 267, 270, 271, 274, 279, 296, 301, 302,
+ 303, 304, 320, 321, 322, 325, 328, 329, 332, 334,
+ 335, 338, 344, 345, 346, 347, 348, 350, 357, 361,
+ 369, 370, 371, 372, 373, 375, 376, 380, 381, 382,
+ 383, 391, 395, 410, 411, 422, 434, 438, 261, 418,
+ 439, 0, 295, 0, 0, 297, 246, 263, 272, 0,
+ 429, 392, 203, 363, 253, 192, 220, 206, 227, 241,
+ 243, 276, 305, 311, 340, 343, 258, 238, 218, 360,
+ 215, 378, 398, 399, 400, 402, 309, 234, 327, 0,
+ 1229, 0, 0, 0, 0, 0, 0, 237, 0, 0,
+ 0, 0, 0, 285, 0, 0, 0, 341, 0, 379,
+ 223, 294, 292, 407, 247, 240, 236, 222, 269, 300,
+ 339, 397, 333, 0, 289, 0, 0, 388, 312, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 275, 221, 190, 324, 389, 251,
+ 0, 0, 0, 182, 183, 184, 0, 0, 0, 0,
+ 0, 0, 0, 0, 212, 0, 219, 0, 0, 0,
+ 0, 233, 273, 239, 232, 404, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 259, 0,
+ 313, 0, 0, 0, 0, 435, 0, 0, 0, 0,
+ 0, 0, 0, 0, 284, 0, 281, 186, 201, 0,
+ 0, 323, 362, 368, 0, 0, 0, 224, 0, 366,
+ 337, 421, 208, 249, 359, 342, 364, 0, 0, 365,
+ 290, 409, 354, 419, 436, 437, 231, 317, 427, 401,
+ 433, 447, 202, 228, 331, 394, 424, 385, 310, 405,
+ 406, 280, 384, 257, 189, 288, 444, 200, 374, 216,
+ 193, 396, 417, 213, 377, 0, 0, 0, 195, 415,
+ 393, 307, 277, 278, 194, 0, 358, 235, 255, 226,
+ 326, 412, 413, 225, 449, 204, 432, 197, 0, 431,
+ 319, 408, 416, 308, 299, 196, 414, 306, 298, 283,
+ 245, 265, 352, 293, 353, 266, 315, 314, 316, 0,
+ 191, 0, 390, 425, 450, 210, 0, 0, 403, 441,
+ 446, 0, 355, 211, 256, 244, 351, 254, 286, 440,
+ 442, 443, 445, 209, 349, 262, 330, 420, 248, 428,
+ 318, 205, 268, 386, 282, 291, 0, 0, 336, 367,
+ 214, 423, 387, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 185, 198, 287, 0, 356, 252, 448,
+ 430, 426, 0, 0, 230, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 187, 188, 199,
+ 207, 217, 229, 242, 250, 260, 264, 267, 270, 271,
+ 274, 279, 296, 301, 302, 303, 304, 320, 321, 322,
+ 325, 328, 329, 332, 334, 335, 338, 344, 345, 346,
+ 347, 348, 350, 357, 361, 369, 370, 371, 372, 373,
+ 375, 376, 380, 381, 382, 383, 391, 395, 410, 411,
+ 422, 434, 438, 261, 418, 439, 0, 295, 0, 0,
+ 297, 246, 263, 272, 0, 429, 392, 203, 363, 253,
+ 192, 220, 206, 227, 241, 243, 276, 305, 311, 340,
+ 343, 258, 238, 218, 360, 215, 378, 398, 399, 400,
+ 402, 309, 234, 327, 0, 1227, 0, 0, 0, 0,
+ 0, 0, 237, 0, 0, 0, 0, 0, 285, 0,
+ 0, 0, 341, 0, 379, 223, 294, 292, 407, 247,
+ 240, 236, 222, 269, 300, 339, 397, 333, 0, 289,
+ 0, 0, 388, 312, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 275,
+ 221, 190, 324, 389, 251, 0, 0, 0, 182, 183,
+ 184, 0, 0, 0, 0, 0, 0, 0, 0, 212,
+ 0, 219, 0, 0, 0, 0, 233, 273, 239, 232,
+ 404, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 259, 0, 313, 0, 0, 0, 0,
+ 435, 0, 0, 0, 0, 0, 0, 0, 0, 284,
+ 0, 281, 186, 201, 0, 0, 323, 362, 368, 0,
+ 0, 0, 224, 0, 366, 337, 421, 208, 249, 359,
+ 342, 364, 0, 0, 365, 290, 409, 354, 419, 436,
+ 437, 231, 317, 427, 401, 433, 447, 202, 228, 331,
+ 394, 424, 385, 310, 405, 406, 280, 384, 257, 189,
+ 288, 444, 200, 374, 216, 193, 396, 417, 213, 377,
+ 0, 0, 0, 195, 415, 393, 307, 277, 278, 194,
+ 0, 358, 235, 255, 226, 326, 412, 413, 225, 449,
+ 204, 432, 197, 0, 431, 319, 408, 416, 308, 299,
+ 196, 414, 306, 298, 283, 245, 265, 352, 293, 353,
+ 266, 315, 314, 316, 0, 191, 0, 390, 425, 450,
+ 210, 0, 0, 403, 441, 446, 0, 355, 211, 256,
+ 244, 351, 254, 286, 440, 442, 443, 445, 209, 349,
+ 262, 330, 420, 248, 428, 318, 205, 268, 386, 282,
+ 291, 0, 0, 336, 367, 214, 423, 387, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 185, 198,
+ 287, 0, 356, 252, 448, 430, 426, 0, 0, 230,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 187, 188, 199, 207, 217, 229, 242, 250,
+ 260, 264, 267, 270, 271, 274, 279, 296, 301, 302,
+ 303, 304, 320, 321, 322, 325, 328, 329, 332, 334,
+ 335, 338, 344, 345, 346, 347, 348, 350, 357, 361,
+ 369, 370, 371, 372, 373, 375, 376, 380, 381, 382,
+ 383, 391, 395, 410, 411, 422, 434, 438, 261, 418,
+ 439, 0, 295, 0, 0, 297, 246, 263, 272, 0,
+ 429, 392, 203, 363, 253, 192, 220, 206, 227, 241,
+ 243, 276, 305, 311, 340, 343, 258, 238, 218, 360,
+ 215, 378, 398, 399, 400, 402, 309, 234, 327, 0,
+ 0, 0, 0, 0, 0, 0, 0, 237, 0, 0,
+ 0, 0, 0, 285, 0, 0, 0, 341, 0, 379,
+ 223, 294, 292, 407, 247, 240, 236, 222, 269, 300,
+ 339, 397, 333, 0, 289, 0, 0, 388, 312, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 275, 221, 190, 324, 389, 251,
+ 1202, 0, 0, 182, 183, 184, 0, 0, 0, 0,
+ 0, 0, 0, 0, 212, 0, 219, 0, 0, 0,
+ 0, 233, 273, 239, 232, 404, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 259, 0,
+ 313, 0, 0, 0, 0, 435, 0, 0, 0, 0,
+ 0, 0, 0, 0, 284, 0, 281, 186, 201, 0,
+ 0, 323, 362, 368, 0, 0, 0, 224, 0, 366,
+ 337, 421, 208, 249, 359, 342, 364, 0, 0, 365,
+ 290, 409, 354, 419, 436, 437, 231, 317, 427, 401,
+ 433, 447, 202, 228, 331, 394, 424, 385, 310, 405,
+ 406, 280, 384, 257, 189, 288, 444, 200, 374, 216,
+ 193, 396, 417, 213, 377, 0, 0, 0, 195, 415,
+ 393, 307, 277, 278, 194, 0, 358, 235, 255, 226,
+ 326, 412, 413, 225, 449, 204, 432, 197, 0, 431,
+ 319, 408, 416, 308, 299, 196, 414, 306, 298, 283,
+ 245, 265, 352, 293, 353, 266, 315, 314, 316, 0,
+ 191, 0, 390, 425, 450, 210, 0, 0, 403, 441,
+ 446, 0, 355, 211, 256, 244, 351, 254, 286, 440,
+ 442, 443, 445, 209, 349, 262, 330, 420, 248, 428,
+ 318, 205, 268, 386, 282, 291, 0, 0, 336, 367,
+ 214, 423, 387, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 185, 198, 287, 0, 356, 252, 448,
+ 430, 426, 0, 0, 230, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 187, 188, 199,
+ 207, 217, 229, 242, 250, 260, 264, 267, 270, 271,
+ 274, 279, 296, 301, 302, 303, 304, 320, 321, 322,
+ 325, 328, 329, 332, 334, 335, 338, 344, 345, 346,
+ 347, 348, 350, 357, 361, 369, 370, 371, 372, 373,
+ 375, 376, 380, 381, 382, 383, 391, 395, 410, 411,
+ 422, 434, 438, 261, 418, 439, 0, 295, 0, 0,
+ 297, 246, 263, 272, 0, 429, 392, 203, 363, 253,
+ 192, 220, 206, 227, 241, 243, 276, 305, 311, 340,
+ 343, 258, 238, 218, 360, 215, 378, 398, 399, 400,
+ 402, 309, 234, 1101, 0, 0, 0, 0, 0, 0,
+ 327, 0, 0, 0, 0, 0, 0, 0, 0, 237,
+ 0, 0, 0, 0, 0, 285, 0, 0, 0, 341,
+ 0, 379, 223, 294, 292, 407, 247, 240, 236, 222,
+ 269, 300, 339, 397, 333, 0, 289, 0, 0, 388,
+ 312, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 275, 221, 190, 324,
+ 389, 251, 0, 0, 0, 182, 183, 184, 0, 0,
+ 0, 0, 0, 0, 0, 0, 212, 0, 219, 0,
+ 0, 0, 0, 233, 273, 239, 232, 404, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 259, 0, 313, 0, 0, 0, 0, 435, 0, 0,
+ 0, 0, 0, 0, 0, 0, 284, 0, 281, 186,
+ 201, 0, 0, 323, 362, 368, 0, 0, 0, 224,
+ 0, 366, 337, 421, 208, 249, 359, 342, 364, 0,
+ 0, 365, 290, 409, 354, 419, 436, 437, 231, 317,
+ 427, 401, 433, 447, 202, 228, 331, 394, 424, 385,
+ 310, 405, 406, 280, 384, 257, 189, 288, 444, 200,
+ 374, 216, 193, 396, 417, 213, 377, 0, 0, 0,
+ 195, 415, 393, 307, 277, 278, 194, 0, 358, 235,
+ 255, 226, 326, 412, 413, 225, 449, 204, 432, 197,
+ 0, 431, 319, 408, 416, 308, 299, 196, 414, 306,
+ 298, 283, 245, 265, 352, 293, 353, 266, 315, 314,
+ 316, 0, 191, 0, 390, 425, 450, 210, 0, 0,
+ 403, 441, 446, 0, 355, 211, 256, 244, 351, 254,
+ 286, 440, 442, 443, 445, 209, 349, 262, 330, 420,
+ 248, 428, 318, 205, 268, 386, 282, 291, 0, 0,
+ 336, 367, 214, 423, 387, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 185, 198, 287, 0, 356,
+ 252, 448, 430, 426, 0, 0, 230, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 187,
- 200, 282, 0, 349, 250, 432, 416, 414, 0, 0,
- 230, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 188, 199, 207, 217, 229, 242, 250, 260, 264, 267,
+ 270, 271, 274, 279, 296, 301, 302, 303, 304, 320,
+ 321, 322, 325, 328, 329, 332, 334, 335, 338, 344,
+ 345, 346, 347, 348, 350, 357, 361, 369, 370, 371,
+ 372, 373, 375, 376, 380, 381, 382, 383, 391, 395,
+ 410, 411, 422, 434, 438, 261, 418, 439, 0, 295,
+ 0, 0, 297, 246, 263, 272, 0, 429, 392, 203,
+ 363, 253, 192, 220, 206, 227, 241, 243, 276, 305,
+ 311, 340, 343, 258, 238, 218, 360, 215, 378, 398,
+ 399, 400, 402, 309, 234, 327, 0, 0, 0, 0,
+ 0, 0, 0, 1092, 237, 0, 0, 0, 0, 0,
+ 285, 0, 0, 0, 341, 0, 379, 223, 294, 292,
+ 407, 247, 240, 236, 222, 269, 300, 339, 397, 333,
+ 0, 289, 0, 0, 388, 312, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 275, 221, 190, 324, 389, 251, 0, 0, 0,
+ 182, 183, 184, 0, 0, 0, 0, 0, 0, 0,
+ 0, 212, 0, 219, 0, 0, 0, 0, 233, 273,
+ 239, 232, 404, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 259, 0, 313, 0, 0,
+ 0, 0, 435, 0, 0, 0, 0, 0, 0, 0,
+ 0, 284, 0, 281, 186, 201, 0, 0, 323, 362,
+ 368, 0, 0, 0, 224, 0, 366, 337, 421, 208,
+ 249, 359, 342, 364, 0, 0, 365, 290, 409, 354,
+ 419, 436, 437, 231, 317, 427, 401, 433, 447, 202,
+ 228, 331, 394, 424, 385, 310, 405, 406, 280, 384,
+ 257, 189, 288, 444, 200, 374, 216, 193, 396, 417,
+ 213, 377, 0, 0, 0, 195, 415, 393, 307, 277,
+ 278, 194, 0, 358, 235, 255, 226, 326, 412, 413,
+ 225, 449, 204, 432, 197, 0, 431, 319, 408, 416,
+ 308, 299, 196, 414, 306, 298, 283, 245, 265, 352,
+ 293, 353, 266, 315, 314, 316, 0, 191, 0, 390,
+ 425, 450, 210, 0, 0, 403, 441, 446, 0, 355,
+ 211, 256, 244, 351, 254, 286, 440, 442, 443, 445,
+ 209, 349, 262, 330, 420, 248, 428, 318, 205, 268,
+ 386, 282, 291, 0, 0, 336, 367, 214, 423, 387,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 198, 287, 0, 356, 252, 448, 430, 426, 0,
+ 0, 230, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 189, 190, 201, 208, 217, 229, 242,
- 248, 257, 260, 263, 266, 267, 269, 274, 291, 295,
- 296, 297, 298, 314, 315, 316, 319, 322, 323, 325,
- 327, 328, 331, 337, 338, 339, 340, 341, 343, 350,
- 354, 361, 362, 363, 364, 365, 366, 367, 371, 372,
- 373, 374, 382, 385, 399, 400, 410, 420, 424, 258,
- 407, 425, 0, 290, 0, 194, 220, 207, 227, 241,
- 243, 271, 299, 305, 333, 336, 255, 238, 218, 353,
- 216, 369, 388, 389, 390, 392, 303, 234, 321, 0,
- 1167, 0, 0, 0, 0, 0, 0, 237, 0, 0,
- 0, 0, 0, 280, 0, 0, 334, 0, 370, 223,
- 289, 287, 396, 246, 240, 236, 222, 265, 294, 332,
- 387, 326, 0, 284, 0, 0, 379, 306, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 270, 221, 192, 318, 380, 249, 0,
- 0, 0, 174, 175, 176, 0, 0, 0, 0, 0,
- 0, 0, 0, 213, 0, 219, 0, 0, 0, 0,
- 233, 268, 239, 232, 394, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 256, 0, 307,
- 0, 0, 0, 421, 0, 0, 0, 0, 0, 0,
- 0, 0, 279, 0, 276, 188, 202, 0, 0, 317,
- 355, 360, 0, 0, 0, 224, 0, 358, 330, 409,
- 209, 247, 352, 335, 356, 0, 0, 357, 285, 398,
- 347, 408, 422, 423, 231, 311, 415, 391, 419, 431,
- 203, 228, 324, 384, 412, 376, 304, 395, 275, 375,
- 254, 191, 283, 195, 386, 406, 214, 368, 0, 0,
- 0, 197, 404, 383, 301, 272, 273, 196, 0, 351,
- 235, 252, 226, 320, 401, 402, 225, 433, 204, 418,
- 199, 205, 417, 313, 397, 405, 302, 293, 198, 403,
- 300, 292, 278, 245, 261, 345, 288, 346, 262, 309,
- 308, 310, 0, 193, 0, 381, 413, 434, 211, 0,
- 0, 393, 427, 430, 0, 348, 212, 253, 244, 344,
- 251, 281, 426, 428, 429, 210, 342, 259, 312, 206,
- 264, 377, 277, 286, 0, 0, 329, 359, 215, 411,
- 378, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 187, 200, 282, 0, 349, 250, 432, 416, 414,
- 0, 0, 230, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 189, 190, 201, 208, 217,
- 229, 242, 248, 257, 260, 263, 266, 267, 269, 274,
- 291, 295, 296, 297, 298, 314, 315, 316, 319, 322,
- 323, 325, 327, 328, 331, 337, 338, 339, 340, 341,
- 343, 350, 354, 361, 362, 363, 364, 365, 366, 367,
- 371, 372, 373, 374, 382, 385, 399, 400, 410, 420,
- 424, 258, 407, 425, 0, 290, 0, 194, 220, 207,
- 227, 241, 243, 271, 299, 305, 333, 336, 255, 238,
- 218, 353, 216, 369, 388, 389, 390, 392, 303, 234,
- 321, 0, 1163, 0, 0, 0, 0, 0, 0, 237,
- 0, 0, 0, 0, 0, 280, 0, 0, 334, 0,
- 370, 223, 289, 287, 396, 246, 240, 236, 222, 265,
- 294, 332, 387, 326, 0, 284, 0, 0, 379, 306,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 270, 221, 192, 318, 380,
- 249, 0, 0, 0, 174, 175, 176, 0, 0, 0,
- 0, 0, 0, 0, 0, 213, 0, 219, 0, 0,
- 0, 0, 233, 268, 239, 232, 394, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 256,
- 0, 307, 0, 0, 0, 421, 0, 0, 0, 0,
- 0, 0, 0, 0, 279, 0, 276, 188, 202, 0,
- 0, 317, 355, 360, 0, 0, 0, 224, 0, 358,
- 330, 409, 209, 247, 352, 335, 356, 0, 0, 357,
- 285, 398, 347, 408, 422, 423, 231, 311, 415, 391,
- 419, 431, 203, 228, 324, 384, 412, 376, 304, 395,
- 275, 375, 254, 191, 283, 195, 386, 406, 214, 368,
- 0, 0, 0, 197, 404, 383, 301, 272, 273, 196,
- 0, 351, 235, 252, 226, 320, 401, 402, 225, 433,
- 204, 418, 199, 205, 417, 313, 397, 405, 302, 293,
- 198, 403, 300, 292, 278, 245, 261, 345, 288, 346,
- 262, 309, 308, 310, 0, 193, 0, 381, 413, 434,
- 211, 0, 0, 393, 427, 430, 0, 348, 212, 253,
- 244, 344, 251, 281, 426, 428, 429, 210, 342, 259,
- 312, 206, 264, 377, 277, 286, 0, 0, 329, 359,
- 215, 411, 378, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 187, 200, 282, 0, 349, 250, 432,
- 416, 414, 0, 0, 230, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 189, 190, 201,
- 208, 217, 229, 242, 248, 257, 260, 263, 266, 267,
- 269, 274, 291, 295, 296, 297, 298, 314, 315, 316,
- 319, 322, 323, 325, 327, 328, 331, 337, 338, 339,
- 340, 341, 343, 350, 354, 361, 362, 363, 364, 365,
- 366, 367, 371, 372, 373, 374, 382, 385, 399, 400,
- 410, 420, 424, 258, 407, 425, 0, 290, 0, 194,
- 220, 207, 227, 241, 243, 271, 299, 305, 333, 336,
- 255, 238, 218, 353, 216, 369, 388, 389, 390, 392,
- 303, 234, 321, 0, 1161, 0, 0, 0, 0, 0,
- 0, 237, 0, 0, 0, 0, 0, 280, 0, 0,
- 334, 0, 370, 223, 289, 287, 396, 246, 240, 236,
- 222, 265, 294, 332, 387, 326, 0, 284, 0, 0,
- 379, 306, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 270, 221, 192,
- 318, 380, 249, 0, 0, 0, 174, 175, 176, 0,
- 0, 0, 0, 0, 0, 0, 0, 213, 0, 219,
- 0, 0, 0, 0, 233, 268, 239, 232, 394, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 256, 0, 307, 0, 0, 0, 421, 0, 0,
- 0, 0, 0, 0, 0, 0, 279, 0, 276, 188,
- 202, 0, 0, 317, 355, 360, 0, 0, 0, 224,
- 0, 358, 330, 409, 209, 247, 352, 335, 356, 0,
- 0, 357, 285, 398, 347, 408, 422, 423, 231, 311,
- 415, 391, 419, 431, 203, 228, 324, 384, 412, 376,
- 304, 395, 275, 375, 254, 191, 283, 195, 386, 406,
- 214, 368, 0, 0, 0, 197, 404, 383, 301, 272,
- 273, 196, 0, 351, 235, 252, 226, 320, 401, 402,
- 225, 433, 204, 418, 199, 205, 417, 313, 397, 405,
- 302, 293, 198, 403, 300, 292, 278, 245, 261, 345,
- 288, 346, 262, 309, 308, 310, 0, 193, 0, 381,
- 413, 434, 211, 0, 0, 393, 427, 430, 0, 348,
- 212, 253, 244, 344, 251, 281, 426, 428, 429, 210,
- 342, 259, 312, 206, 264, 377, 277, 286, 0, 0,
- 329, 359, 215, 411, 378, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 187, 200, 282, 0, 349,
- 250, 432, 416, 414, 0, 0, 230, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 189,
- 190, 201, 208, 217, 229, 242, 248, 257, 260, 263,
- 266, 267, 269, 274, 291, 295, 296, 297, 298, 314,
- 315, 316, 319, 322, 323, 325, 327, 328, 331, 337,
- 338, 339, 340, 341, 343, 350, 354, 361, 362, 363,
- 364, 365, 366, 367, 371, 372, 373, 374, 382, 385,
- 399, 400, 410, 420, 424, 258, 407, 425, 0, 290,
- 0, 194, 220, 207, 227, 241, 243, 271, 299, 305,
- 333, 336, 255, 238, 218, 353, 216, 369, 388, 389,
- 390, 392, 303, 234, 321, 0, 1159, 0, 0, 0,
- 0, 0, 0, 237, 0, 0, 0, 0, 0, 280,
- 0, 0, 334, 0, 370, 223, 289, 287, 396, 246,
- 240, 236, 222, 265, 294, 332, 387, 326, 0, 284,
- 0, 0, 379, 306, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 270,
- 221, 192, 318, 380, 249, 0, 0, 0, 174, 175,
- 176, 0, 0, 0, 0, 0, 0, 0, 0, 213,
- 0, 219, 0, 0, 0, 0, 233, 268, 239, 232,
- 394, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 256, 0, 307, 0, 0, 0, 421,
- 0, 0, 0, 0, 0, 0, 0, 0, 279, 0,
- 276, 188, 202, 0, 0, 317, 355, 360, 0, 0,
- 0, 224, 0, 358, 330, 409, 209, 247, 352, 335,
- 356, 0, 0, 357, 285, 398, 347, 408, 422, 423,
- 231, 311, 415, 391, 419, 431, 203, 228, 324, 384,
- 412, 376, 304, 395, 275, 375, 254, 191, 283, 195,
- 386, 406, 214, 368, 0, 0, 0, 197, 404, 383,
- 301, 272, 273, 196, 0, 351, 235, 252, 226, 320,
- 401, 402, 225, 433, 204, 418, 199, 205, 417, 313,
- 397, 405, 302, 293, 198, 403, 300, 292, 278, 245,
- 261, 345, 288, 346, 262, 309, 308, 310, 0, 193,
- 0, 381, 413, 434, 211, 0, 0, 393, 427, 430,
- 0, 348, 212, 253, 244, 344, 251, 281, 426, 428,
- 429, 210, 342, 259, 312, 206, 264, 377, 277, 286,
- 0, 0, 329, 359, 215, 411, 378, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 187, 200, 282,
- 0, 349, 250, 432, 416, 414, 0, 0, 230, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 189, 190, 201, 208, 217, 229, 242, 248, 257,
- 260, 263, 266, 267, 269, 274, 291, 295, 296, 297,
- 298, 314, 315, 316, 319, 322, 323, 325, 327, 328,
- 331, 337, 338, 339, 340, 341, 343, 350, 354, 361,
- 362, 363, 364, 365, 366, 367, 371, 372, 373, 374,
- 382, 385, 399, 400, 410, 420, 424, 258, 407, 425,
- 0, 290, 0, 194, 220, 207, 227, 241, 243, 271,
- 299, 305, 333, 336, 255, 238, 218, 353, 216, 369,
- 388, 389, 390, 392, 303, 234, 321, 0, 0, 0,
- 0, 0, 0, 0, 0, 237, 0, 0, 0, 0,
- 0, 280, 0, 0, 334, 0, 370, 223, 289, 287,
- 396, 246, 240, 236, 222, 265, 294, 332, 387, 326,
- 0, 284, 0, 0, 379, 306, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 270, 221, 192, 318, 380, 249, 1134, 0, 0,
- 174, 175, 176, 0, 0, 0, 0, 0, 0, 0,
- 0, 213, 0, 219, 0, 0, 0, 0, 233, 268,
- 239, 232, 394, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 256, 0, 307, 0, 0,
- 0, 421, 0, 0, 0, 0, 0, 0, 0, 0,
- 279, 0, 276, 188, 202, 0, 0, 317, 355, 360,
- 0, 0, 0, 224, 0, 358, 330, 409, 209, 247,
- 352, 335, 356, 0, 0, 357, 285, 398, 347, 408,
- 422, 423, 231, 311, 415, 391, 419, 431, 203, 228,
- 324, 384, 412, 376, 304, 395, 275, 375, 254, 191,
- 283, 195, 386, 406, 214, 368, 0, 0, 0, 197,
- 404, 383, 301, 272, 273, 196, 0, 351, 235, 252,
- 226, 320, 401, 402, 225, 433, 204, 418, 199, 205,
- 417, 313, 397, 405, 302, 293, 198, 403, 300, 292,
- 278, 245, 261, 345, 288, 346, 262, 309, 308, 310,
- 0, 193, 0, 381, 413, 434, 211, 0, 0, 393,
- 427, 430, 0, 348, 212, 253, 244, 344, 251, 281,
- 426, 428, 429, 210, 342, 259, 312, 206, 264, 377,
- 277, 286, 0, 0, 329, 359, 215, 411, 378, 0,
+ 0, 0, 0, 0, 187, 188, 199, 207, 217, 229,
+ 242, 250, 260, 264, 267, 270, 271, 274, 279, 296,
+ 301, 302, 303, 304, 320, 321, 322, 325, 328, 329,
+ 332, 334, 335, 338, 344, 345, 346, 347, 348, 350,
+ 357, 361, 369, 370, 371, 372, 373, 375, 376, 380,
+ 381, 382, 383, 391, 395, 410, 411, 422, 434, 438,
+ 261, 418, 439, 0, 295, 0, 0, 297, 246, 263,
+ 272, 0, 429, 392, 203, 363, 253, 192, 220, 206,
+ 227, 241, 243, 276, 305, 311, 340, 343, 258, 238,
+ 218, 360, 215, 378, 398, 399, 400, 402, 309, 234,
+ 327, 0, 0, 0, 0, 0, 0, 0, 0, 237,
+ 0, 0, 0, 0, 0, 285, 0, 0, 0, 341,
+ 0, 379, 223, 294, 292, 407, 247, 240, 236, 222,
+ 269, 300, 339, 397, 333, 0, 289, 0, 0, 388,
+ 312, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 275, 221, 190, 324,
+ 389, 251, 0, 0, 0, 182, 183, 184, 0, 948,
+ 0, 0, 0, 0, 0, 0, 212, 0, 219, 0,
+ 0, 0, 0, 233, 273, 239, 232, 404, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 259, 0, 313, 0, 0, 0, 0, 435, 0, 0,
+ 0, 0, 0, 0, 0, 0, 284, 0, 281, 186,
+ 201, 0, 0, 323, 362, 368, 0, 0, 0, 224,
+ 0, 366, 337, 421, 208, 249, 359, 342, 364, 0,
+ 0, 365, 290, 409, 354, 419, 436, 437, 231, 317,
+ 427, 401, 433, 447, 202, 228, 331, 394, 424, 385,
+ 310, 405, 406, 280, 384, 257, 189, 288, 444, 200,
+ 374, 216, 193, 396, 417, 213, 377, 0, 0, 0,
+ 195, 415, 393, 307, 277, 278, 194, 0, 358, 235,
+ 255, 226, 326, 412, 413, 225, 449, 204, 432, 197,
+ 0, 431, 319, 408, 416, 308, 299, 196, 414, 306,
+ 298, 283, 245, 265, 352, 293, 353, 266, 315, 314,
+ 316, 0, 191, 0, 390, 425, 450, 210, 0, 0,
+ 403, 441, 446, 0, 355, 211, 256, 244, 351, 254,
+ 286, 440, 442, 443, 445, 209, 349, 262, 330, 420,
+ 248, 428, 318, 205, 268, 386, 282, 291, 0, 0,
+ 336, 367, 214, 423, 387, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 185, 198, 287, 0, 356,
+ 252, 448, 430, 426, 0, 0, 230, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 187,
- 200, 282, 0, 349, 250, 432, 416, 414, 0, 0,
- 230, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 189, 190, 201, 208, 217, 229, 242,
- 248, 257, 260, 263, 266, 267, 269, 274, 291, 295,
- 296, 297, 298, 314, 315, 316, 319, 322, 323, 325,
- 327, 328, 331, 337, 338, 339, 340, 341, 343, 350,
- 354, 361, 362, 363, 364, 365, 366, 367, 371, 372,
- 373, 374, 382, 385, 399, 400, 410, 420, 424, 258,
- 407, 425, 0, 290, 0, 194, 220, 207, 227, 241,
- 243, 271, 299, 305, 333, 336, 255, 238, 218, 353,
- 216, 369, 388, 389, 390, 392, 303, 234, 1038, 0,
- 0, 0, 0, 0, 0, 321, 0, 0, 0, 0,
+ 188, 199, 207, 217, 229, 242, 250, 260, 264, 267,
+ 270, 271, 274, 279, 296, 301, 302, 303, 304, 320,
+ 321, 322, 325, 328, 329, 332, 334, 335, 338, 344,
+ 345, 346, 347, 348, 350, 357, 361, 369, 370, 371,
+ 372, 373, 375, 376, 380, 381, 382, 383, 391, 395,
+ 410, 411, 422, 434, 438, 261, 418, 439, 0, 295,
+ 0, 0, 297, 246, 263, 272, 0, 429, 392, 203,
+ 363, 253, 192, 220, 206, 227, 241, 243, 276, 305,
+ 311, 340, 343, 258, 238, 218, 360, 215, 378, 398,
+ 399, 400, 402, 309, 234, 327, 0, 0, 0, 0,
0, 0, 0, 0, 237, 0, 0, 0, 0, 0,
- 280, 0, 0, 334, 0, 370, 223, 289, 287, 396,
- 246, 240, 236, 222, 265, 294, 332, 387, 326, 0,
- 284, 0, 0, 379, 306, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 270, 221, 192, 318, 380, 249, 0, 0, 0, 174,
- 175, 176, 0, 0, 0, 0, 0, 0, 0, 0,
- 213, 0, 219, 0, 0, 0, 0, 233, 268, 239,
- 232, 394, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 256, 0, 307, 0, 0, 0,
- 421, 0, 0, 0, 0, 0, 0, 0, 0, 279,
- 0, 276, 188, 202, 0, 0, 317, 355, 360, 0,
- 0, 0, 224, 0, 358, 330, 409, 209, 247, 352,
- 335, 356, 0, 0, 357, 285, 398, 347, 408, 422,
- 423, 231, 311, 415, 391, 419, 431, 203, 228, 324,
- 384, 412, 376, 304, 395, 275, 375, 254, 191, 283,
- 195, 386, 406, 214, 368, 0, 0, 0, 197, 404,
- 383, 301, 272, 273, 196, 0, 351, 235, 252, 226,
- 320, 401, 402, 225, 433, 204, 418, 199, 205, 417,
- 313, 397, 405, 302, 293, 198, 403, 300, 292, 278,
- 245, 261, 345, 288, 346, 262, 309, 308, 310, 0,
- 193, 0, 381, 413, 434, 211, 0, 0, 393, 427,
- 430, 0, 348, 212, 253, 244, 344, 251, 281, 426,
- 428, 429, 210, 342, 259, 312, 206, 264, 377, 277,
- 286, 0, 0, 329, 359, 215, 411, 378, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 187, 200,
- 282, 0, 349, 250, 432, 416, 414, 0, 0, 230,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 189, 190, 201, 208, 217, 229, 242, 248,
- 257, 260, 263, 266, 267, 269, 274, 291, 295, 296,
- 297, 298, 314, 315, 316, 319, 322, 323, 325, 327,
- 328, 331, 337, 338, 339, 340, 341, 343, 350, 354,
- 361, 362, 363, 364, 365, 366, 367, 371, 372, 373,
- 374, 382, 385, 399, 400, 410, 420, 424, 258, 407,
- 425, 0, 290, 0, 194, 220, 207, 227, 241, 243,
- 271, 299, 305, 333, 336, 255, 238, 218, 353, 216,
- 369, 388, 389, 390, 392, 303, 234, 321, 0, 0,
- 0, 0, 0, 0, 0, 1029, 237, 0, 0, 0,
- 0, 0, 280, 0, 0, 334, 0, 370, 223, 289,
- 287, 396, 246, 240, 236, 222, 265, 294, 332, 387,
- 326, 0, 284, 0, 0, 379, 306, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 270, 221, 192, 318, 380, 249, 0, 0,
- 0, 174, 175, 176, 0, 0, 0, 0, 0, 0,
- 0, 0, 213, 0, 219, 0, 0, 0, 0, 233,
- 268, 239, 232, 394, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 256, 0, 307, 0,
- 0, 0, 421, 0, 0, 0, 0, 0, 0, 0,
- 0, 279, 0, 276, 188, 202, 0, 0, 317, 355,
- 360, 0, 0, 0, 224, 0, 358, 330, 409, 209,
- 247, 352, 335, 356, 0, 0, 357, 285, 398, 347,
- 408, 422, 423, 231, 311, 415, 391, 419, 431, 203,
- 228, 324, 384, 412, 376, 304, 395, 275, 375, 254,
- 191, 283, 195, 386, 406, 214, 368, 0, 0, 0,
- 197, 404, 383, 301, 272, 273, 196, 0, 351, 235,
- 252, 226, 320, 401, 402, 225, 433, 204, 418, 199,
- 205, 417, 313, 397, 405, 302, 293, 198, 403, 300,
- 292, 278, 245, 261, 345, 288, 346, 262, 309, 308,
- 310, 0, 193, 0, 381, 413, 434, 211, 0, 0,
- 393, 427, 430, 0, 348, 212, 253, 244, 344, 251,
- 281, 426, 428, 429, 210, 342, 259, 312, 206, 264,
- 377, 277, 286, 0, 0, 329, 359, 215, 411, 378,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 187, 200, 282, 0, 349, 250, 432, 416, 414, 0,
+ 285, 0, 0, 0, 341, 0, 379, 223, 294, 292,
+ 407, 247, 240, 236, 222, 269, 300, 339, 397, 333,
+ 0, 289, 0, 0, 388, 312, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 275, 221, 190, 324, 389, 251, 0, 0, 0,
+ 182, 183, 184, 0, 0, 0, 0, 0, 0, 0,
+ 0, 212, 0, 219, 0, 0, 0, 0, 233, 273,
+ 239, 232, 404, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 507, 0, 259, 0, 313, 0, 0,
+ 0, 0, 435, 0, 0, 0, 0, 0, 0, 0,
+ 0, 284, 0, 281, 186, 201, 0, 0, 323, 362,
+ 368, 0, 0, 0, 224, 0, 366, 337, 421, 208,
+ 249, 359, 342, 364, 0, 0, 365, 290, 409, 354,
+ 419, 436, 437, 231, 317, 427, 401, 433, 447, 202,
+ 228, 331, 394, 424, 385, 310, 405, 406, 280, 384,
+ 257, 189, 288, 444, 200, 374, 216, 193, 396, 417,
+ 213, 377, 0, 0, 0, 195, 415, 393, 307, 277,
+ 278, 194, 0, 358, 235, 255, 226, 326, 412, 413,
+ 225, 449, 204, 432, 197, 0, 431, 319, 408, 416,
+ 308, 299, 196, 414, 306, 298, 283, 245, 265, 352,
+ 293, 353, 266, 315, 314, 316, 0, 191, 0, 390,
+ 425, 450, 210, 0, 0, 403, 441, 446, 0, 355,
+ 211, 256, 244, 351, 254, 286, 440, 442, 443, 445,
+ 209, 349, 262, 330, 420, 248, 428, 318, 205, 268,
+ 386, 282, 291, 0, 0, 336, 367, 214, 423, 387,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 198, 287, 0, 356, 252, 448, 430, 426, 0,
0, 230, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 189, 190, 201, 208, 217, 229,
- 242, 248, 257, 260, 263, 266, 267, 269, 274, 291,
- 295, 296, 297, 298, 314, 315, 316, 319, 322, 323,
- 325, 327, 328, 331, 337, 338, 339, 340, 341, 343,
- 350, 354, 361, 362, 363, 364, 365, 366, 367, 371,
- 372, 373, 374, 382, 385, 399, 400, 410, 420, 424,
- 258, 407, 425, 0, 290, 0, 194, 220, 207, 227,
- 241, 243, 271, 299, 305, 333, 336, 255, 238, 218,
- 353, 216, 369, 388, 389, 390, 392, 303, 234, 321,
- 0, 0, 0, 0, 0, 0, 0, 0, 237, 0,
- 0, 0, 0, 0, 280, 0, 0, 334, 0, 370,
- 223, 289, 287, 396, 246, 240, 236, 222, 265, 294,
- 332, 387, 326, 0, 284, 0, 0, 379, 306, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 270, 221, 192, 318, 380, 249,
- 0, 0, 0, 174, 175, 176, 0, 902, 0, 0,
- 0, 0, 0, 0, 213, 0, 219, 0, 0, 0,
- 0, 233, 268, 239, 232, 394, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 256, 0,
- 307, 0, 0, 0, 421, 0, 0, 0, 0, 0,
- 0, 0, 0, 279, 0, 276, 188, 202, 0, 0,
- 317, 355, 360, 0, 0, 0, 224, 0, 358, 330,
- 409, 209, 247, 352, 335, 356, 0, 0, 357, 285,
- 398, 347, 408, 422, 423, 231, 311, 415, 391, 419,
- 431, 203, 228, 324, 384, 412, 376, 304, 395, 275,
- 375, 254, 191, 283, 195, 386, 406, 214, 368, 0,
- 0, 0, 197, 404, 383, 301, 272, 273, 196, 0,
- 351, 235, 252, 226, 320, 401, 402, 225, 433, 204,
- 418, 199, 205, 417, 313, 397, 405, 302, 293, 198,
- 403, 300, 292, 278, 245, 261, 345, 288, 346, 262,
- 309, 308, 310, 0, 193, 0, 381, 413, 434, 211,
- 0, 0, 393, 427, 430, 0, 348, 212, 253, 244,
- 344, 251, 281, 426, 428, 429, 210, 342, 259, 312,
- 206, 264, 377, 277, 286, 0, 0, 329, 359, 215,
- 411, 378, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 187, 200, 282, 0, 349, 250, 432, 416,
- 414, 0, 0, 230, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 189, 190, 201, 208,
- 217, 229, 242, 248, 257, 260, 263, 266, 267, 269,
- 274, 291, 295, 296, 297, 298, 314, 315, 316, 319,
- 322, 323, 325, 327, 328, 331, 337, 338, 339, 340,
- 341, 343, 350, 354, 361, 362, 363, 364, 365, 366,
- 367, 371, 372, 373, 374, 382, 385, 399, 400, 410,
- 420, 424, 258, 407, 425, 0, 290, 0, 194, 220,
- 207, 227, 241, 243, 271, 299, 305, 333, 336, 255,
- 238, 218, 353, 216, 369, 388, 389, 390, 392, 303,
- 234, 321, 0, 0, 0, 0, 0, 0, 0, 0,
- 237, 0, 0, 0, 0, 0, 280, 0, 0, 334,
- 0, 370, 223, 289, 287, 396, 246, 240, 236, 222,
- 265, 294, 332, 387, 326, 0, 284, 0, 0, 379,
- 306, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 270, 221, 192, 318,
- 380, 249, 0, 0, 0, 174, 175, 176, 0, 0,
- 0, 0, 0, 0, 0, 0, 213, 0, 219, 0,
- 0, 0, 0, 233, 268, 239, 232, 394, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 480, 0,
- 256, 0, 307, 0, 0, 0, 421, 0, 0, 0,
- 0, 0, 0, 0, 0, 279, 0, 276, 188, 202,
- 0, 0, 317, 355, 360, 0, 0, 0, 224, 0,
- 358, 330, 409, 209, 247, 352, 335, 356, 0, 0,
- 357, 285, 398, 347, 408, 422, 423, 231, 311, 415,
- 391, 419, 431, 203, 228, 324, 384, 412, 376, 304,
- 395, 275, 375, 254, 191, 283, 195, 386, 406, 214,
- 368, 0, 0, 0, 197, 404, 383, 301, 272, 273,
- 196, 0, 351, 235, 252, 226, 320, 401, 402, 225,
- 433, 204, 418, 199, 205, 417, 313, 397, 405, 302,
- 293, 198, 403, 300, 292, 278, 245, 261, 345, 288,
- 346, 262, 309, 308, 310, 0, 193, 0, 381, 413,
- 434, 211, 0, 0, 393, 427, 430, 0, 348, 212,
- 253, 244, 344, 251, 281, 426, 428, 429, 210, 342,
- 259, 312, 206, 264, 377, 277, 286, 0, 0, 329,
- 359, 215, 411, 378, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 187, 200, 282, 0, 349, 250,
- 432, 416, 414, 0, 0, 230, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 189, 190,
- 201, 208, 217, 229, 242, 248, 257, 260, 263, 266,
- 267, 269, 274, 291, 295, 296, 297, 298, 314, 315,
- 316, 319, 322, 323, 325, 327, 328, 331, 337, 338,
- 339, 340, 341, 343, 350, 354, 361, 362, 363, 364,
- 365, 366, 367, 371, 372, 373, 374, 382, 385, 399,
- 400, 410, 420, 424, 479, 407, 425, 0, 290, 0,
- 194, 220, 207, 227, 241, 243, 271, 299, 305, 333,
- 336, 255, 238, 218, 353, 216, 369, 388, 389, 390,
- 392, 303, 234, 321, 0, 0, 0, 0, 0, 0,
- 0, 0, 237, 0, 0, 0, 0, 0, 280, 0,
- 0, 334, 0, 370, 223, 289, 287, 396, 246, 240,
- 236, 222, 265, 294, 332, 387, 326, 0, 284, 0,
- 0, 379, 306, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 270, 221,
- 192, 318, 380, 249, 0, 0, 0, 174, 175, 176,
- 0, 0, 0, 0, 0, 0, 0, 0, 213, 0,
- 219, 0, 0, 0, 0, 233, 268, 239, 232, 394,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 256, 0, 307, 0, 182, 0, 421, 0,
- 0, 0, 0, 0, 0, 0, 0, 279, 0, 276,
- 188, 202, 0, 0, 317, 355, 360, 0, 0, 0,
- 224, 0, 358, 330, 409, 209, 247, 352, 335, 356,
- 0, 0, 357, 285, 398, 347, 408, 422, 423, 231,
- 311, 415, 391, 419, 431, 203, 228, 324, 384, 412,
- 376, 304, 395, 275, 375, 254, 191, 283, 195, 386,
- 406, 214, 368, 0, 0, 0, 197, 404, 383, 301,
- 272, 273, 196, 0, 351, 235, 252, 226, 320, 401,
- 402, 225, 433, 204, 418, 199, 205, 417, 313, 397,
- 405, 302, 293, 198, 403, 300, 292, 278, 245, 261,
- 345, 288, 346, 262, 309, 308, 310, 0, 193, 0,
- 381, 413, 434, 211, 0, 0, 393, 427, 430, 0,
- 348, 212, 253, 244, 344, 251, 281, 426, 428, 429,
- 210, 342, 259, 312, 206, 264, 377, 277, 286, 0,
- 0, 329, 359, 215, 411, 378, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 187, 200, 282, 0,
- 349, 250, 432, 416, 414, 0, 0, 230, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 189, 190, 201, 208, 217, 229, 242, 248, 257, 260,
- 263, 266, 267, 269, 274, 291, 295, 296, 297, 298,
- 314, 315, 316, 319, 322, 323, 325, 327, 328, 331,
- 337, 338, 339, 340, 341, 343, 350, 354, 361, 362,
- 363, 364, 365, 366, 367, 371, 372, 373, 374, 382,
- 385, 399, 400, 410, 420, 424, 258, 407, 425, 0,
- 290, 0, 194, 220, 207, 227, 241, 243, 271, 299,
- 305, 333, 336, 255, 238, 218, 353, 216, 369, 388,
- 389, 390, 392, 303, 234, 321, 0, 0, 0, 0,
+ 0, 0, 0, 0, 187, 188, 199, 207, 217, 229,
+ 242, 250, 260, 264, 267, 270, 271, 274, 279, 296,
+ 301, 302, 303, 304, 320, 321, 322, 325, 328, 329,
+ 332, 334, 335, 338, 344, 345, 346, 347, 348, 350,
+ 357, 361, 369, 370, 371, 372, 373, 375, 376, 380,
+ 381, 382, 383, 391, 395, 410, 411, 422, 434, 438,
+ 506, 418, 439, 0, 295, 0, 0, 297, 246, 263,
+ 272, 0, 429, 392, 203, 363, 253, 192, 220, 206,
+ 227, 241, 243, 276, 305, 311, 340, 343, 258, 238,
+ 218, 360, 215, 378, 398, 399, 400, 402, 309, 234,
+ 327, 0, 0, 0, 0, 0, 0, 0, 0, 237,
+ 0, 0, 0, 0, 0, 285, 0, 0, 0, 341,
+ 0, 379, 223, 294, 292, 407, 247, 240, 236, 222,
+ 269, 300, 339, 397, 333, 0, 289, 0, 0, 388,
+ 312, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 275, 221, 190, 324,
+ 389, 251, 0, 0, 0, 182, 183, 184, 0, 0,
+ 0, 0, 0, 0, 0, 0, 212, 0, 219, 0,
+ 0, 0, 0, 233, 273, 239, 232, 404, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 259, 0, 313, 0, 0, 456, 0, 435, 0, 0,
+ 0, 0, 0, 0, 0, 0, 284, 0, 281, 186,
+ 201, 0, 0, 323, 362, 368, 0, 0, 0, 224,
+ 0, 366, 337, 421, 208, 249, 359, 342, 364, 0,
+ 0, 365, 290, 409, 354, 419, 436, 437, 231, 317,
+ 427, 401, 433, 447, 202, 228, 331, 394, 424, 385,
+ 310, 405, 406, 280, 384, 257, 189, 288, 444, 200,
+ 374, 216, 193, 396, 417, 213, 377, 0, 0, 0,
+ 195, 415, 393, 307, 277, 278, 194, 0, 358, 235,
+ 255, 226, 326, 412, 413, 225, 449, 204, 432, 197,
+ 0, 431, 319, 408, 416, 308, 299, 196, 414, 306,
+ 298, 283, 245, 265, 352, 293, 353, 266, 315, 314,
+ 316, 0, 191, 0, 390, 425, 450, 210, 0, 0,
+ 403, 441, 446, 0, 355, 211, 256, 244, 351, 254,
+ 286, 440, 442, 443, 445, 209, 349, 262, 330, 420,
+ 248, 428, 318, 205, 268, 386, 282, 291, 0, 0,
+ 336, 367, 214, 423, 387, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 185, 198, 287, 0, 356,
+ 252, 448, 430, 426, 0, 0, 230, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 187,
+ 188, 199, 207, 217, 229, 242, 250, 260, 264, 267,
+ 270, 271, 274, 279, 296, 301, 302, 303, 304, 320,
+ 321, 322, 325, 328, 329, 332, 334, 335, 338, 344,
+ 345, 346, 347, 348, 350, 357, 361, 369, 370, 371,
+ 372, 373, 375, 376, 380, 381, 382, 383, 391, 395,
+ 410, 411, 422, 434, 438, 261, 418, 439, 0, 295,
+ 0, 0, 297, 246, 263, 272, 0, 429, 392, 203,
+ 363, 253, 192, 220, 206, 227, 241, 243, 276, 305,
+ 311, 340, 343, 258, 238, 218, 360, 215, 378, 398,
+ 399, 400, 402, 309, 234, 327, 0, 0, 0, 0,
0, 0, 0, 0, 237, 0, 0, 0, 0, 0,
- 280, 0, 0, 334, 0, 370, 223, 289, 287, 396,
- 246, 240, 236, 222, 265, 294, 332, 387, 326, 0,
- 284, 0, 0, 379, 306, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 270, 221, 192, 318, 380, 249, 0, 0, 0, 174,
- 175, 176, 0, 0, 0, 0, 0, 0, 0, 0,
- 213, 0, 219, 0, 0, 0, 0, 233, 268, 239,
- 232, 394, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 256, 0, 307, 0, 0, 0,
- 421, 0, 0, 0, 0, 0, 0, 0, 0, 279,
- 0, 276, 188, 202, 0, 0, 317, 355, 360, 0,
- 0, 0, 224, 0, 358, 330, 409, 209, 247, 352,
- 335, 356, 0, 0, 357, 285, 398, 347, 408, 422,
- 423, 231, 311, 415, 391, 419, 431, 203, 228, 324,
- 384, 412, 376, 304, 395, 275, 375, 254, 191, 283,
- 195, 386, 406, 214, 368, 0, 0, 0, 197, 404,
- 383, 301, 272, 273, 196, 0, 351, 235, 252, 226,
- 320, 401, 402, 225, 433, 204, 418, 199, 205, 417,
- 313, 397, 405, 302, 293, 198, 403, 300, 292, 278,
- 245, 261, 345, 288, 346, 262, 309, 308, 310, 0,
- 193, 0, 381, 413, 434, 211, 0, 0, 393, 427,
- 430, 0, 348, 212, 253, 244, 344, 251, 281, 426,
- 428, 429, 210, 342, 259, 312, 206, 264, 377, 277,
- 286, 0, 0, 329, 359, 215, 411, 378, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 187, 200,
- 282, 0, 349, 250, 432, 416, 414, 0, 0, 230,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 189, 190, 201, 208, 217, 229, 242, 248,
- 257, 260, 263, 266, 267, 269, 274, 291, 295, 296,
- 297, 298, 314, 315, 316, 319, 322, 323, 325, 327,
- 328, 331, 337, 338, 339, 340, 341, 343, 350, 354,
- 361, 362, 363, 364, 365, 366, 367, 371, 372, 373,
- 374, 382, 385, 399, 400, 410, 420, 424, 258, 407,
- 425, 0, 290, 0, 194, 220, 207, 227, 241, 243,
- 271, 299, 305, 333, 336, 255, 238, 218, 353, 216,
- 369, 388, 389, 390, 392, 303, 234,
+ 285, 0, 0, 0, 341, 0, 379, 223, 294, 292,
+ 407, 247, 240, 236, 222, 269, 300, 339, 397, 333,
+ 0, 289, 0, 0, 388, 312, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 275, 221, 190, 324, 389, 251, 0, 0, 0,
+ 182, 183, 184, 0, 0, 0, 0, 0, 0, 0,
+ 0, 212, 0, 219, 0, 0, 0, 0, 233, 273,
+ 239, 232, 404, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 259, 0, 313, 0, 0,
+ 0, 0, 435, 0, 0, 0, 0, 0, 0, 0,
+ 0, 284, 0, 281, 186, 201, 0, 0, 323, 362,
+ 368, 0, 0, 0, 224, 0, 366, 337, 421, 208,
+ 249, 359, 342, 364, 0, 0, 365, 290, 409, 354,
+ 419, 436, 437, 231, 317, 427, 401, 433, 447, 202,
+ 228, 331, 394, 424, 385, 310, 405, 406, 280, 384,
+ 257, 189, 288, 444, 200, 374, 216, 193, 396, 417,
+ 213, 377, 0, 0, 0, 195, 415, 393, 307, 277,
+ 278, 194, 0, 358, 235, 255, 226, 326, 412, 413,
+ 225, 449, 204, 432, 197, 0, 431, 319, 408, 416,
+ 308, 299, 196, 414, 306, 298, 283, 245, 265, 352,
+ 293, 353, 266, 315, 314, 316, 0, 191, 0, 390,
+ 425, 450, 210, 0, 0, 403, 441, 446, 0, 355,
+ 211, 256, 244, 351, 254, 286, 440, 442, 443, 445,
+ 209, 349, 262, 330, 420, 248, 428, 318, 205, 268,
+ 386, 282, 291, 0, 0, 336, 367, 214, 423, 387,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 185, 198, 287, 0, 356, 252, 448, 430, 426, 0,
+ 0, 230, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 187, 188, 199, 207, 217, 229,
+ 242, 250, 260, 264, 267, 270, 271, 274, 279, 296,
+ 301, 302, 303, 304, 320, 321, 322, 325, 328, 329,
+ 332, 334, 335, 338, 344, 345, 346, 347, 348, 350,
+ 357, 361, 369, 370, 371, 372, 373, 375, 376, 380,
+ 381, 382, 383, 391, 395, 410, 411, 422, 434, 438,
+ 261, 418, 439, 0, 295, 0, 0, 297, 246, 263,
+ 272, 0, 429, 392, 203, 363, 253, 192, 220, 206,
+ 227, 241, 243, 276, 305, 311, 340, 343, 258, 238,
+ 218, 360, 215, 378, 398, 399, 400, 402, 309, 234,
}
var yyPact = [...]int{
- 3693, -1000, -327, 1534, -1000, -1000, -1000, -1000, -1000, -1000,
+ 4553, -1000, -344, 1605, -1000, -1000, -1000, -1000, -1000, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
- -1000, 1483, 1092, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
- 486, 1191, 177, 1411, 265, 181, 950, 350, 154, 26084,
- 346, 111, 26516, -1000, 38, -1000, 29, 26516, 39, 25652,
- -1000, -1000, -1000, 11795, 1364, -75, -80, -1000, -1000, -1000,
- -1000, -1000, -1000, -1000, -1000, 1167, 1452, 1453, 1480, 1003,
- 1504, -1000, 10054, 10054, 309, 309, 309, 8326, -1000, -1000,
- 15696, 26516, 26516, 1196, 281, 341, 281, -153, -1000, -1000,
- -1000, -1000, -1000, -1000, 1411, -1000, -1000, 83, -1000, 215,
- 1119, -1000, 1118, -1000, 420, 336, 202, 274, 267, 201,
- 200, 191, 189, 188, 187, 185, 184, 236, -1000, 456,
- 456, -192, -193, 1879, 271, 271, 271, 328, 1390, 1388,
- -1000, 541, -1000, 456, 456, 55, 456, 456, 456, 456,
- 146, 135, 456, 456, 456, 456, 456, 456, 456, 456,
- 456, 456, 456, 456, 456, 456, 456, 26516, -1000, 81,
- 561, 487, 1411, 97, -1000, -1000, -1000, 26516, 276, 950,
- 276, 276, 26516, -1000, 393, -1000, -1000, -1000, -1000, -1000,
+ -1000, -1000, -1000, 1576, 1182, -1000, -1000, -1000, -1000, -1000,
+ -1000, -1000, 581, 1246, 223, 1493, 3583, 156, 28476, 362,
+ 101, 28021, 361, 3864, 28476, -1000, 102, -1000, 89, 28476,
+ 93, 27566, -1000, -1000, -282, 12518, 1445, 16, 15, 28476,
+ 109, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1216,
+ 1534, 1542, 1581, 1059, 1598, -1000, 10685, 10685, 296, 296,
+ 296, 8865, -1000, -1000, 16626, 28476, 28476, 1258, 360, 964,
+ 346, 344, 343, -1000, -104, -1000, -1000, -1000, -1000, 1493,
+ -1000, -1000, 146, -1000, 234, 1176, -1000, 1175, -1000, 493,
+ 462, 231, 308, 295, 230, 229, 228, 226, 224, 220,
+ 219, 216, 237, -1000, 491, 491, -164, -172, 2210, 287,
+ 287, 287, 317, 1457, 1456, -1000, 526, -1000, 491, 491,
+ 126, 491, 491, 491, 491, 175, 171, 491, 491, 491,
+ 491, 491, 491, 491, 491, 491, 491, 491, 491, 491,
+ 491, 491, 28476, -1000, 151, 495, 246, 534, 1493, 164,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
@@ -3888,26 +4037,29 @@ var yyPact = [...]int{
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
- -1000, -1000, -1000, -1000, -1000, 26516, 589, 589, 589, 589,
- 589, 589, 23, -1000, -29, 149, 145, 98, 89, 950,
- 225, -1000, 399, -1000, 85, -13, -1000, 589, 5650, 5650,
- 5650, -1000, 1394, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
- -1000, 326, -1000, -1000, -1000, -1000, 26516, 25220, 234, 484,
- -1000, -1000, -1000, -1000, 1063, 661, -1000, 11795, 2052, 1142,
- 1142, -1000, -1000, 370, -1000, -1000, 13091, 13091, 13091, 13091,
- 13091, 13091, 13091, 13091, 13091, 13091, -1000, -1000, -1000, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
- 1142, 392, -1000, 11363, 1142, 1142, 1142, 1142, 1142, 1142,
- 1142, 1142, 11795, 1142, 1142, 1142, 1142, 1142, 1142, 1142,
- 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142, 1142,
- -1000, -1000, -1000, 26516, -1000, 1483, -1000, 1092, -1000, -1000,
- -1000, 1408, 11795, 11795, 1483, -1000, 1255, 10054, -1000, -1000,
- 1339, -1000, -1000, -1000, -1000, 557, 1517, -1000, 14387, 391,
- 1507, 24788, -1000, 19165, 24356, 1117, 7880, -50, -1000, -1000,
- -1000, 469, 17869, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
+ -1000, 28476, 359, 964, 297, -1000, 28476, -1000, 419, 28476,
+ 628, 628, 49, 628, 628, 628, 628, 91, 417, 13,
+ -1000, 76, 160, 158, 152, 584, 111, 62, -1000, -1000,
+ 161, 584, 103, -1000, 628, 6989, 6989, 6989, -1000, 1480,
+ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 316, -1000,
+ -1000, -1000, -1000, 28476, 27111, 286, 531, -1000, -1000, -1000,
+ 72, -1000, -1000, 1117, 765, -1000, 12518, 2281, 1178, 1178,
+ -1000, -1000, 410, -1000, -1000, 13883, 13883, 13883, 13883, 13883,
+ 13883, 13883, 13883, 13883, 13883, -1000, -1000, -1000, -1000, -1000,
+ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1178,
+ 416, -1000, 12063, 1178, 1178, 1178, 1178, 1178, 1178, 1178,
+ 1178, 12518, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178,
+ 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, 1178, -1000,
+ -1000, -1000, 28476, -1000, 1178, 926, 1576, -1000, 1182, -1000,
+ -1000, -1000, 1482, 12518, 12518, 1576, -1000, 1374, 10685, -1000,
+ -1000, 1506, -1000, -1000, -1000, -1000, -1000, 622, 1604, -1000,
+ 15248, 415, 1602, 26656, -1000, 20279, 26201, 1174, 8396, -47,
+ -1000, -1000, -1000, 529, 18914, -1000, -1000, -1000, -1000, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
+ 1480, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
@@ -3918,410 +4070,867 @@ var yyPact = [...]int{
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
- -1000, 1394, 1070, 26516, -1000, -1000, 3728, 950, -1000, 1186,
- -1000, 1061, -1000, 1157, 81, 26516, 519, 950, 950, -1000,
- -1000, -1000, 456, 456, 222, 265, 3498, -1000, -1000, -1000,
- 23917, 1182, 950, -1000, 1180, -1000, 1425, 305, 472, 472,
- 950, -1000, -1000, 26516, 950, 1424, 1423, 26516, 26516, -1000,
- 23485, -1000, 23053, 22621, 800, 26516, 22189, 21757, 21325, 20893,
- 20461, -1000, 1274, -1000, 1190, -1000, -1000, -1000, 26516, 26516,
- 26516, -54, -1000, -1000, 26516, 950, -1000, -1000, 797, 788,
- 456, 456, 787, 892, 886, 880, 456, 456, 782, 878,
- 935, 194, 774, 772, 769, 826, 875, 106, 821, 747,
- 760, 26516, 1179, -1000, 73, 461, 157, 231, 134, 26516,
- 129, 1411, 1361, 1115, 324, 26516, 1438, 1236, 26516, 950,
- -1000, 6988, -1000, -1000, 873, 11795, -1000, -1000, -1000, -1000,
- -1000, 589, 26516, 589, 26516, 589, 589, 589, 589, 548,
- 565, 548, -1000, -1000, -1000, -1000, 5650, 5650, 26516, 5650,
- 5650, 26516, 5650, 5650, 565, -1000, -1000, -1000, 442, -1000,
- 1235, -1000, -1000, -1000, -1000, -1000, -1000, -1000, 36, -1000,
- -1000, -1000, -1000, -1000, 1534, -1000, -1000, -1000, -125, 11795,
- 11795, 11795, 11795, 667, 441, 13091, 700, 470, 13091, 13091,
- 13091, 13091, 13091, 13091, 13091, 13091, 13091, 13091, 13091, 13091,
- 13091, 13091, 13091, 715, -1000, -1000, -1000, -1000, -1000, -1000,
- -1000, -1000, 950, -1000, 1511, 966, 966, 410, 410, 410,
- 410, 410, 410, 410, 410, 410, 13523, 8758, 6988, 1003,
- 1055, 1483, 10054, 10054, 11795, 11795, 10918, 10486, 10054, 1384,
- 506, 661, 26516, -1000, 908, -1000, -1000, 12659, -1000, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
- 26516, 26516, 10054, 10054, 10054, 10054, 10054, -1000, 1110, -1000,
- -171, 15264, 1453, 1003, 1339, 1429, 1527, 434, 963, 1109,
- -1000, 813, 1453, 17437, 1149, -1000, 1339, -1000, -1000, -1000,
- 26516, -1000, -1000, 20029, -1000, -1000, 6542, 26516, 183, 26516,
- -1000, 1138, 1228, -1000, -1000, -1000, 1443, 17005, 26516, 1122,
- 1108, -1000, -1000, 386, 7434, -50, -1000, 7434, 1097, -1000,
- -120, -117, 9190, 401, -1000, -1000, -1000, 1879, 13955, 976,
- 608, -45, -1000, -1000, -1000, 1157, -1000, 1157, 1157, 1157,
- 1157, -54, -54, -54, -54, -1000, -1000, -1000, -1000, -1000,
- 1178, 1177, -1000, 1157, 1157, 1157, 1157, -1000, -1000, -1000,
+ -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1115, 28476, -1000,
+ -1000, 4167, 964, -1000, 1238, -1000, 1112, -1000, 1190, 151,
+ 304, 1267, 964, 964, 964, 304, -1000, -1000, -1000, 491,
+ 491, 236, 3583, 3840, -1000, -1000, -1000, 25739, 1237, 964,
+ -1000, 1236, -1000, 1511, 285, 466, 466, 964, -1000, -1000,
+ 28476, 964, 1510, 1509, 28476, 28476, -1000, 25284, -1000, 24829,
+ 24374, 823, 28476, 23919, 23464, 23009, 22554, 22099, -1000, 1304,
+ -1000, 1243, -1000, -1000, -1000, 28476, 28476, 28476, 29, -1000,
+ -1000, 28476, 964, -1000, -1000, 822, 821, 491, 491, 820,
+ 918, 915, 914, 491, 491, 816, 911, 1028, 174, 815,
+ 807, 804, 867, 909, 127, 830, 826, 786, 28476, 1231,
+ -1000, 144, 517, 186, 217, 190, 28476, 117, 1537, 138,
+ 1493, 1431, 1170, 313, 297, 1311, 28476, 1525, 297, -1000,
+ 7458, -1000, -1000, 908, 12518, -1000, 618, 584, 584, -1000,
+ -1000, -1000, -1000, -1000, -1000, 628, 28476, 618, -1000, -1000,
+ -1000, 584, 628, 28476, 628, 628, 628, 628, 584, 628,
+ 28476, 28476, 28476, 28476, 28476, 28476, 28476, 28476, 28476, 6989,
+ 6989, 6989, 461, 628, -1000, 1310, -1000, -1000, -1000, -1000,
+ -1000, -1000, -1000, -1000, 92, -1000, -1000, -1000, -1000, -1000,
+ 1605, -1000, -1000, -1000, -111, 1158, 21644, -1000, -286, -287,
+ -288, -289, -1000, -1000, -1000, -290, -296, -1000, -1000, -1000,
+ 12518, 12518, 12518, 12518, 734, 473, 13883, 714, 605, 13883,
+ 13883, 13883, 13883, 13883, 13883, 13883, 13883, 13883, 13883, 13883,
+ 13883, 13883, 13883, 13883, 538, -1000, -1000, -1000, -1000, -1000,
+ -1000, -1000, -1000, 964, -1000, 1619, 921, 921, 442, 442,
+ 442, 442, 442, 442, 442, 442, 442, 14338, 9320, 7458,
+ 1059, 1073, 1576, 10685, 10685, 12518, 12518, 11595, 11140, 10685,
+ 1473, 550, 765, 28476, -1000, 933, -1000, -1000, 13428, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
- -1000, -1000, -1000, -1000, 1176, 1176, 1176, 1159, 1159, 278,
- -1000, 11795, 79, 26516, 1434, 757, 73, -1000, 1437, 1214,
- -1000, 922, 885, -1000, 1107, -1000, -1000, 1477, -1000, -1000,
- 466, 611, 603, 452, 26516, 57, 176, -1000, 263, -1000,
- 26516, 1172, 1422, 472, 950, -1000, 950, -1000, -1000, -1000,
- -1000, 385, -1000, -1000, 950, 1105, -1000, 1113, 691, 562,
- 654, 544, 1105, -1000, -1000, -174, 1105, -1000, 1105, -1000,
- 1105, -1000, 1105, -1000, 1105, -1000, -1000, -1000, -1000, -1000,
- -1000, -1000, -1000, 488, 26516, 57, 715, -1000, 323, -1000,
- -1000, 715, 715, -1000, -1000, -1000, -1000, 872, 869, -1000,
+ -1000, 28476, 28476, 10685, 10685, 10685, 10685, 10685, -1000, 1157,
+ -1000, -168, 16171, 12518, -1000, 1542, 1059, 1506, 1508, 1614,
+ 458, 671, 1155, -1000, 685, 1542, 18459, 1098, -1000, 1506,
+ -1000, -1000, -1000, 28476, -1000, -1000, 21189, -1000, -1000, 6520,
+ 28476, 208, 28476, -1000, 1120, 1399, -1000, -1000, -1000, 1531,
+ 18004, 28476, 1122, 1105, -1000, -1000, 414, 7927, -47, -1000,
+ 7927, 1135, -1000, -43, -72, 9775, 437, -1000, -1000, -1000,
+ 2210, 14793, 986, -1000, 27, -1000, -1000, -1000, 1190, -1000,
+ 1190, 1190, 1190, 1190, 29, 29, 29, 29, -1000, -1000,
+ -1000, -1000, -1000, 1223, 1213, -1000, 1190, 1190, 1190, 1190,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
+ -1000, -1000, -1000, -1000, -1000, -1000, -1000, 1212, 1212, 1212,
+ 1207, 1207, 277, -1000, 12518, 143, 28476, 1522, 776, 144,
+ 28476, 560, 1309, -1000, 28476, 1267, 1267, 1267, 28476, 1019,
+ 974, -1000, 1149, -1000, -1000, 1580, -1000, -1000, 576, 603,
+ 578, 616, 28476, 128, 207, -1000, 264, -1000, 28476, 1211,
+ 1507, 466, 964, -1000, 964, -1000, -1000, -1000, -1000, 413,
+ -1000, -1000, 964, 1146, -1000, 1136, 707, 575, 636, 570,
+ 1146, -1000, -1000, -126, 1146, -1000, 1146, -1000, 1146, -1000,
+ 1146, -1000, 1146, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
+ -1000, 505, 28476, 128, 538, -1000, 312, -1000, -1000, 538,
+ 538, -1000, -1000, -1000, -1000, 905, 904, -1000, -1000, -1000,
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
- -1000, -1000, -1000, -1000, -1000, -316, 26516, 333, 62, 105,
- 26516, 26516, 26516, 26516, 26516, 359, -1000, -1000, -1000, 115,
- 26516, 26516, 381, -1000, 26516, 354, -1000, -1000, -1000, -1000,
- -1000, -1000, 661, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
- -1000, 589, 26516, 26516, 26516, -1000, -1000, 589, -1000, -1000,
- -1000, -1000, -1000, -1000, -1000, -1000, 26516, -1000, 855, 26516,
- 26516, -1000, -1000, -1000, -1000, -1000, 661, 441, 696, 515,
- -1000, -1000, 714, -1000, -1000, 1956, -1000, -1000, -1000, -1000,
- 700, 13091, 13091, 13091, 549, 1956, 2465, 692, 944, 410,
- 605, 605, 411, 411, 411, 411, 411, 618, 618, -1000,
- -1000, -1000, -1000, 908, -1000, -1000, -1000, 908, 10054, 10054,
- 1103, 1142, 379, -1000, 1167, -1000, -1000, 1453, 1034, 1034,
- 893, 709, 539, 1500, 1034, 520, 1498, 1034, 1034, 10054,
- -1000, -1000, 559, -1000, 11795, 908, -1000, 591, 1102, 1101,
- 1034, 908, 908, 1034, 1034, 26516, -1000, -287, -1000, -136,
- 409, 1142, -1000, 19597, -1000, -1000, 1408, -1000, -1000, 1349,
- -1000, 1306, 11795, 11795, 11795, -1000, -1000, -1000, 1408, 1455,
- -1000, 1317, 1316, 1493, 10054, 19165, 1339, -1000, -1000, -1000,
- 377, 1493, 1100, 1142, -1000, 26516, 19165, 19165, 19165, 19165,
- 19165, -1000, 1253, 1251, -1000, 1264, 1263, 1289, 26516, -1000,
- 1048, 1003, 17005, 183, 1065, 19165, 26516, -1000, -1000, 19165,
- 26516, 6096, -1000, 1097, -50, -134, -1000, -1000, -1000, -1000,
- 661, -1000, 820, -1000, 2359, -1000, 266, -1000, -1000, -1000,
- -1000, 1409, -1000, 527, -49, -1000, -1000, -54, -54, -1000,
- -1000, 401, 710, 401, 401, 401, 854, 854, -1000, -1000,
- -1000, -1000, -1000, 756, -1000, -1000, -1000, 748, -1000, -1000,
- 545, 1252, 79, -1000, -1000, 456, 851, 1368, 26516, -1000,
- -1000, 954, 332, -1000, 1233, -1000, -1000, -1000, -1000, -1000,
- 3372, 26516, 1045, -1000, 49, 26516, 947, 26516, -1000, 1043,
- 26516, -1000, 950, -1000, -1000, 6988, -1000, 26516, 1142, -1000,
- -1000, -1000, -1000, 345, 1405, 1399, 57, 49, 401, 950,
- -1000, -1000, -1000, -1000, -1000, -320, 1037, 26516, 72, -1000,
- 1166, 899, -1000, 1202, -1000, -1000, -1000, -1000, 82, 108,
- 107, 311, -1000, -1000, -1000, -1000, 5650, 26516, -1000, -1000,
- -1000, -1000, 548, -1000, 548, -1000, -1000, -1000, -1000, -1000,
- -1000, -1000, 549, 1956, 2367, -1000, 13091, 13091, -1000, -1000,
- 1034, 1034, 10054, 6988, 1483, 1408, -1000, -1000, 371, 715,
- 371, 13091, 13091, -1000, 13091, 13091, -1000, -166, 1076, 453,
- -1000, 11795, 879, -1000, -1000, 13091, 13091, -1000, -1000, -1000,
- -1000, -1000, -1000, -1000, -1000, -1000, 340, 337, 335, 26516,
- -1000, -1000, 804, 841, 1297, 661, 661, -1000, -1000, 26516,
- -1000, -1000, -1000, -1000, 1487, 11795, -1000, 1095, -1000, 5204,
- 1453, 1230, 26516, 1142, 1534, 14832, 26516, 1081, -1000, 459,
- 1228, 1201, 1229, 1459, -1000, -1000, -1000, -1000, 1249, -1000,
- 1247, -1000, -1000, -1000, -1000, -1000, 1003, 1493, 19165, 1075,
- -1000, 1075, -1000, 376, -1000, -1000, -1000, -129, -128, -1000,
- -1000, -1000, 1879, -1000, -1000, 1227, 13091, -1000, -1000, -1000,
- 401, 401, -1000, -1000, -1000, -1000, -1000, -1000, 1031, -1000,
- 1029, 1093, 1023, 35, -1000, 1194, 1386, 456, 456, -1000,
- 731, -1000, 950, -1000, -1000, 26516, 26516, 1474, 1085, -1000,
- 26516, -1000, -1000, 26516, -1000, -1000, 1312, 79, 1021, -1000,
- -1000, -1000, 176, 26516, -1000, 966, 49, -1000, -1000, -1000,
- -1000, -1000, -1000, 1144, -1000, -1000, -1000, 933, -1000, -175,
- 950, 26516, 26516, 26516, -1000, 26516, -1000, -1000, 589, 589,
- -1000, 13091, 1956, 1956, -1000, -1000, 908, -1000, 1453, -1000,
- 908, 1157, 1157, -1000, 1157, 1159, -1000, 1157, 25, 1157,
- 24, 908, 908, 2272, 2200, 2148, 1685, 1142, -161, -1000,
- 661, 11795, 1208, 816, 1142, 1142, 1142, 1015, 838, -54,
- -1000, -1000, -1000, 1461, 1473, 661, -1000, -1000, -1000, 1427,
- 1082, 981, -1000, -1000, 9622, 1019, 1311, 373, 1015, 1483,
- 26516, 11795, -1000, -1000, 11795, 1148, -1000, 11795, -1000, -1000,
- -1000, 1483, 1483, 1075, -1000, -1000, 421, -1000, -1000, -1000,
- -1000, -27, 1526, 1956, -1000, -1000, -54, 837, -54, 686,
- -1000, 649, -1000, -1000, -231, -1000, -1000, 1134, 1248, -1000,
- -1000, 1144, -1000, 26516, 26516, -1000, -1000, 165, -1000, 251,
- 986, -1000, -190, -1000, -1000, 1442, 26516, -1000, -1000, 6988,
- -1000, -1000, 1143, 1203, -1000, -1000, -1000, -1000, 1956, -1000,
- 1408, -1000, -1000, 218, -1000, -1000, -1000, -1000, -1000, -1000,
- -1000, -1000, 13091, 13091, 13091, 13091, 13091, 1453, 836, 661,
- 13091, 13091, 16560, 18733, 18733, 16128, -54, -46, -1000, 11795,
- 11795, 1418, -1000, 1142, -1000, 1126, 26516, 1142, 26516, -1000,
- 1453, -1000, 661, 661, 26516, 661, 1453, -1000, 440, -1000,
- -40, 401, -1000, 401, 916, 914, -1000, -1000, -1000, -1000,
- -1000, -1000, -1000, -1000, 1441, 1085, -1000, 162, 26516, -1000,
- 176, -1000, -196, -197, 1092, 983, 1077, -1000, 455, 26516,
- 26516, -1000, -1000, -1000, 591, 591, 591, 591, 195, 908,
- -1000, 591, 591, 968, -1000, -1000, -1000, 968, 968, 409,
- -282, -1000, 1355, 1351, 661, 1063, 1525, -1000, 1142, 1534,
- 368, 981, -1000, -1000, 965, -1000, 552, 1417, -1000, 1415,
- -1000, -1000, -1000, -1000, -1000, 1092, 1142, 1124, -1000, -1000,
- -1000, 152, -1000, 6988, 4758, 959, -1000, -1000, -1000, -1000,
- -1000, 908, 96, -182, -1000, -1000, -1000, 18301, -1000, -1000,
- -1000, -1000, -46, 211, -1000, 1321, 1319, 1467, 26516, 981,
- 26516, -1000, -1000, 831, -1000, -1000, 152, 12227, 26516, -1000,
- -74, -1000, -1000, -1000, -1000, -1000, 1202, -1000, 1269, -170,
- -187, -1000, -1000, 1331, 1333, 1333, 1351, 1466, 1341, 1338,
- -1000, 830, 979, -1000, -1000, -1000, 591, 908, 931, 272,
- -1000, -1000, -175, -1000, 1266, -1000, 1329, 742, -1000, -1000,
- -1000, -1000, 828, -1000, 1462, 1460, -1000, -1000, -1000, 1226,
- 75, -1000, -179, -1000, 673, -1000, -1000, -1000, 806, 802,
- 1216, -1000, 1505, -1000, -185, -1000, -1000, -1000, -1000, -1000,
- 1523, 347, 347, -188, -1000, -1000, -1000, 269, 634, -1000,
- -1000, -1000, -1000, -1000,
+ -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
+ -1000, -1000, -1000, -332, 28476, 326, 130, 147, 28476, 28476,
+ 28476, 28476, 28476, 376, -1000, -1000, -1000, -1000, -1000, -1000,
+ -1000, 169, 28476, 28476, 28476, 28476, 367, -1000, -1000, 28476,
+ -1000, -1000, -1000, -1000, 765, 28476, -1000, -1000, 628, 628,
+ -1000, -1000, 28476, 628, -1000, -1000, -1000, -1000, -1000, -1000,
+ 628, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
+ -1000, -1000, -1000, -1000, -1000, 902, -1000, 28476, 28476, -1000,
+ -1000, -1000, -1000, -1000, 98, -54, 205, -1000, -1000, -1000,
+ -1000, 1539, -1000, 765, 473, 547, 579, -1000, -1000, 741,
+ -1000, -1000, 2401, -1000, -1000, -1000, -1000, 714, 13883, 13883,
+ 13883, 1035, 2401, 2516, 1111, 1217, 442, 666, 666, 441,
+ 441, 441, 441, 441, 712, 712, -1000, -1000, -1000, -1000,
+ 933, -1000, -1000, -1000, 933, 10685, 10685, 1143, 1178, 408,
+ -1000, 1216, -1000, -1000, 1542, 1054, 1054, 755, 936, 639,
+ 1600, 1054, 620, 1596, 1054, 1054, 10685, -1000, -1000, 599,
+ -1000, 12518, 933, -1000, 1257, 1138, 1137, 1054, 933, 933,
+ 1054, 1054, 28476, -1000, -274, -1000, -86, 399, 1178, -1000,
+ 20734, -1000, -1000, 933, 1117, 1482, -1000, -1000, 1420, -1000,
+ 1371, 12518, 12518, 12518, -1000, -1000, -1000, 1482, 1575, -1000,
+ 1388, 1383, 1590, 10685, 20279, 1506, -1000, -1000, -1000, 406,
+ 1590, 1152, 1178, -1000, 28476, 20279, 20279, 20279, 20279, 20279,
+ -1000, 1349, 1348, -1000, 1336, 1335, 1343, 28476, -1000, 1067,
+ 1059, 18004, 208, 1102, 20279, 28476, -1000, -1000, 20279, 28476,
+ 6051, -1000, 1135, -47, -17, -1000, -1000, -1000, -1000, 765,
+ -1000, 882, -1000, 269, -1000, 270, -1000, -1000, -1000, -1000,
+ 573, 22, -1000, -1000, 29, 29, -1000, -1000, 437, 601,
+ 437, 437, 437, 900, 900, -1000, -1000, -1000, -1000, -1000,
+ 772, -1000, -1000, -1000, 746, -1000, -1000, 774, 1300, 143,
+ -1000, -1000, 491, 884, 1451, -1000, -1000, 971, 319, -1000,
+ 1521, 28476, -1000, 1308, 1305, 1302, -1000, -1000, -1000, -1000,
+ -1000, 307, 28476, 1063, -1000, 124, 28476, 968, 28476, -1000,
+ 1061, 28476, -1000, 964, -1000, -1000, 7458, -1000, 28476, 1178,
+ -1000, -1000, -1000, -1000, 348, 1487, 1483, 128, 124, 437,
+ 964, -1000, -1000, -1000, -1000, -1000, -335, 1057, 28476, 136,
+ -1000, 1209, 833, -1000, 1263, -1000, -1000, -1000, -1000, 108,
+ 185, 166, 309, -1000, 353, 1300, 28476, -1000, -1000, -1000,
+ -1000, 584, -1000, -1000, 584, -1000, -1000, -1000, -1000, -1000,
+ -1000, 1477, -68, -308, -1000, -305, -1000, -1000, -1000, -1000,
+ 1035, 2401, 2380, -1000, 13883, 13883, -1000, -1000, 1054, 1054,
+ 10685, 7458, 1576, 1482, -1000, -1000, 345, 538, 345, 13883,
+ 13883, -1000, 13883, 13883, -1000, -118, 1065, 546, -1000, 12518,
+ 777, -1000, -1000, 13883, 13883, -1000, -1000, -1000, -1000, -1000,
+ -1000, -1000, -1000, -1000, 331, 328, 310, 28476, -1000, -1000,
+ -1000, 782, 883, 1357, 765, 765, -1000, -1000, 28476, -1000,
+ -1000, -1000, -1000, 1587, 12518, -1000, 1130, -1000, 5582, 1542,
+ 1301, 28476, 1178, 1605, 15716, 28476, 1079, -1000, 492, 1399,
+ 1293, 1290, 1414, -1000, -1000, -1000, -1000, 1347, -1000, 1339,
+ -1000, -1000, -1000, -1000, -1000, 1059, 1590, 20279, 1077, -1000,
+ 1077, -1000, 403, -1000, -1000, -1000, -80, -82, -1000, -1000,
+ -1000, 2210, -1000, -1000, -1000, 637, 13883, 1613, -1000, 877,
+ 1502, -1000, 1497, -1000, -1000, 437, 437, -1000, -1000, -1000,
+ -1000, -1000, -1000, -1000, 1049, -1000, 1046, 1129, 1043, 58,
+ -1000, 1161, 1472, 491, 491, -1000, 728, -1000, 964, -1000,
+ 28476, -1000, -1000, 28476, 28476, 28476, 1579, 1125, -1000, 28476,
+ -1000, -1000, 28476, -1000, -1000, 1382, 143, 1041, -1000, -1000,
+ -1000, 207, 28476, -1000, 921, 124, -1000, -1000, -1000, -1000,
+ -1000, -1000, 1184, -1000, -1000, -1000, 963, -1000, -127, 964,
+ 28476, 28476, 28476, -1000, 28476, -1000, -1000, -1000, 628, 628,
+ -1000, 1471, -1000, 964, -1000, 13883, 2401, 2401, -1000, -1000,
+ 933, -1000, 1542, -1000, 933, 1190, 1190, -1000, 1190, 1207,
+ -1000, 1190, 78, 1190, 73, 933, 933, 2481, 2418, 2145,
+ 846, 1178, -112, -1000, 765, 12518, 2128, 1288, 1178, 1178,
+ 1178, 1017, 875, 29, -1000, -1000, -1000, 1585, 1577, 765,
+ -1000, -1000, -1000, 1514, 1128, 1100, -1000, -1000, 10230, 1038,
+ 1378, 385, 1017, 1576, 28476, 12518, -1000, -1000, 12518, 1189,
+ -1000, 12518, -1000, -1000, -1000, 1576, 1576, 1077, -1000, -1000,
+ 375, -1000, -1000, -1000, -1000, -1000, 2401, -48, -1000, -1000,
+ -1000, -1000, -1000, 29, 870, 29, 710, -1000, 693, -1000,
+ -1000, -215, -1000, -1000, 1156, 1268, -1000, -1000, 1184, -1000,
+ -1000, -1000, 28476, 28476, -1000, -1000, 198, -1000, 254, 1015,
+ -1000, -173, -1000, -1000, 1529, 28476, -1000, -1000, 7458, -1000,
+ -1000, 1181, 1265, -1000, -1000, -1000, -1000, -1000, -1000, 2401,
+ -1000, 1482, -1000, -1000, 247, -1000, -1000, -1000, -1000, -1000,
+ -1000, -1000, -1000, 13883, 13883, 13883, 13883, 13883, 1542, 866,
+ 765, 13883, 13883, 17536, 19824, 19824, 17081, 29, -4, -1000,
+ 12518, 12518, 1496, -1000, 1178, -1000, 1034, 28476, 1178, 28476,
+ -1000, 1542, -1000, 765, 765, 28476, 765, 1542, -1000, -1000,
+ 437, -1000, 437, 939, 937, -1000, -1000, -1000, -1000, -1000,
+ -1000, -1000, -1000, 1528, 1125, -1000, 192, 28476, -1000, 207,
+ -1000, -179, -180, 1182, 1012, 1123, -1000, 490, 28476, 28476,
+ -1000, -1000, -1000, 1257, 1257, 1257, 1257, 122, 933, -1000,
+ 1257, 1257, 1003, -1000, -1000, -1000, 1003, 1003, 399, -267,
+ -1000, 1428, 1394, 765, 1117, 1608, -1000, 1178, 1605, 379,
+ 1100, -1000, -1000, 992, -1000, -1000, -1000, -1000, -1000, 1182,
+ 1178, 1060, -1000, -1000, -1000, 213, -1000, 7458, 5113, 990,
+ -1000, -1000, -1000, -1000, -1000, 933, 153, -151, -1000, -1000,
+ -1000, 19369, -1000, -1000, -1000, -1000, -4, 268, -1000, 1404,
+ 1394, -1000, 1574, 1412, 1572, -1000, 28476, 1100, 28476, -1000,
+ 213, 12973, 28476, -1000, -51, -1000, -1000, -1000, -1000, -1000,
+ 1263, -1000, 1355, -124, -161, -1000, -1000, 1402, 1408, 1408,
+ 1404, -1000, 1561, 1548, -1000, 859, 1547, 852, 997, -1000,
+ -1000, 1257, 933, 984, 272, -1000, -1000, -127, -1000, 1354,
+ -1000, 1392, 713, -1000, -1000, -1000, -1000, 849, 847, -1000,
+ 667, -1000, -1000, -1000, 1272, 148, -1000, -128, -1000, 646,
+ -1000, -1000, -1000, -1000, -1000, 1269, -1000, 1595, -1000, -157,
+ -1000, -1000, -1000, 1607, 496, 496, -171, -1000, -1000, -1000,
+ 263, 721, -1000, -1000, -1000, -1000, -1000,
}
var yyPgo = [...]int{
- 0, 1805, 1801, 13, 86, 82, 1800, 1798, 1797, 1796,
- 128, 127, 126, 1794, 1782, 1780, 1779, 1778, 1777, 1776,
- 1775, 1774, 1771, 1770, 1768, 61, 110, 115, 1766, 1762,
- 1761, 1760, 1759, 122, 121, 468, 1755, 119, 1750, 1747,
- 1746, 1743, 1741, 1740, 1738, 1737, 1736, 1735, 1733, 1730,
- 199, 1729, 1728, 7, 1726, 83, 1722, 1720, 1719, 1718,
- 1715, 1714, 1712, 106, 1709, 46, 286, 48, 75, 1706,
- 72, 770, 1700, 90, 116, 1698, 447, 1697, 42, 78,
- 96, 1693, 40, 1692, 1691, 94, 1690, 1688, 1687, 69,
- 1686, 1684, 2519, 1683, 67, 76, 17, 55, 1682, 1681,
- 1680, 1679, 31, 1286, 1678, 1677, 21, 1676, 1675, 125,
- 1673, 81, 25, 20, 19, 18, 1672, 77, 1670, 8,
- 54, 32, 1668, 80, 1667, 1666, 1664, 1662, 33, 1661,
- 73, 99, 24, 1660, 6, 10, 1659, 1658, 1657, 1656,
- 1654, 1653, 4, 1652, 1650, 1649, 1648, 26, 1645, 9,
- 23, 38, 71, 111, 29, 12, 1644, 120, 1643, 27,
- 105, 68, 103, 1642, 1639, 1638, 939, 1637, 59, 1635,
- 131, 1633, 1628, 44, 1627, 431, 762, 1626, 1625, 1623,
- 64, 1117, 2383, 45, 104, 1621, 1617, 1689, 57, 74,
- 22, 1614, 1613, 1611, 123, 49, 51, 896, 43, 1608,
- 1607, 1605, 1604, 1603, 1602, 1601, 248, 1600, 1599, 1598,
- 34, 16, 95, 30, 1597, 1596, 1593, 1592, 1591, 66,
- 36, 1589, 101, 100, 62, 117, 1588, 112, 85, 70,
- 1587, 56, 1586, 1585, 1582, 1579, 41, 1575, 1574, 1572,
- 1571, 102, 84, 63, 37, 39, 98, 1570, 35, 1569,
- 1568, 97, 87, 1566, 15, 113, 11, 1556, 3, 0,
- 1555, 5, 109, 1388, 114, 1554, 1552, 1, 1551, 2,
- 1550, 1549, 79, 1548, 1547, 1544, 1543, 2749, 28, 107,
- 1541, 118,
+ 0, 1897, 1896, 32, 83, 85, 1894, 1889, 1888, 1886,
+ 134, 133, 131, 1885, 1884, 1883, 1881, 1880, 1878, 1873,
+ 1866, 1858, 1857, 1852, 1848, 65, 123, 43, 37, 140,
+ 1847, 1846, 47, 1845, 1844, 1842, 126, 117, 439, 1841,
+ 119, 1840, 1839, 1838, 1837, 1835, 1834, 1828, 1827, 1822,
+ 1820, 1818, 1815, 1814, 1813, 144, 1812, 1811, 7, 1810,
+ 51, 1809, 1808, 1807, 1806, 1805, 89, 1803, 1802, 1801,
+ 114, 1800, 1797, 50, 416, 63, 73, 1795, 1787, 77,
+ 770, 1786, 106, 128, 1782, 898, 1779, 61, 78, 86,
+ 1778, 46, 1777, 1773, 90, 1771, 1769, 1765, 74, 1761,
+ 1760, 3185, 1759, 68, 76, 15, 27, 1753, 1752, 1747,
+ 1743, 34, 44, 1741, 1732, 23, 1731, 1726, 136, 1725,
+ 88, 18, 1724, 14, 13, 21, 1723, 87, 1722, 42,
+ 56, 31, 1717, 82, 1716, 1715, 1714, 1713, 57, 1711,
+ 79, 109, 30, 1710, 1709, 6, 11, 1708, 1707, 1706,
+ 1705, 1704, 1703, 10, 1702, 4, 1700, 28, 1699, 9,
+ 22, 17, 72, 118, 26, 8, 1698, 121, 1697, 29,
+ 122, 66, 107, 1695, 1694, 1692, 871, 141, 1691, 1690,
+ 35, 1689, 116, 127, 1687, 1450, 1686, 1685, 58, 1276,
+ 2643, 19, 113, 1684, 1683, 1891, 48, 80, 24, 1681,
+ 75, 1680, 1679, 1678, 132, 125, 69, 811, 53, 1677,
+ 1676, 1675, 1673, 1672, 1671, 1670, 135, 16, 20, 108,
+ 36, 1669, 1668, 1667, 67, 38, 1666, 105, 104, 71,
+ 94, 1664, 115, 99, 59, 1661, 40, 1656, 1654, 1653,
+ 1652, 41, 1651, 1649, 1648, 1646, 112, 98, 64, 45,
+ 1645, 39, 93, 101, 102, 1644, 25, 124, 12, 1643,
+ 3, 0, 1642, 5, 120, 1482, 103, 1641, 1638, 1,
+ 1637, 2, 1636, 1633, 81, 1632, 1631, 1630, 1628, 2492,
+ 340, 110, 1627, 129,
+}
+
+//line sql.y:5218
+type yySymType struct {
+ union interface{}
+ empty struct{}
+ LengthScaleOption LengthScaleOption
+ tableName TableName
+ tableIdent TableIdent
+ str string
+ strs []string
+ vindexParam VindexParam
+ colIdent ColIdent
+ joinCondition JoinCondition
+ collateAndCharset CollateAndCharset
+ columnType ColumnType
+ yys int
+}
+
+func (st *yySymType) ReferenceActionUnion() ReferenceAction {
+ v, _ := st.union.(ReferenceAction)
+ return v
+}
+
+func (st *yySymType) aliasedTableNameUnion() *AliasedTableExpr {
+ v, _ := st.union.(*AliasedTableExpr)
+ return v
+}
+
+func (st *yySymType) alterDatabaseUnion() *AlterDatabase {
+ v, _ := st.union.(*AlterDatabase)
+ return v
+}
+
+func (st *yySymType) alterMigrationUnion() *AlterMigration {
+ v, _ := st.union.(*AlterMigration)
+ return v
+}
+
+func (st *yySymType) alterOptionUnion() AlterOption {
+ v, _ := st.union.(AlterOption)
+ return v
+}
+
+func (st *yySymType) alterOptionsUnion() []AlterOption {
+ v, _ := st.union.([]AlterOption)
+ return v
+}
+
+func (st *yySymType) alterTableUnion() *AlterTable {
+ v, _ := st.union.(*AlterTable)
+ return v
+}
+
+func (st *yySymType) boolValUnion() BoolVal {
+ v, _ := st.union.(BoolVal)
+ return v
+}
+
+func (st *yySymType) booleanUnion() bool {
+ v, _ := st.union.(bool)
+ return v
+}
+
+func (st *yySymType) characteristicUnion() Characteristic {
+ v, _ := st.union.(Characteristic)
+ return v
+}
+
+func (st *yySymType) characteristicsUnion() []Characteristic {
+ v, _ := st.union.([]Characteristic)
+ return v
+}
+
+func (st *yySymType) colKeyOptUnion() ColumnKeyOption {
+ v, _ := st.union.(ColumnKeyOption)
+ return v
+}
+
+func (st *yySymType) colNameUnion() *ColName {
+ v, _ := st.union.(*ColName)
+ return v
+}
+
+func (st *yySymType) colTupleUnion() ColTuple {
+ v, _ := st.union.(ColTuple)
+ return v
+}
+
+func (st *yySymType) collateAndCharsetsUnion() []CollateAndCharset {
+ v, _ := st.union.([]CollateAndCharset)
+ return v
+}
+
+func (st *yySymType) columnDefinitionUnion() *ColumnDefinition {
+ v, _ := st.union.(*ColumnDefinition)
+ return v
+}
+
+func (st *yySymType) columnDefinitionsUnion() []*ColumnDefinition {
+ v, _ := st.union.([]*ColumnDefinition)
+ return v
+}
+
+func (st *yySymType) columnTypeOptionsUnion() *ColumnTypeOptions {
+ v, _ := st.union.(*ColumnTypeOptions)
+ return v
+}
+
+func (st *yySymType) columnsUnion() Columns {
+ v, _ := st.union.(Columns)
+ return v
+}
+
+func (st *yySymType) comparisonExprOperatorUnion() ComparisonExprOperator {
+ v, _ := st.union.(ComparisonExprOperator)
+ return v
+}
+
+func (st *yySymType) constraintDefinitionUnion() *ConstraintDefinition {
+ v, _ := st.union.(*ConstraintDefinition)
+ return v
+}
+
+func (st *yySymType) constraintInfoUnion() ConstraintInfo {
+ v, _ := st.union.(ConstraintInfo)
+ return v
+}
+
+func (st *yySymType) convertTypeUnion() *ConvertType {
+ v, _ := st.union.(*ConvertType)
+ return v
+}
+
+func (st *yySymType) createDatabaseUnion() *CreateDatabase {
+ v, _ := st.union.(*CreateDatabase)
+ return v
+}
+
+func (st *yySymType) createTableUnion() *CreateTable {
+ v, _ := st.union.(*CreateTable)
+ return v
+}
+
+func (st *yySymType) derivedTableUnion() *DerivedTable {
+ v, _ := st.union.(*DerivedTable)
+ return v
+}
+
+func (st *yySymType) explainTypeUnion() ExplainType {
+ v, _ := st.union.(ExplainType)
+ return v
+}
+
+func (st *yySymType) exprUnion() Expr {
+ v, _ := st.union.(Expr)
+ return v
+}
+
+func (st *yySymType) exprsUnion() Exprs {
+ v, _ := st.union.(Exprs)
+ return v
+}
+
+func (st *yySymType) ignoreUnion() Ignore {
+ v, _ := st.union.(Ignore)
+ return v
+}
+
+func (st *yySymType) indexColumnUnion() *IndexColumn {
+ v, _ := st.union.(*IndexColumn)
+ return v
+}
+
+func (st *yySymType) indexColumnsUnion() []*IndexColumn {
+ v, _ := st.union.([]*IndexColumn)
+ return v
+}
+
+func (st *yySymType) indexDefinitionUnion() *IndexDefinition {
+ v, _ := st.union.(*IndexDefinition)
+ return v
+}
+
+func (st *yySymType) indexHintsUnion() *IndexHints {
+ v, _ := st.union.(*IndexHints)
+ return v
+}
+
+func (st *yySymType) indexInfoUnion() *IndexInfo {
+ v, _ := st.union.(*IndexInfo)
+ return v
+}
+
+func (st *yySymType) indexOptionUnion() *IndexOption {
+ v, _ := st.union.(*IndexOption)
+ return v
+}
+
+func (st *yySymType) indexOptionsUnion() []*IndexOption {
+ v, _ := st.union.([]*IndexOption)
+ return v
+}
+
+func (st *yySymType) insUnion() *Insert {
+ v, _ := st.union.(*Insert)
+ return v
+}
+
+func (st *yySymType) insertActionUnion() InsertAction {
+ v, _ := st.union.(InsertAction)
+ return v
+}
+
+func (st *yySymType) isExprOperatorUnion() IsExprOperator {
+ v, _ := st.union.(IsExprOperator)
+ return v
+}
+
+func (st *yySymType) isolationLevelUnion() IsolationLevel {
+ v, _ := st.union.(IsolationLevel)
+ return v
+}
+
+func (st *yySymType) joinTypeUnion() JoinType {
+ v, _ := st.union.(JoinType)
+ return v
+}
+
+func (st *yySymType) limitUnion() *Limit {
+ v, _ := st.union.(*Limit)
+ return v
+}
+
+func (st *yySymType) literalUnion() *Literal {
+ v, _ := st.union.(*Literal)
+ return v
+}
+
+func (st *yySymType) lockUnion() Lock {
+ v, _ := st.union.(Lock)
+ return v
+}
+
+func (st *yySymType) lockTypeUnion() LockType {
+ v, _ := st.union.(LockType)
+ return v
+}
+
+func (st *yySymType) matchExprOptionUnion() MatchExprOption {
+ v, _ := st.union.(MatchExprOption)
+ return v
+}
+
+func (st *yySymType) optLikeUnion() *OptLike {
+ v, _ := st.union.(*OptLike)
+ return v
+}
+
+func (st *yySymType) optValUnion() Expr {
+ v, _ := st.union.(Expr)
+ return v
+}
+
+func (st *yySymType) orderUnion() *Order {
+ v, _ := st.union.(*Order)
+ return v
+}
+
+func (st *yySymType) orderByUnion() OrderBy {
+ v, _ := st.union.(OrderBy)
+ return v
+}
+
+func (st *yySymType) orderDirectionUnion() OrderDirection {
+ v, _ := st.union.(OrderDirection)
+ return v
+}
+
+func (st *yySymType) partDefUnion() *PartitionDefinition {
+ v, _ := st.union.(*PartitionDefinition)
+ return v
+}
+
+func (st *yySymType) partDefsUnion() []*PartitionDefinition {
+ v, _ := st.union.([]*PartitionDefinition)
+ return v
+}
+
+func (st *yySymType) partSpecUnion() *PartitionSpec {
+ v, _ := st.union.(*PartitionSpec)
+ return v
+}
+
+func (st *yySymType) partSpecsUnion() []*PartitionSpec {
+ v, _ := st.union.([]*PartitionSpec)
+ return v
+}
+
+func (st *yySymType) partitionsUnion() Partitions {
+ v, _ := st.union.(Partitions)
+ return v
+}
+
+func (st *yySymType) renameTablePairsUnion() []*RenameTablePair {
+ v, _ := st.union.([]*RenameTablePair)
+ return v
+}
+
+func (st *yySymType) revertMigrationUnion() *RevertMigration {
+ v, _ := st.union.(*RevertMigration)
+ return v
+}
+
+func (st *yySymType) scopeUnion() Scope {
+ v, _ := st.union.(Scope)
+ return v
+}
+
+func (st *yySymType) selStmtUnion() SelectStatement {
+ v, _ := st.union.(SelectStatement)
+ return v
+}
+
+func (st *yySymType) selectExprUnion() SelectExpr {
+ v, _ := st.union.(SelectExpr)
+ return v
+}
+
+func (st *yySymType) selectExprsUnion() SelectExprs {
+ v, _ := st.union.(SelectExprs)
+ return v
+}
+
+func (st *yySymType) selectIntoUnion() *SelectInto {
+ v, _ := st.union.(*SelectInto)
+ return v
+}
+
+func (st *yySymType) setExprUnion() *SetExpr {
+ v, _ := st.union.(*SetExpr)
+ return v
+}
+
+func (st *yySymType) setExprsUnion() SetExprs {
+ v, _ := st.union.(SetExprs)
+ return v
+}
+
+func (st *yySymType) showFilterUnion() *ShowFilter {
+ v, _ := st.union.(*ShowFilter)
+ return v
+}
+
+func (st *yySymType) statementUnion() Statement {
+ v, _ := st.union.(Statement)
+ return v
+}
+
+func (st *yySymType) subqueryUnion() *Subquery {
+ v, _ := st.union.(*Subquery)
+ return v
+}
+
+func (st *yySymType) tableAndLockTypeUnion() *TableAndLockType {
+ v, _ := st.union.(*TableAndLockType)
+ return v
+}
+
+func (st *yySymType) tableAndLockTypesUnion() TableAndLockTypes {
+ v, _ := st.union.(TableAndLockTypes)
+ return v
+}
+
+func (st *yySymType) tableExprUnion() TableExpr {
+ v, _ := st.union.(TableExpr)
+ return v
+}
+
+func (st *yySymType) tableExprsUnion() TableExprs {
+ v, _ := st.union.(TableExprs)
+ return v
+}
+
+func (st *yySymType) tableNamesUnion() TableNames {
+ v, _ := st.union.(TableNames)
+ return v
+}
+
+func (st *yySymType) tableOptionUnion() *TableOption {
+ v, _ := st.union.(*TableOption)
+ return v
+}
+
+func (st *yySymType) tableOptionsUnion() TableOptions {
+ v, _ := st.union.(TableOptions)
+ return v
+}
+
+func (st *yySymType) tableSpecUnion() *TableSpec {
+ v, _ := st.union.(*TableSpec)
+ return v
+}
+
+func (st *yySymType) updateExprUnion() *UpdateExpr {
+ v, _ := st.union.(*UpdateExpr)
+ return v
+}
+
+func (st *yySymType) updateExprsUnion() UpdateExprs {
+ v, _ := st.union.(UpdateExprs)
+ return v
+}
+
+func (st *yySymType) valTupleUnion() ValTuple {
+ v, _ := st.union.(ValTuple)
+ return v
+}
+
+func (st *yySymType) valuesUnion() Values {
+ v, _ := st.union.(Values)
+ return v
+}
+
+func (st *yySymType) vindexParamsUnion() []VindexParam {
+ v, _ := st.union.([]VindexParam)
+ return v
+}
+
+func (st *yySymType) whenUnion() *When {
+ v, _ := st.union.(*When)
+ return v
+}
+
+func (st *yySymType) whensUnion() []*When {
+ v, _ := st.union.([]*When)
+ return v
}
var yyR1 = [...]int{
- 0, 275, 276, 276, 1, 1, 1, 1, 1, 1,
+ 0, 277, 278, 278, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 259, 259, 259, 262, 262, 21, 47,
- 3, 3, 3, 3, 2, 2, 8, 9, 4, 5,
- 5, 10, 10, 57, 57, 11, 12, 12, 12, 12,
- 279, 279, 87, 87, 85, 85, 86, 86, 152, 152,
- 13, 14, 14, 162, 162, 161, 161, 161, 163, 163,
- 163, 163, 197, 197, 15, 15, 15, 15, 15, 64,
- 64, 261, 261, 260, 258, 258, 257, 257, 256, 23,
- 24, 30, 31, 32, 263, 263, 232, 36, 36, 35,
- 35, 35, 35, 37, 37, 34, 34, 33, 33, 234,
- 234, 221, 221, 233, 233, 233, 233, 233, 233, 233,
- 220, 199, 199, 199, 199, 202, 202, 200, 200, 200,
- 200, 200, 200, 200, 200, 200, 201, 201, 201, 201,
- 201, 203, 203, 203, 203, 203, 204, 204, 204, 204,
- 204, 204, 204, 204, 204, 204, 204, 204, 204, 204,
- 204, 205, 205, 205, 205, 205, 205, 205, 205, 219,
- 219, 206, 206, 212, 212, 213, 213, 213, 215, 215,
- 216, 216, 177, 177, 177, 208, 208, 209, 209, 214,
- 214, 210, 210, 210, 211, 211, 211, 218, 218, 218,
- 218, 218, 207, 207, 222, 248, 248, 247, 247, 243,
- 243, 243, 243, 231, 231, 240, 240, 240, 240, 240,
- 230, 230, 226, 226, 226, 227, 227, 228, 228, 225,
- 225, 229, 229, 242, 242, 241, 223, 223, 224, 224,
- 251, 251, 251, 251, 252, 268, 269, 267, 267, 267,
- 267, 267, 55, 55, 55, 178, 178, 178, 238, 238,
- 237, 237, 237, 239, 239, 236, 236, 236, 236, 236,
- 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
- 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
- 236, 236, 236, 236, 172, 172, 172, 266, 266, 266,
- 266, 266, 266, 265, 265, 265, 235, 235, 235, 264,
- 264, 120, 120, 121, 121, 28, 28, 28, 28, 28,
- 28, 27, 27, 27, 25, 25, 25, 25, 25, 25,
+ 1, 1, 1, 1, 1, 261, 261, 261, 264, 264,
+ 21, 50, 3, 3, 3, 3, 2, 2, 8, 9,
+ 4, 5, 5, 10, 10, 62, 62, 11, 12, 12,
+ 12, 12, 281, 281, 96, 96, 94, 94, 95, 95,
+ 162, 162, 13, 14, 14, 172, 172, 171, 171, 171,
+ 173, 173, 173, 173, 207, 207, 15, 15, 15, 15,
+ 15, 71, 71, 263, 263, 262, 260, 260, 259, 259,
+ 258, 23, 24, 33, 33, 33, 33, 34, 35, 265,
+ 265, 237, 39, 39, 38, 38, 38, 38, 40, 40,
+ 37, 37, 36, 36, 239, 239, 226, 226, 238, 238,
+ 238, 238, 238, 238, 238, 225, 144, 144, 144, 144,
+ 144, 144, 144, 144, 144, 144, 144, 209, 209, 209,
+ 209, 212, 212, 210, 210, 210, 210, 210, 210, 210,
+ 210, 210, 211, 211, 211, 211, 211, 213, 213, 213,
+ 213, 213, 214, 214, 214, 214, 214, 214, 214, 214,
+ 214, 214, 214, 214, 214, 214, 214, 215, 215, 215,
+ 215, 215, 215, 215, 215, 224, 224, 216, 216, 219,
+ 219, 220, 220, 220, 221, 221, 222, 222, 217, 217,
+ 217, 217, 218, 218, 218, 227, 251, 251, 250, 250,
+ 248, 248, 248, 248, 236, 236, 245, 245, 245, 245,
+ 245, 235, 235, 231, 231, 231, 232, 232, 233, 233,
+ 230, 230, 234, 234, 247, 247, 246, 228, 228, 229,
+ 229, 253, 253, 253, 253, 254, 270, 271, 269, 269,
+ 269, 269, 269, 60, 60, 60, 184, 184, 184, 243,
+ 243, 242, 242, 242, 244, 244, 241, 241, 241, 241,
+ 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
+ 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
+ 241, 241, 241, 241, 241, 179, 179, 179, 268, 268,
+ 268, 268, 268, 268, 267, 267, 267, 240, 240, 240,
+ 266, 266, 130, 130, 131, 131, 30, 30, 30, 30,
+ 30, 30, 29, 29, 29, 25, 25, 25, 25, 25,
25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
- 25, 25, 25, 25, 25, 25, 29, 29, 26, 26,
- 26, 26, 26, 26, 26, 26, 26, 16, 16, 16,
+ 25, 25, 25, 25, 25, 25, 25, 31, 31, 26,
+ 26, 26, 26, 26, 26, 26, 26, 26, 16, 16,
16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
- 16, 16, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
- 255, 255, 255, 255, 217, 217, 217, 253, 253, 254,
- 254, 17, 22, 22, 18, 18, 18, 18, 19, 19,
- 38, 39, 39, 39, 39, 39, 39, 39, 39, 39,
- 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
- 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
- 39, 39, 39, 39, 39, 39, 39, 39, 39, 169,
- 169, 270, 270, 171, 171, 167, 167, 170, 170, 168,
- 168, 168, 173, 173, 173, 174, 174, 274, 274, 274,
- 40, 40, 42, 42, 43, 44, 44, 192, 192, 193,
- 193, 45, 46, 56, 56, 56, 56, 56, 56, 58,
- 58, 58, 7, 7, 7, 7, 52, 52, 52, 6,
- 6, 41, 41, 48, 271, 271, 272, 273, 273, 273,
- 273, 49, 20, 280, 50, 51, 51, 63, 63, 63,
- 59, 59, 59, 62, 62, 62, 67, 67, 69, 69,
- 69, 69, 69, 70, 70, 70, 70, 70, 70, 66,
- 66, 68, 68, 68, 68, 185, 185, 185, 184, 184,
- 77, 77, 78, 78, 79, 79, 80, 80, 80, 118,
- 95, 95, 150, 150, 149, 149, 151, 151, 151, 151,
- 153, 153, 81, 81, 81, 81, 82, 82, 83, 83,
- 84, 84, 191, 191, 190, 190, 190, 189, 189, 88,
- 88, 88, 90, 89, 89, 89, 89, 91, 91, 93,
- 93, 92, 92, 94, 96, 96, 96, 96, 96, 97,
- 97, 76, 76, 76, 76, 76, 76, 76, 76, 165,
- 165, 99, 99, 98, 98, 98, 98, 98, 98, 98,
- 98, 98, 98, 110, 110, 110, 110, 110, 110, 100,
- 100, 100, 100, 100, 100, 100, 65, 65, 111, 111,
- 111, 117, 112, 112, 103, 103, 103, 103, 103, 103,
- 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
- 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
- 103, 103, 103, 103, 103, 103, 103, 103, 107, 107,
- 107, 107, 105, 105, 105, 105, 105, 105, 105, 105,
- 105, 105, 105, 105, 105, 105, 106, 106, 106, 106,
- 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
- 106, 106, 281, 281, 109, 108, 108, 108, 108, 108,
- 108, 108, 61, 61, 61, 61, 61, 196, 196, 196,
- 198, 198, 198, 198, 198, 198, 198, 198, 198, 198,
- 198, 198, 198, 124, 124, 60, 60, 122, 122, 123,
- 125, 125, 119, 119, 119, 102, 102, 102, 102, 102,
- 102, 102, 102, 104, 104, 104, 126, 126, 127, 127,
- 128, 128, 129, 129, 130, 131, 131, 131, 132, 132,
- 132, 132, 249, 249, 249, 249, 249, 244, 244, 244,
- 244, 245, 245, 245, 71, 71, 71, 71, 73, 73,
- 72, 72, 53, 53, 54, 54, 54, 74, 74, 75,
- 75, 75, 75, 147, 147, 147, 133, 133, 133, 133,
- 138, 138, 138, 134, 134, 136, 136, 136, 137, 137,
- 137, 135, 141, 141, 143, 143, 142, 142, 140, 140,
- 145, 145, 144, 144, 139, 139, 101, 101, 101, 101,
- 101, 148, 148, 148, 148, 154, 154, 113, 113, 115,
- 115, 114, 116, 155, 155, 159, 156, 156, 160, 160,
- 160, 160, 160, 157, 157, 158, 158, 186, 186, 186,
- 164, 164, 175, 175, 176, 176, 166, 166, 179, 179,
- 179, 146, 146, 146, 146, 250, 250, 246, 182, 182,
- 183, 183, 187, 187, 188, 188, 180, 180, 180, 180,
- 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
- 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
- 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
- 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
- 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
- 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
- 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
- 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
- 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
- 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
- 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
- 180, 180, 180, 180, 180, 180, 180, 180, 180, 180,
- 180, 180, 180, 180, 180, 180, 180, 180, 180, 181,
- 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
- 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
- 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
- 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
- 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
- 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
- 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
- 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
- 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
- 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
- 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
- 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
- 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
- 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
- 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
- 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
- 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
- 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
- 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
- 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
- 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
- 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
- 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
- 181, 181, 181, 181, 181, 181, 181, 181, 181, 181,
- 181, 181, 181, 181, 181, 181, 181, 277, 278, 194,
- 195, 195, 195,
+ 16, 16, 16, 16, 16, 16, 16, 257, 257, 257,
+ 257, 257, 257, 257, 257, 257, 257, 257, 257, 257,
+ 257, 257, 257, 257, 257, 257, 257, 257, 257, 223,
+ 223, 223, 255, 255, 256, 256, 17, 22, 22, 18,
+ 18, 18, 18, 19, 19, 41, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 42, 42, 42, 42, 42, 42, 42, 42, 42, 42,
+ 272, 272, 178, 178, 186, 186, 177, 177, 200, 200,
+ 200, 180, 180, 180, 181, 181, 276, 276, 276, 43,
+ 43, 45, 45, 46, 47, 47, 202, 202, 203, 203,
+ 48, 49, 61, 61, 61, 61, 61, 61, 63, 63,
+ 63, 7, 7, 7, 7, 57, 57, 57, 6, 6,
+ 44, 44, 51, 273, 273, 274, 275, 275, 275, 275,
+ 52, 54, 20, 20, 20, 20, 20, 20, 78, 78,
+ 66, 66, 66, 66, 66, 66, 66, 66, 66, 66,
+ 66, 66, 72, 72, 72, 67, 67, 282, 55, 56,
+ 56, 70, 70, 70, 64, 64, 64, 69, 69, 69,
+ 75, 75, 77, 77, 77, 77, 77, 79, 79, 79,
+ 79, 79, 79, 79, 74, 74, 76, 76, 76, 76,
+ 193, 193, 193, 192, 192, 86, 86, 87, 87, 88,
+ 88, 89, 89, 89, 128, 104, 104, 160, 160, 159,
+ 159, 161, 161, 161, 161, 163, 163, 90, 90, 90,
+ 90, 91, 91, 92, 92, 93, 93, 201, 201, 198,
+ 198, 198, 197, 197, 97, 97, 97, 99, 98, 98,
+ 98, 98, 100, 100, 102, 102, 101, 101, 103, 105,
+ 105, 105, 105, 105, 106, 106, 85, 85, 85, 85,
+ 85, 85, 85, 85, 175, 175, 108, 108, 107, 107,
+ 107, 107, 107, 107, 107, 107, 107, 107, 119, 119,
+ 119, 119, 119, 119, 109, 109, 109, 109, 109, 109,
+ 109, 73, 73, 120, 120, 120, 127, 121, 121, 112,
+ 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
+ 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
+ 112, 112, 112, 112, 112, 112, 112, 112, 112, 112,
+ 112, 112, 112, 116, 116, 116, 116, 114, 114, 114,
+ 114, 114, 114, 114, 114, 114, 114, 114, 114, 114,
+ 114, 115, 115, 115, 115, 115, 115, 115, 115, 115,
+ 115, 115, 115, 115, 115, 115, 115, 283, 283, 118,
+ 117, 117, 117, 117, 117, 117, 117, 68, 68, 68,
+ 68, 68, 206, 206, 206, 208, 208, 208, 208, 208,
+ 208, 208, 208, 208, 208, 208, 208, 208, 134, 134,
+ 65, 65, 132, 132, 133, 135, 135, 129, 129, 129,
+ 111, 111, 111, 111, 111, 111, 111, 111, 113, 113,
+ 113, 136, 136, 137, 137, 138, 138, 139, 139, 140,
+ 141, 141, 141, 142, 142, 142, 142, 32, 32, 32,
+ 32, 32, 27, 27, 27, 27, 28, 28, 28, 80,
+ 80, 80, 80, 82, 82, 81, 81, 58, 58, 59,
+ 59, 59, 83, 83, 84, 84, 84, 84, 157, 157,
+ 157, 143, 143, 143, 143, 149, 149, 149, 145, 145,
+ 147, 147, 147, 148, 148, 148, 146, 154, 154, 156,
+ 156, 155, 155, 151, 151, 152, 152, 153, 153, 153,
+ 150, 150, 110, 110, 110, 110, 110, 158, 158, 158,
+ 158, 164, 164, 123, 123, 125, 125, 124, 126, 165,
+ 165, 169, 166, 166, 170, 170, 170, 170, 170, 167,
+ 167, 168, 168, 194, 194, 194, 174, 174, 185, 185,
+ 182, 182, 183, 183, 176, 176, 187, 187, 187, 53,
+ 122, 122, 252, 252, 249, 190, 190, 191, 191, 195,
+ 195, 199, 199, 196, 196, 188, 188, 188, 188, 188,
+ 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
+ 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
+ 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
+ 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
+ 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
+ 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
+ 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
+ 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
+ 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
+ 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
+ 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
+ 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
+ 188, 188, 188, 188, 188, 188, 188, 188, 188, 188,
+ 188, 188, 189, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 189, 189, 189, 189, 189, 189, 189, 189,
+ 189, 189, 189, 189, 189, 189, 189, 189, 279, 280,
+ 204, 205, 205, 205,
}
var yyR2 = [...]int{
0, 2, 0, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 0, 1, 1, 1, 0, 1, 2, 3,
- 5, 6, 6, 7, 4, 6, 5, 7, 8, 1,
- 3, 7, 8, 1, 1, 9, 9, 8, 7, 7,
- 1, 1, 1, 3, 1, 3, 1, 3, 0, 4,
- 3, 5, 4, 1, 3, 3, 2, 2, 2, 2,
- 2, 1, 1, 1, 2, 2, 6, 11, 2, 0,
- 2, 0, 2, 1, 0, 2, 1, 3, 3, 4,
- 3, 7, 4, 2, 1, 1, 4, 0, 1, 1,
- 1, 2, 2, 0, 1, 4, 4, 4, 4, 2,
- 4, 1, 3, 1, 1, 3, 4, 3, 3, 3,
- 8, 3, 1, 1, 1, 2, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 2, 2, 2, 2,
- 2, 1, 2, 2, 2, 2, 4, 4, 2, 2,
- 3, 3, 3, 3, 1, 1, 1, 1, 1, 6,
- 6, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 3, 0, 3, 0, 5, 0, 3, 5, 0, 1,
- 0, 1, 0, 1, 2, 0, 2, 0, 3, 0,
- 1, 0, 2, 2, 0, 2, 2, 0, 2, 1,
- 2, 1, 0, 2, 5, 0, 1, 1, 2, 1,
- 3, 2, 3, 0, 1, 3, 3, 3, 4, 2,
- 0, 2, 1, 1, 1, 1, 1, 0, 1, 1,
- 1, 0, 1, 1, 3, 3, 3, 1, 3, 1,
- 10, 11, 11, 12, 5, 3, 3, 1, 1, 2,
- 2, 2, 0, 1, 1, 0, 1, 2, 0, 1,
- 1, 3, 2, 1, 2, 3, 3, 4, 4, 3,
- 3, 3, 3, 4, 4, 3, 3, 3, 3, 3,
+ 1, 1, 1, 1, 0, 1, 1, 1, 0, 1,
+ 2, 3, 5, 6, 6, 7, 4, 6, 5, 7,
+ 8, 1, 3, 7, 8, 1, 1, 9, 9, 8,
+ 7, 7, 1, 1, 1, 3, 1, 3, 1, 3,
+ 0, 4, 3, 5, 4, 1, 3, 3, 2, 2,
+ 2, 2, 2, 1, 1, 1, 2, 2, 6, 11,
+ 2, 0, 2, 0, 2, 1, 0, 2, 1, 3,
+ 3, 5, 3, 6, 7, 7, 7, 5, 2, 1,
+ 1, 4, 0, 1, 1, 1, 2, 2, 0, 1,
+ 4, 4, 4, 4, 2, 4, 1, 3, 1, 1,
+ 3, 4, 3, 3, 3, 3, 0, 2, 3, 3,
+ 4, 2, 3, 3, 2, 3, 2, 3, 1, 1,
+ 1, 2, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 2, 2, 2, 2, 2, 1, 2, 2,
+ 2, 2, 4, 4, 2, 2, 3, 3, 3, 3,
+ 1, 1, 1, 1, 1, 6, 6, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 3, 0, 3, 0,
+ 5, 0, 3, 5, 0, 1, 0, 1, 0, 2,
+ 2, 2, 0, 2, 2, 5, 0, 1, 1, 2,
+ 1, 3, 2, 3, 0, 1, 3, 3, 3, 4,
+ 2, 0, 2, 1, 1, 1, 1, 1, 0, 1,
+ 1, 1, 0, 1, 1, 3, 3, 3, 1, 3,
+ 1, 10, 11, 11, 12, 5, 3, 3, 1, 1,
+ 2, 2, 2, 0, 1, 1, 0, 1, 2, 0,
+ 1, 1, 3, 2, 1, 2, 3, 3, 4, 4,
+ 3, 3, 3, 3, 4, 4, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 4, 5, 0, 2, 2, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
- 1, 0, 2, 0, 2, 0, 1, 5, 1, 3,
- 7, 1, 3, 3, 1, 2, 2, 2, 5, 5,
- 5, 6, 6, 5, 5, 2, 2, 2, 2, 3,
- 3, 3, 4, 1, 3, 5, 1, 3, 3, 3,
- 3, 3, 3, 3, 3, 2, 2, 2, 4, 4,
- 2, 10, 3, 6, 7, 5, 5, 5, 12, 7,
- 5, 9, 5, 3, 7, 4, 4, 4, 4, 3,
- 3, 3, 7, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 2, 0, 2, 2, 1, 3, 8,
- 8, 3, 3, 5, 5, 6, 5, 4, 3, 2,
- 3, 3, 3, 3, 3, 3, 3, 4, 2, 4,
- 4, 4, 4, 4, 5, 7, 4, 4, 4, 4,
- 4, 4, 4, 4, 2, 4, 7, 2, 4, 5,
- 4, 3, 3, 5, 2, 3, 3, 3, 3, 1,
- 1, 1, 1, 0, 1, 0, 1, 1, 1, 0,
- 2, 2, 0, 2, 2, 0, 2, 0, 1, 1,
- 2, 1, 1, 2, 1, 1, 5, 0, 1, 0,
- 1, 2, 3, 0, 3, 3, 3, 3, 1, 1,
- 1, 1, 1, 1, 1, 1, 0, 1, 1, 3,
- 3, 2, 2, 3, 1, 3, 2, 1, 2, 1,
- 2, 2, 2, 0, 2, 0, 2, 1, 2, 2,
- 0, 1, 1, 0, 1, 1, 0, 1, 0, 1,
- 2, 3, 4, 1, 1, 1, 1, 1, 1, 1,
- 3, 1, 2, 3, 5, 0, 1, 2, 1, 1,
- 0, 2, 1, 3, 1, 1, 1, 3, 3, 3,
- 3, 7, 0, 3, 1, 3, 1, 1, 3, 3,
- 1, 3, 4, 4, 4, 3, 2, 4, 0, 1,
- 0, 2, 0, 1, 0, 1, 2, 1, 1, 1,
- 2, 2, 1, 2, 3, 2, 3, 2, 2, 2,
- 1, 1, 3, 3, 0, 5, 4, 5, 5, 0,
- 2, 1, 3, 3, 3, 2, 3, 1, 2, 0,
- 3, 1, 1, 3, 3, 4, 4, 5, 3, 4,
- 5, 6, 2, 1, 2, 1, 2, 1, 2, 1,
- 1, 1, 1, 1, 1, 1, 0, 2, 1, 1,
- 1, 3, 1, 3, 1, 1, 1, 1, 1, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 2, 2, 2, 2, 2, 2,
- 2, 2, 2, 3, 1, 1, 1, 1, 4, 5,
- 5, 6, 4, 4, 6, 6, 6, 8, 8, 8,
- 8, 9, 8, 5, 4, 2, 2, 2, 2, 2,
+ 3, 3, 3, 4, 5, 0, 2, 2, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 0, 1, 0, 2, 0, 2, 0, 1, 5, 1,
+ 3, 7, 1, 3, 3, 1, 2, 2, 2, 5,
+ 5, 5, 6, 6, 5, 5, 2, 2, 2, 2,
+ 3, 3, 3, 4, 1, 3, 5, 1, 3, 3,
+ 3, 3, 3, 3, 3, 3, 2, 2, 2, 4,
+ 4, 2, 10, 3, 6, 7, 5, 5, 5, 12,
+ 7, 5, 9, 4, 4, 4, 4, 5, 3, 7,
+ 4, 4, 4, 4, 3, 3, 3, 7, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 2, 0,
+ 2, 2, 1, 3, 8, 8, 3, 3, 5, 6,
+ 6, 5, 5, 3, 2, 3, 3, 3, 7, 3,
+ 3, 3, 3, 4, 7, 5, 2, 4, 4, 4,
+ 4, 4, 5, 5, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 2, 4, 2, 4, 5,
+ 4, 4, 3, 3, 5, 2, 3, 3, 3, 3,
+ 1, 1, 0, 1, 0, 1, 1, 1, 0, 2,
+ 2, 0, 2, 2, 0, 2, 0, 1, 1, 2,
+ 1, 1, 2, 1, 1, 5, 0, 1, 0, 1,
+ 2, 3, 0, 3, 3, 3, 3, 1, 1, 1,
+ 1, 1, 1, 1, 1, 0, 1, 1, 3, 3,
+ 2, 2, 3, 1, 3, 2, 1, 2, 1, 2,
+ 2, 3, 3, 3, 6, 4, 7, 6, 1, 3,
+ 2, 2, 2, 2, 1, 1, 1, 3, 2, 1,
+ 1, 1, 0, 1, 1, 0, 3, 0, 2, 0,
+ 2, 1, 2, 2, 0, 1, 1, 0, 1, 1,
+ 0, 1, 0, 1, 2, 3, 4, 1, 1, 1,
+ 1, 1, 1, 1, 1, 3, 1, 2, 3, 5,
+ 0, 1, 2, 1, 1, 0, 2, 1, 3, 1,
+ 1, 1, 3, 3, 3, 3, 7, 0, 3, 1,
+ 3, 1, 1, 3, 3, 1, 3, 4, 4, 4,
+ 3, 2, 4, 0, 1, 0, 2, 0, 1, 0,
+ 1, 2, 1, 1, 1, 2, 2, 1, 2, 3,
+ 2, 3, 2, 2, 2, 1, 1, 3, 3, 0,
+ 5, 4, 5, 5, 0, 2, 1, 3, 3, 3,
+ 2, 3, 1, 2, 0, 3, 1, 1, 3, 3,
+ 4, 4, 5, 3, 4, 5, 6, 2, 1, 2,
+ 1, 2, 1, 2, 1, 1, 1, 1, 1, 1,
+ 1, 0, 2, 1, 1, 1, 3, 1, 3, 1,
+ 1, 1, 1, 1, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 2,
+ 2, 2, 2, 2, 2, 2, 2, 2, 3, 1,
+ 1, 1, 1, 4, 5, 5, 6, 4, 4, 6,
+ 6, 6, 8, 8, 8, 8, 9, 8, 5, 4,
2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
- 8, 8, 0, 2, 3, 4, 4, 4, 4, 4,
- 4, 4, 0, 3, 4, 7, 3, 1, 1, 1,
- 2, 3, 3, 1, 2, 2, 1, 2, 1, 2,
- 2, 1, 2, 0, 1, 0, 2, 1, 2, 4,
- 0, 2, 1, 3, 5, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 2, 2, 0, 3, 0, 2,
- 0, 3, 1, 3, 2, 0, 1, 1, 0, 2,
- 4, 4, 0, 2, 2, 1, 1, 3, 3, 3,
- 3, 3, 3, 3, 0, 3, 3, 3, 0, 3,
- 1, 1, 0, 4, 0, 1, 1, 0, 3, 1,
- 3, 2, 1, 0, 2, 4, 0, 9, 3, 5,
- 0, 3, 3, 0, 1, 0, 2, 2, 0, 2,
- 2, 2, 0, 3, 0, 3, 0, 3, 0, 4,
- 0, 3, 0, 4, 0, 1, 2, 1, 5, 4,
- 4, 1, 3, 3, 5, 0, 5, 1, 3, 1,
- 2, 3, 1, 1, 3, 3, 1, 3, 3, 3,
- 3, 3, 2, 1, 2, 1, 1, 1, 1, 1,
- 1, 1, 0, 2, 0, 3, 0, 1, 0, 1,
- 1, 0, 1, 1, 1, 0, 1, 2, 1, 1,
+ 2, 2, 2, 2, 2, 8, 8, 0, 2, 3,
+ 4, 4, 4, 4, 4, 4, 4, 0, 3, 4,
+ 7, 3, 1, 1, 1, 2, 3, 3, 1, 2,
+ 2, 1, 2, 1, 2, 2, 1, 2, 0, 1,
+ 0, 2, 1, 2, 4, 0, 2, 1, 3, 5,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
+ 2, 0, 3, 0, 2, 0, 3, 1, 3, 2,
+ 0, 1, 1, 0, 2, 4, 4, 0, 2, 2,
+ 1, 1, 3, 3, 3, 3, 3, 3, 3, 0,
+ 3, 3, 3, 0, 3, 1, 1, 0, 4, 0,
+ 1, 1, 0, 3, 1, 3, 2, 1, 0, 2,
+ 4, 0, 9, 3, 5, 0, 3, 3, 0, 1,
+ 0, 2, 2, 0, 2, 2, 2, 0, 2, 1,
+ 2, 3, 3, 0, 2, 1, 2, 3, 4, 3,
+ 0, 1, 2, 1, 5, 4, 4, 1, 3, 3,
+ 5, 0, 5, 1, 3, 1, 2, 3, 1, 1,
+ 3, 3, 1, 3, 3, 3, 3, 3, 2, 1,
+ 2, 1, 1, 1, 1, 1, 1, 1, 0, 1,
+ 0, 2, 0, 3, 0, 1, 0, 1, 1, 5,
+ 0, 1, 0, 1, 2, 1, 1, 1, 1, 1,
+ 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -4360,460 +4969,483 @@ var yyR2 = [...]int{
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
- 0, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+ 0, 0, 1, 1,
}
var yyChk = [...]int{
- -1000, -275, -1, -3, -8, -9, -10, -11, -12, -13,
- -14, -15, -16, -17, -18, -19, -38, -39, -40, -42,
- -43, -44, -45, -46, -6, -41, -20, -21, -47, -48,
- -49, -4, -277, 6, 7, 8, -57, 10, 11, 31,
- -23, -30, 152, -31, -24, 153, -32, 155, 154, 190,
- 156, 183, 70, 224, 225, 227, 228, 229, 230, -58,
- 188, 189, 158, 35, 41, 32, 33, 80, 9, 322,
- 185, 184, 26, -276, 451, -63, 5, -128, 16, -3,
- -50, -280, -50, -50, -50, -50, -50, -50, -232, -234,
- 80, 125, 80, -64, 162, -146, -263, 106, 168, 171,
- 172, 313, 161, -36, -35, -34, -33, -37, 30, -28,
- -29, -255, -27, -26, 157, 154, 198, 101, 102, 190,
- 191, 192, 156, 174, 189, 193, 188, 207, -25, 76,
- 32, 335, 338, -239, 153, 159, 160, 323, 104, 103,
- 71, 155, -236, 274, 428, -37, 430, 94, 96, 429,
- 40, 163, 431, 432, 433, 434, 173, 435, 436, 437,
- 438, 444, 445, 446, 447, 105, 5, 162, -263, -71,
- 284, 76, -262, -259, 83, 84, 85, 162, 162, 163,
- 164, -263, 162, -92, -187, -259, -181, 332, 176, 366,
- 367, 222, 76, 274, 428, 224, 238, 232, 259, 251,
- 333, 368, 177, 211, 249, 252, 300, 430, 369, 191,
- 296, 279, 287, 94, 227, 309, 443, 370, 441, 96,
- 429, 75, 47, 40, 186, 247, 243, 431, 212, 371,
- 343, 205, 104, 101, 450, 241, 46, 28, 440, 103,
- 45, 432, 372, 433, 289, 264, 44, 192, 373, 79,
- 337, 291, 242, 288, 221, 439, 158, 374, 422, 298,
- 375, 265, 269, 376, 301, 48, 377, 378, 102, 379,
- 74, 434, 236, 237, 380, 219, 175, 303, 263, 173,
- 34, 292, 334, 223, 54, 199, 304, 42, 267, 41,
- 426, 381, 262, 258, 49, 382, 383, 384, 385, 435,
- 261, 235, 257, 449, 217, 436, 58, 160, 271, 270,
- 272, 206, 299, 254, 386, 387, 388, 180, 77, 389,
- 244, 19, 390, 391, 213, 392, 52, 393, 394, 307,
- 189, 395, 50, 437, 37, 194, 438, 396, 397, 398,
- 399, 400, 297, 401, 290, 266, 268, 201, 286, 336,
- 402, 240, 193, 442, 403, 181, 195, 198, 188, 308,
- 182, 404, 405, 406, 407, 408, 409, 410, 228, 444,
- 39, 411, 412, 413, 414, 220, 216, 302, 311, 57,
- 78, 276, 415, 234, 214, 416, 225, 51, 445, 446,
- 447, 208, 448, 282, 105, 218, 43, 255, 200, 417,
- 418, 245, 246, 260, 233, 256, 226, 423, 202, 190,
- 419, 310, 215, 277, 340, 207, 339, 253, 250, 209,
- 420, 164, 203, 204, 421, 424, 293, 283, 294, 295,
- 284, 210, 338, 248, 278, 162, -157, 279, 280, 281,
- 292, 293, 298, 297, 201, -274, 301, 162, -167, 143,
- 152, 289, -171, 290, 283, 284, 210, -270, -259, 433,
- 448, 300, 252, 302, 426, 285, 291, 295, 294, -187,
- 226, -192, 231, -182, -259, -181, 229, -92, -56, 422,
- 156, -194, -194, -194, -112, -76, -98, 109, -103, 30,
- 24, -102, -99, -119, -116, -117, 143, 144, 146, 145,
- 147, 132, 133, 140, 110, 148, -107, -105, -106, -108,
- 87, 86, 95, 88, 89, 90, 91, 97, 98, 99,
- -182, -187, -114, -277, 64, 65, 323, 324, 325, 326,
- 331, 327, 112, 53, 318, 312, 321, 320, 319, 316,
- 317, 314, 315, 329, 330, 167, 313, 161, 138, 322,
- -259, -181, 40, 282, 282, -5, -4, -277, 6, 21,
- 22, -132, 18, 17, -278, 82, -59, -69, 59, 60,
- -70, 22, 36, 63, 61, -51, -68, 134, -76, -187,
- -68, -166, 166, -166, -166, -156, -197, 226, -160, 302,
- 301, -183, -158, -182, -180, -157, 299, 157, 341, 108,
- 23, 25, 111, 143, 17, 112, 159, 174, 142, 170,
- 323, 152, 68, 342, 314, 315, 312, 318, 325, 326,
- 313, 280, 30, 11, 344, 26, 184, 22, 36, 136,
- 154, 115, 116, 187, 24, 185, 99, 347, 20, 71,
- 179, 12, 172, 14, 348, 349, 15, 167, 166, 127,
- 163, 66, 9, 148, 27, 124, 62, 350, 29, 351,
- 352, 353, 354, 64, 125, 18, 316, 317, 32, 427,
- 355, 331, 196, 138, 69, 55, 109, 356, 357, 97,
- 358, 100, 72, 106, 16, 67, 38, 359, 197, 360,
- 169, 361, 305, 362, 126, 155, 322, 65, 363, 161,
- 281, 6, 328, 31, 183, 171, 63, 364, 162, 114,
- 329, 330, 165, 98, 5, 168, 33, 10, 70, 73,
- 319, 320, 321, 53, 335, 113, 13, 365, 306, 107,
- 300, 252, -233, 125, -220, -224, -182, 178, -252, 174,
- -92, -242, -241, -182, -71, -176, 167, 163, -176, 322,
- -33, -34, -157, 142, 195, 81, 81, -224, -223, -222,
- -264, 197, 178, -251, -240, 170, 179, -230, 171, 172,
- -225, 163, 29, -264, -225, 169, 179, 197, 197, 105,
- 197, 105, 197, 197, 197, 197, 197, 197, 197, 197,
- 197, 194, -231, 117, -231, 339, 339, -236, -264, -264,
- -264, 165, 34, 34, -179, -225, 165, 23, -231, -231,
- -157, 142, -231, -231, -231, -231, 205, 205, -231, -231,
- -231, -231, -231, -231, -231, -231, -231, -231, -231, -231,
- -231, -231, -231, -92, -74, 212, 152, 154, 157, 72,
- 117, -35, 207, -22, -92, -175, 167, -259, -175, -175,
- -92, 149, -92, -173, 125, 13, -173, -173, -173, -173,
- -173, 208, 296, 208, 296, 208, 209, 208, 209, 208,
- -170, -169, 287, 288, 282, 286, -259, 313, 298, -259,
- 201, 162, 202, 164, -226, 163, 34, 175, 209, 282,
- 204, -173, -195, -277, -183, -195, -195, 31, 165, -182,
- -52, -182, 87, -7, -3, -11, -10, -12, 117, 81,
- 108, 106, 107, 124, -76, -100, 127, 109, 125, 126,
- 111, 129, 128, 139, 132, 133, 134, 135, 136, 137,
- 138, 130, 131, 142, 117, 118, 119, 120, 121, 122,
- 123, -165, -277, -117, -277, 150, 151, -103, -103, -103,
- -103, -103, -103, -103, -103, -103, -103, -277, 149, -2,
- -112, -4, -277, -277, -277, -277, -277, -277, -277, -277,
- -124, -76, -277, -281, -277, -281, -109, -277, -281, -109,
- -281, -109, -281, -281, -109, -281, -109, -281, -281, -109,
- -277, -277, -277, -277, -277, -277, -277, -194, -271, -272,
- -95, -92, -128, -3, -50, -147, 20, 32, -76, -129,
- -130, -76, -128, 55, -66, -68, -70, 59, 60, 93,
- 12, -185, -184, 23, -182, 87, 149, 12, -93, 27,
- -92, -78, -79, -80, -81, -95, -118, -277, 12, -85,
- -86, -92, -94, -187, 81, 226, -160, -197, -162, -161,
- 303, 305, 117, -186, -182, 87, 30, 82, 81, -92,
- -199, -202, -204, -203, -205, -200, -201, 249, 250, 143,
- 253, 255, 256, 257, 258, 259, 260, 261, 262, 263,
- 264, 31, 186, 245, 246, 247, 248, 265, 266, 267,
- 268, 269, 270, 271, 272, 232, 251, 333, 233, 234,
- 235, 236, 237, 238, 240, 241, 242, 243, 244, -262,
- -259, 80, 82, 81, -206, 80, -74, -92, 109, -259,
- -259, -231, -231, 194, -27, -26, -255, 16, -25, -26,
- 157, 101, 102, 154, 80, -220, 80, -229, -262, -259,
- 80, 29, 169, 168, -228, -225, -228, -229, -259, -119,
- -182, -187, -259, 29, 29, -153, -182, -153, -153, 21,
- -153, 21, -153, 21, 88, -182, -153, 21, -153, 21,
- -153, 21, -153, 21, -153, 21, 30, 74, 75, 30,
- 77, 78, 79, -119, -119, -220, -157, -92, -259, 88,
- 88, -231, -231, 88, 87, 87, 87, -231, -231, 88,
- 87, -259, 87, -265, 180, 221, 223, 88, 88, 88,
- 88, 30, 87, -266, 30, 440, 439, 441, 442, 443,
- 88, 30, 88, 30, 88, -182, 80, -73, 214, 117,
- 203, 203, 162, 162, 216, -92, 215, 217, 218, 40,
- 81, 165, -85, 24, 72, -87, -92, -259, -188, -187,
- -180, 87, -76, -173, -92, -173, -92, -173, -173, -173,
- -173, -168, 12, 127, -227, 12, 127, -168, -195, -195,
- -92, -195, -195, -92, -195, -195, -227, -174, 125, 72,
- -193, 229, 263, 423, 424, 425, -76, -76, -76, -76,
- -110, 97, 109, 98, 99, -103, -111, -114, -117, 92,
- 127, 125, 126, 111, -103, -103, -103, -103, -103, -103,
- -103, -103, -103, -103, -103, -103, -103, -103, -103, -196,
- -259, 87, 143, -259, -102, -102, -182, -67, 22, 36,
- -66, -183, -188, -180, -63, -278, -278, -128, -66, -66,
- -76, -76, -119, 87, -66, -119, 87, -66, -66, -62,
- 22, 36, -122, -123, 113, -119, -278, -103, -182, -182,
- -66, -67, -67, -66, -66, 81, -273, 305, 306, 427,
- -190, 197, -189, 23, -187, 87, -132, -278, -133, 27,
- 10, 127, 81, 19, 81, -131, 25, 26, -132, -104,
- -182, 88, 91, -77, 81, 12, -70, -92, -184, 134,
- -188, -92, -152, 197, -92, 31, 81, -88, -90, -89,
- -91, 62, 66, 68, 63, 64, 65, 69, -191, 23,
- -78, -3, -277, -92, -85, -279, 81, 12, 73, -279,
- 81, 149, -160, -162, 81, 304, 306, 307, 72, 100,
- -76, -211, 142, -238, -237, -236, -220, -222, -223, -224,
- 82, -177, 97, 109, -215, 277, -206, -206, -206, -206,
- -206, -210, -157, -210, -210, -210, 80, 80, -206, -206,
- -206, -206, -212, 80, -212, -212, -213, 80, -213, -252,
- -76, -248, -247, -243, -246, 173, 94, 335, 73, -241,
- -131, 88, -73, 24, -250, -246, -259, 87, -259, 87,
- 81, 17, -221, -220, -120, 221, -254, 197, -251, -242,
- 80, 29, -228, -229, -229, 149, -259, 81, 27, 105,
- 105, 105, 105, 335, 154, 31, -220, -120, -196, 165,
- -196, -196, 87, 87, -172, 448, -85, 164, 220, -75,
- 318, 87, 83, -92, -92, -92, -92, -92, 157, 154,
- 205, -92, -92, -55, 182, 177, -92, 81, -55, -173,
- -187, -187, -92, -173, -92, 87, -92, -182, 97, 98,
- 99, -111, -103, -103, -103, -65, 187, 108, -278, -278,
- -66, -66, -277, 149, -5, -132, -278, -278, 81, 73,
- 23, 12, 12, -278, 12, 12, -278, -278, -66, -125,
- -123, 115, -76, -278, -278, 81, 81, -278, -278, -278,
- -278, -278, -272, 426, 306, -96, 70, 166, 71, -277,
- -189, -147, 38, 46, 57, -76, -76, -130, -147, -164,
- 20, 12, 53, 53, -97, 13, -68, -78, -70, 149,
- -97, -101, 31, 53, -3, -277, -277, -155, -159, -119,
- -79, -80, -80, -79, -80, 62, 62, 62, 67, 62,
- 67, 62, -89, -187, -278, -278, -3, -152, 73, -78,
- -92, -78, -94, -187, 134, -161, -163, 308, 305, 311,
- -259, 87, 81, -236, -224, -208, 30, 97, -216, 278,
- -210, -210, -211, -259, 143, -211, -211, -211, -219, 87,
- -219, 88, 88, 82, -249, -244, -245, 32, 76, -243,
- -231, 87, 37, -182, 82, 164, 72, 16, -149, -182,
- 81, 82, -121, 222, -119, 82, -182, 82, -149, -229,
- -183, -182, -277, 162, 30, 30, -120, -121, -211, -259,
- 450, 449, 82, -92, -72, 212, 219, 80, 84, -261,
- 73, 203, 274, 203, 206, 165, -195, -92, -168, -168,
- -65, 108, -103, -103, -278, -278, -67, -183, -128, -147,
- -198, 143, 249, 186, 247, 243, 263, 254, 276, 245,
- 277, -196, -198, -103, -103, -103, -103, 332, -128, 116,
- -76, 114, -103, -103, 163, 163, 163, -153, 39, 87,
- 87, 58, -92, -126, 14, -76, 134, -132, -154, 72,
- -155, -113, -115, -114, -277, -148, -278, -182, -153, -97,
- 81, 117, -83, -82, 72, 73, -84, 72, -82, 62,
- 62, -278, -97, -78, -97, -97, 149, 305, 309, 310,
- -236, -209, 72, -103, -211, -211, 82, 81, 82, 81,
- 82, 81, -178, 372, 109, -245, -244, -231, -231, 88,
- -259, -92, -92, 17, 81, -220, -119, 53, -248, 82,
- -253, -254, -92, -102, -121, -150, 80, 82, -258, 335,
- -260, -259, -182, -182, -182, -92, -173, -173, -103, -278,
- -132, -278, -206, -206, -206, -213, -206, 237, -206, 237,
- -278, -278, 20, 20, 20, 20, -277, -60, 328, -76,
- 81, 81, -277, -277, -277, -278, 87, -210, -127, 15,
- 17, 28, -154, 81, -278, -278, 81, 53, 149, -278,
- -128, -159, -76, -76, 80, -76, -128, -97, -214, 274,
- 10, -210, 87, -210, 88, 88, 372, 30, 77, 78,
- 79, 30, 74, 75, -150, -149, -182, 199, 181, -278,
- 81, -217, 335, 338, 23, -149, -257, -256, -183, 80,
- 73, -147, -210, -259, -103, -103, -103, -103, -103, -132,
- 87, -103, -103, -151, -278, -182, 169, -151, -151, -190,
- -210, -135, -140, -170, -76, -112, 29, -115, 53, -3,
- -182, -113, -182, -132, -149, -132, -218, 169, 29, 168,
- -106, -211, -211, 82, 82, 23, 200, -92, -254, 339,
- 339, -3, 82, 81, 117, -149, -92, -278, -278, -278,
- -278, -61, 127, 335, -278, -278, -278, 81, -278, -278,
- -278, -96, -138, 422, -141, 42, -142, 43, 10, -113,
- 149, 82, -207, 94, 29, 29, -3, -277, 80, -53,
- 335, -256, -235, -183, 87, 88, 82, -278, 333, 69,
- 336, -182, 169, -135, 47, 255, -143, 51, -144, -139,
- 52, 17, -155, -182, 87, -53, -103, 196, -149, -54,
- 211, 426, -261, 58, 334, 337, -136, 49, -134, 48,
- -134, -142, 17, -145, 44, 45, 87, -278, -278, 82,
- 174, -258, 58, -137, 50, 72, 100, 87, 17, 17,
- -268, -269, 72, 213, 335, 72, 100, 87, 87, -269,
- 72, 11, 10, 336, -267, 182, 177, 180, 31, -267,
- 337, 176, 30, 97,
+ -1000, -277, -1, -3, -8, -9, -10, -11, -12, -13,
+ -14, -15, -16, -17, -18, -19, -41, -42, -43, -45,
+ -46, -47, -48, -49, -6, -44, -20, -21, -50, -51,
+ -52, -53, -54, -4, -279, 6, 7, 8, -62, 10,
+ 11, 31, -23, -33, 153, -34, -24, 154, -35, 156,
+ 155, 192, 157, 185, 71, 231, 232, 234, 235, 236,
+ 237, -63, 190, 191, 159, 35, 42, 32, 33, 36,
+ 162, 81, 9, 334, 187, 186, 26, -278, 474, -70,
+ 5, -138, 16, -3, -55, -282, -55, -55, -55, -55,
+ -55, -55, -237, -239, 81, 126, 81, -71, -185, 165,
+ 174, 173, 170, -265, 107, 220, 325, 163, -39, -38,
+ -37, -36, -40, 30, -30, -31, -257, -29, -26, 158,
+ 155, 200, 102, 103, 192, 193, 194, 157, 176, 191,
+ 195, 190, 209, -25, 77, 32, 347, 350, -244, 154,
+ 160, 161, 335, 105, 104, 72, 156, -241, 281, 451,
+ -40, 453, 95, 97, 452, 41, 165, 454, 455, 456,
+ 457, 175, 458, 459, 460, 461, 467, 468, 469, 470,
+ 106, 5, 164, -265, -80, 291, 227, 77, -199, -195,
+ -261, -189, 84, 85, 86, 344, 178, 378, 379, 225,
+ 77, 281, 451, 231, 245, 239, 266, 258, 345, 380,
+ 228, 179, 213, 448, 256, 312, 453, 381, 193, 304,
+ 286, 294, 95, 234, 321, 466, 230, 382, 464, 97,
+ 452, 76, 48, 41, 188, 254, 250, 454, 214, 383,
+ 355, 207, 105, 102, 473, 248, 47, 28, 463, 104,
+ 46, 455, 384, 456, 296, 271, 442, 45, 309, 194,
+ 385, 80, 349, 450, 298, 249, 295, 224, 462, 159,
+ 386, 434, 306, 443, 387, 272, 276, 388, 313, 49,
+ 389, 390, 444, 103, 391, 75, 457, 243, 244, 392,
+ 222, 177, 315, 270, 175, 34, 299, 346, 226, 55,
+ 201, 316, 43, 274, 42, 438, 393, 441, 269, 265,
+ 50, 394, 395, 396, 397, 458, 268, 242, 264, 472,
+ 219, 459, 59, 161, 278, 277, 279, 208, 311, 261,
+ 398, 399, 400, 182, 78, 401, 251, 19, 402, 403,
+ 307, 215, 404, 53, 405, 406, 319, 191, 407, 51,
+ 460, 38, 196, 461, 408, 409, 410, 411, 412, 305,
+ 413, 297, 273, 275, 203, 293, 348, 414, 247, 195,
+ 465, 415, 183, 449, 197, 200, 190, 320, 184, 416,
+ 417, 418, 419, 420, 229, 421, 422, 235, 467, 40,
+ 423, 424, 425, 426, 223, 218, 314, 323, 58, 79,
+ 283, 427, 447, 241, 216, 428, 232, 52, 468, 469,
+ 470, 210, 471, 289, 106, 220, 221, 44, 262, 202,
+ 429, 430, 252, 253, 267, 240, 263, 233, 435, 204,
+ 308, 192, 431, 322, 217, 284, 352, 209, 310, 446,
+ 351, 260, 257, 211, 432, 166, 205, 206, 433, 436,
+ 300, 290, 301, 302, 227, 303, 291, 212, 350, 255,
+ 285, 164, -185, 165, 166, -265, 164, -101, -195, 164,
+ -167, 286, -186, 287, 288, 299, 300, 306, -178, 307,
+ 305, 203, -276, 313, 164, 308, 153, 144, 296, 297,
+ 290, 303, 291, 212, -272, -261, 456, 471, 312, 259,
+ 292, 298, 314, 438, 302, 301, -195, 233, -202, 238,
+ -190, -261, -189, 236, -101, -61, 434, 157, -204, -204,
+ -72, 438, 440, -121, -85, -107, 110, -112, 30, 24,
+ -111, -108, -129, -126, -127, 144, 145, 147, 146, 148,
+ 133, 134, 141, 111, 149, -116, -114, -115, -117, 88,
+ 87, 96, 89, 90, 91, 92, 98, 99, 100, -190,
+ -195, -124, -279, 65, 66, 335, 336, 337, 338, 343,
+ 339, 113, 54, 330, 324, 333, 332, 331, 328, 329,
+ 326, 327, 341, 342, 169, 325, 163, 139, 334, -261,
+ -189, 41, 289, 289, -101, 227, -5, -4, -279, 6,
+ 21, 22, -142, 18, 17, -280, 83, -64, -77, 60,
+ 61, -79, 22, 37, 64, 62, 21, -56, -76, 135,
+ -85, -195, -76, -176, 168, -176, -176, -166, -207, 233,
+ -170, 314, 313, -191, -168, -190, -188, -167, 311, 158,
+ 353, 109, 23, 25, 112, 144, 17, 113, 36, 160,
+ 259, 176, 143, 172, 335, 153, 69, 354, 326, 327,
+ 324, 330, 337, 338, 325, 287, 30, 11, 356, 26,
+ 186, 22, 37, 137, 155, 116, 117, 189, 24, 187,
+ 100, 359, 20, 72, 181, 12, 174, 14, 360, 361,
+ 15, 169, 168, 128, 165, 67, 9, 149, 27, 125,
+ 63, 362, 29, 363, 364, 365, 366, 65, 126, 18,
+ 328, 329, 32, 439, 367, 343, 198, 139, 70, 56,
+ 440, 110, 368, 369, 98, 370, 101, 73, 445, 107,
+ 16, 68, 39, 371, 199, 372, 171, 373, 317, 374,
+ 127, 156, 334, 66, 375, 163, 288, 6, 340, 31,
+ 185, 173, 64, 376, 164, 115, 341, 342, 167, 99,
+ 5, 170, 33, 10, 71, 74, 331, 332, 333, 54,
+ 347, 114, 13, 377, 318, 108, 312, -238, 126, -225,
+ -229, -190, 180, -254, 176, -101, -247, -246, -190, -80,
+ 164, -261, 165, 165, 165, -55, 334, -36, -37, -167,
+ 143, 197, 82, 82, -229, -228, -227, -266, 199, 180,
+ -253, -245, 172, 181, -235, 173, 174, -230, 165, 29,
+ -266, -230, 171, 181, 199, 199, 106, 199, 106, 199,
+ 199, 199, 199, 199, 199, 199, 199, 199, 196, -236,
+ 118, -236, 351, 351, -241, -266, -266, -266, 167, 34,
+ 34, -187, -230, 167, 23, -236, -236, -167, 143, -236,
+ -236, -236, -236, 207, 207, -236, -236, -236, -236, -236,
+ -236, -236, -236, -236, -236, -236, -236, -236, -236, -236,
+ -101, -83, 214, 153, 155, 158, 73, 88, 228, 118,
+ -38, 209, -22, -101, 164, -261, -182, 169, -55, -101,
+ 150, -101, -180, 126, 13, -180, -177, 289, 293, 294,
+ 295, -180, -180, -180, -180, 210, 304, -231, 165, 34,
+ 177, 289, 210, 304, 210, 211, 210, 211, 210, -200,
+ 12, 128, 325, 309, 306, 203, 164, 204, 166, 310,
+ -261, 441, 211, -200, 289, 206, -180, -205, -279, -191,
+ 259, -205, -205, 31, 167, -190, -57, -190, 88, -7,
+ -3, -11, -10, -12, 118, -78, 289, -66, 144, 456,
+ 442, 443, 444, 441, 305, 449, 447, 445, 210, 446,
+ 82, 109, 107, 108, 125, -85, -109, 128, 110, 126,
+ 127, 112, 130, 129, 140, 133, 134, 135, 136, 137,
+ 138, 139, 131, 132, 143, 118, 119, 120, 121, 122,
+ 123, 124, -175, -279, -127, -279, 151, 152, -112, -112,
+ -112, -112, -112, -112, -112, -112, -112, -112, -279, 150,
+ -2, -121, -4, -279, -279, -279, -279, -279, -279, -279,
+ -279, -134, -85, -279, -283, -279, -283, -118, -279, -283,
+ -118, -283, -118, -283, -283, -118, -283, -118, -283, -283,
+ -118, -279, -279, -279, -279, -279, -279, -279, -204, -273,
+ -274, -104, -101, -279, 88, -138, -3, -55, -157, 20,
+ 32, -85, -139, -140, -85, -138, 56, -74, -76, -79,
+ 60, 61, 94, 12, -193, -192, 23, -190, 88, 150,
+ 12, -102, 27, -101, -87, -88, -89, -90, -104, -128,
+ -279, 12, -94, -95, -101, -103, -195, 82, 233, -170,
+ -207, -172, -171, 315, 317, 118, -194, -190, 88, 30,
+ 83, 82, -101, -209, -212, -214, -213, -215, -210, -211,
+ 256, 257, 144, 260, 262, 263, 264, 265, 266, 267,
+ 268, 269, 270, 271, 31, 188, 252, 253, 254, 255,
+ 272, 273, 274, 275, 276, 277, 278, 279, 239, 258,
+ 345, 240, 241, 242, 243, 244, 245, 247, 248, 249,
+ 250, 251, -264, -261, 81, 83, 82, -216, 81, -83,
+ -183, 169, -252, -249, 74, -261, -261, -261, -183, -236,
+ -236, 196, -29, -26, -257, 16, -25, -26, 158, 102,
+ 103, 155, 81, -225, 81, -234, -264, -261, 81, 29,
+ 171, 170, -233, -230, -233, -234, -261, -129, -190, -195,
+ -261, 29, 29, -163, -190, -163, -163, 21, -163, 21,
+ -163, 21, 89, -190, -163, 21, -163, 21, -163, 21,
+ -163, 21, -163, 21, 30, 75, 76, 30, 78, 79,
+ 80, -129, -129, -225, -167, -101, -261, 89, 89, -236,
+ -236, 89, 88, 88, 88, -236, -236, 89, 88, -261,
+ 88, -267, 182, 224, 226, 89, 89, 89, 89, 30,
+ 88, -268, 30, 463, 462, 464, 465, 466, 89, 30,
+ 89, 30, 89, -190, 81, -82, 216, 118, 205, 205,
+ 164, 164, 218, -101, 229, 230, 228, 21, 217, 219,
+ 221, 41, 82, 167, -182, 73, -96, -101, 24, -182,
+ -196, -195, -188, 88, -85, -232, 12, 128, -200, -200,
+ -180, -101, -232, -200, -180, -101, -180, -180, -180, -180,
+ -200, -180, -195, -195, -101, -101, -101, -101, -101, -101,
+ -101, -205, -205, -205, -181, 126, -180, 73, -203, 236,
+ 270, 435, 436, 437, 82, 347, -94, 441, 441, 441,
+ 441, 441, 441, -85, -85, -85, -85, -119, 98, 110,
+ 99, 100, -112, -120, -124, -127, 93, 128, 126, 127,
+ 112, -112, -112, -112, -112, -112, -112, -112, -112, -112,
+ -112, -112, -112, -112, -112, -112, -206, -261, 88, 144,
+ -261, -111, -111, -190, -75, 22, 37, -74, -191, -196,
+ -188, -70, -280, -280, -138, -74, -74, -85, -85, -129,
+ 88, -74, -129, 88, -74, -74, -69, 22, 37, -132,
+ -133, 114, -129, -280, -112, -190, -190, -74, -75, -75,
+ -74, -74, 82, -275, 317, 318, 439, -198, 199, -197,
+ 23, -195, 88, -122, -121, -142, -280, -143, 27, 10,
+ 128, 82, 19, 82, -141, 25, 26, -142, -113, -190,
+ 89, 92, -86, 82, 12, -79, -101, -192, 135, -196,
+ -101, -162, 199, -101, 31, 82, -97, -99, -98, -100,
+ 63, 67, 69, 64, 65, 66, 70, -201, 23, -87,
+ -3, -279, -101, -94, -281, 82, 12, 74, -281, 82,
+ 150, -170, -172, 82, 316, 318, 319, 73, 101, -85,
+ -218, 143, -243, -242, -241, -225, -227, -228, -229, 83,
+ -144, -221, 284, -216, -216, -216, -216, -216, -217, -167,
+ -217, -217, -217, 81, 81, -216, -216, -216, -216, -219,
+ 81, -219, -219, -220, 81, -220, -254, -85, -251, -250,
+ -248, -249, 175, 95, 347, -246, -141, 89, -82, -101,
+ 110, 73, -190, -252, -252, -252, -195, -261, 88, -261,
+ 88, 82, 17, -226, -225, -130, 224, -256, 199, -253,
+ -247, 81, 29, -233, -234, -234, 150, -261, 82, 27,
+ 106, 106, 106, 106, 347, 155, 31, -225, -130, -206,
+ 167, -206, -206, 88, 88, -179, 471, -94, 166, 223,
+ -84, 330, 88, 84, -101, -101, -101, -101, -101, 158,
+ 155, 207, -101, -101, -94, -101, 82, -60, 184, 179,
+ -195, -101, -180, -180, -101, -180, -180, 88, -101, -190,
+ -66, 317, 347, 20, -67, 20, 98, 99, 100, -120,
+ -112, -112, -112, -73, 189, 109, -280, -280, -74, -74,
+ -279, 150, -5, -142, -280, -280, 82, 74, 23, 12,
+ 12, -280, 12, 12, -280, -280, -74, -135, -133, 116,
+ -85, -280, -280, 82, 82, -280, -280, -280, -280, -280,
+ -274, 438, 318, -105, 71, 168, 72, -279, -197, -280,
+ -157, 39, 47, 58, -85, -85, -140, -157, -174, 20,
+ 12, 54, 54, -106, 13, -76, -87, -79, 150, -106,
+ -110, 31, 54, -3, -279, -279, -165, -169, -129, -88,
+ -89, -89, -88, -89, 63, 63, 63, 68, 63, 68,
+ 63, -98, -195, -280, -280, -3, -162, 74, -87, -101,
+ -87, -103, -195, 135, -171, -173, 320, 317, 323, -261,
+ 88, 82, -241, -229, 98, 110, 30, 73, 281, 95,
+ 171, 29, 170, -222, 285, -217, -217, -218, -261, 88,
+ 144, -218, -218, -218, -224, 88, -224, 89, 89, 83,
+ -32, -27, -28, 32, 77, -248, -236, 88, 38, 83,
+ 166, 24, -101, 73, 73, 73, 16, -159, -190, 82,
+ 83, -131, 225, -129, 83, -190, 83, -159, -234, -191,
+ -190, -279, 164, 30, 30, -130, -131, -218, -261, 473,
+ 472, 83, -101, -81, 214, 222, 81, 85, -263, 74,
+ 205, 281, 205, 208, 167, -60, -32, -101, -200, -200,
+ 32, 317, 450, 448, -73, 109, -112, -112, -280, -280,
+ -75, -191, -138, -157, -208, 144, 256, 188, 254, 250,
+ 270, 261, 283, 252, 284, -206, -208, -112, -112, -112,
+ -112, 344, -138, 117, -85, 115, -112, -112, 165, 165,
+ 165, -163, 40, 88, 88, 59, -101, -136, 14, -85,
+ 135, -142, -164, 73, -165, -123, -125, -124, -279, -158,
+ -280, -190, -163, -106, 82, 118, -92, -91, 73, 74,
+ -93, 73, -91, 63, 63, -280, -106, -87, -106, -106,
+ 150, 317, 321, 322, -241, 98, -112, 10, 88, 29,
+ 29, -218, -218, 83, 82, 83, 82, 83, 82, -184,
+ 384, 110, -28, -27, -236, -236, 89, -261, -101, -101,
+ -101, -101, 17, 82, -225, -129, 54, -251, 83, -255,
+ -256, -101, -111, -131, -160, 81, 83, -260, 347, -262,
+ -261, -190, -190, -190, -101, -180, -180, 32, -261, -112,
+ -280, -142, -280, -216, -216, -216, -220, -216, 244, -216,
+ 244, -280, -280, 20, 20, 20, 20, -279, -65, 340,
+ -85, 82, 82, -279, -279, -279, -280, 88, -217, -137,
+ 15, 17, 28, -164, 82, -280, -280, 82, 54, 150,
+ -280, -138, -169, -85, -85, 81, -85, -138, -106, -115,
+ -217, 88, -217, 89, 89, 384, 30, 78, 79, 80,
+ 30, 75, 76, -160, -159, -190, 201, 183, -280, 82,
+ -223, 347, 350, 23, -159, -259, -258, -191, 81, 74,
+ -157, -217, -261, -112, -112, -112, -112, -112, -142, 88,
+ -112, -112, -161, -280, -190, 171, -161, -161, -198, -217,
+ -146, -151, -177, -85, -121, 29, -125, 54, -3, -190,
+ -123, -190, -142, -159, -142, -218, -218, 83, 83, 23,
+ 202, -101, -256, 351, 351, -3, 83, 82, 118, -159,
+ -101, -280, -280, -280, -280, -68, 128, 347, -280, -280,
+ -280, 82, -280, -280, -280, -105, -149, 434, -154, 43,
+ -152, -153, 44, -150, 45, 53, 10, -123, 150, 83,
+ -3, -279, 81, -58, 347, -258, -240, -191, 88, 89,
+ 83, -280, 345, 70, 348, -190, 171, -146, 48, 262,
+ -156, -155, 52, 44, -153, 17, 46, 17, -165, -190,
+ -58, -112, 198, -159, -59, 213, 438, -263, 59, 346,
+ 349, -147, 50, -145, 49, -145, -155, 17, 17, 88,
+ 17, 88, -280, -280, 83, 176, -260, 59, -148, 51,
+ 73, 101, 88, 88, 88, -270, -271, 73, 215, 347,
+ 73, 101, -271, 73, 11, 10, 348, -269, 184, 179,
+ 182, 31, -269, 349, 178, 30, 98,
}
var yyDef = [...]int{
- 32, -2, 2, 4, 5, 6, 7, 8, 9, 10,
+ 34, -2, 2, 4, 5, 6, 7, 8, 9, 10,
11, 12, 13, 14, 15, 16, 17, 18, 19, 20,
21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
- 31, 790, 0, 523, 523, 523, 523, 523, 523, 523,
- 0, 0, -2, -2, -2, 814, 36, 0, 0, 0,
- 0, -2, 481, 482, 0, 484, -2, 0, 0, 493,
- 1309, 1309, 1309, 0, 0, 0, 0, 1307, 53, 54,
- 499, 500, 501, 1, 3, 0, 527, 798, 0, 0,
- -2, 525, 0, 0, 906, 906, 906, 0, 84, 85,
- 0, 0, 0, 814, 904, 0, 904, 0, 912, 913,
- 914, 104, 105, 88, -2, 109, 110, 0, 114, 367,
- 328, 370, 326, 356, -2, 319, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 331, 223,
- 223, 0, 0, -2, 319, 319, 319, 0, 0, 0,
- 353, 908, 273, 223, 223, 0, 223, 223, 223, 223,
- 0, 0, 223, 223, 223, 223, 223, 223, 223, 223,
- 223, 223, 223, 223, 223, 223, 223, 0, 103, 827,
- 0, 0, 113, 37, 33, 34, 35, 0, 902, 0,
- 902, 902, 0, 419, 611, 922, 923, 1059, 1060, 1061,
- 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071,
- 1072, 1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081,
- 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091,
- 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101,
- 1102, 1103, 1104, 1105, 1106, 1107, 1108, 1109, 1110, 1111,
- 1112, 1113, 1114, 1115, 1116, 1117, 1118, 1119, 1120, 1121,
- 1122, 1123, 1124, 1125, 1126, 1127, 1128, 1129, 1130, 1131,
- 1132, 1133, 1134, 1135, 1136, 1137, 1138, 1139, 1140, 1141,
- 1142, 1143, 1144, 1145, 1146, 1147, 1148, 1149, 1150, 1151,
- 1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161,
- 1162, 1163, 1164, 1165, 1166, 1167, 1168, 1169, 1170, 1171,
- 1172, 1173, 1174, 1175, 1176, 1177, 1178, 1179, 1180, 1181,
- 1182, 1183, 1184, 1185, 1186, 1187, 1188, 1189, 1190, 1191,
- 1192, 1193, 1194, 1195, 1196, 1197, 1198, 1199, 1200, 1201,
- 1202, 1203, 1204, 1205, 1206, 1207, 1208, 1209, 1210, 1211,
- 1212, 1213, 1214, 1215, 1216, 1217, 1218, 1219, 1220, 1221,
- 1222, 1223, 1224, 1225, 1226, 1227, 1228, 1229, 1230, 1231,
- 1232, 1233, 1234, 1235, 1236, 1237, 1238, 1239, 1240, 1241,
- 1242, 1243, 1244, 1245, 1246, 1247, 1248, 1249, 1250, 1251,
- 1252, 1253, 1254, 1255, 1256, 1257, 1258, 1259, 1260, 1261,
- 1262, 1263, 1264, 1265, 1266, 1267, 1268, 1269, 1270, 1271,
- 1272, 1273, 1274, 1275, 1276, 1277, 1278, 1279, 1280, 1281,
- 1282, 1283, 1284, 1285, 1286, 1287, 1288, 1289, 1290, 1291,
- 1292, 1293, 1294, 1295, 1296, 1297, 1298, 1299, 1300, 1301,
- 1302, 1303, 1304, 1305, 1306, 0, 472, 472, 472, 472,
- 472, 472, 0, 428, 0, 0, 0, 0, 0, 0,
- 0, 444, 0, 447, 0, 0, 454, 472, 1310, 1310,
- 1310, 893, 0, 478, 479, 466, 464, 461, 462, 480,
- 483, 0, 488, 491, 918, 919, 0, 506, 0, 1130,
- 498, 511, 512, 522, 38, 662, 621, 0, 627, 629,
- 0, 664, 665, 666, 667, 668, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 694, 695, 696, 697,
- 775, 776, 777, 778, 779, 780, 781, 782, 631, 632,
- 772, 0, 882, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 763, 0, 732, 732, 732, 732, 732, 732,
- 732, 732, 732, 0, 0, 0, 0, 0, 0, 0,
- -2, -2, 1309, 0, 521, 790, 49, 0, 523, 528,
- 529, 833, 0, 0, 790, 1308, 0, 0, -2, -2,
- 539, 545, 546, 547, 548, 524, 0, 551, 555, 0,
- 0, 0, 907, 0, 0, 70, 0, 1278, 886, -2,
- -2, 0, 0, 920, 921, 895, -2, 926, 927, 928,
- 929, 930, 931, 932, 933, 934, 935, 936, 937, 938,
- 939, 940, 941, 942, 943, 944, 945, 946, 947, 948,
- 949, 950, 951, 952, 953, 954, 955, 956, 957, 958,
- 959, 960, 961, 962, 963, 964, 965, 966, 967, 968,
- 969, 970, 971, 972, 973, 974, 975, 976, 977, 978,
- 979, 980, 981, 982, 983, 984, 985, 986, 987, 988,
- 989, 990, 991, 992, 993, 994, 995, 996, 997, 998,
- 999, 1000, 1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008,
- 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018,
- 1019, 1020, 1021, 1022, 1023, 1024, 1025, 1026, 1027, 1028,
- 1029, 1030, 1031, 1032, 1033, 1034, 1035, 1036, 1037, 1038,
- 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048,
- 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058,
- -2, 1077, 0, 0, 123, 124, 0, 36, 249, 0,
- 119, 0, 243, 181, 827, 0, 0, 0, 0, 90,
- 111, 112, 223, 223, 0, 113, 113, 335, 336, 337,
- 0, 0, -2, 247, 0, 320, 0, 0, 237, 237,
- 241, 239, 240, 0, 0, 0, 0, 0, 0, 347,
- 0, 348, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 403, 0, 224, 0, 365, 366, 274, 0, 0,
- 0, 0, 345, 346, 0, 0, 909, 910, 0, 0,
- 223, 223, 0, 0, 0, 0, 223, 223, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 100, 818, 0, 0, 0, 0, 0,
- 0, -2, 0, 411, 0, 0, 0, 0, 0, 0,
- 418, 0, 420, 421, 0, 0, 422, 423, 424, 425,
- 426, 472, 0, 472, 0, 472, 472, 472, 472, 469,
- 0, 469, 467, 468, 459, 460, 1310, 1310, 0, 1310,
- 1310, 0, 1310, 1310, 0, 232, 233, 234, 475, 451,
- 452, 455, 456, 1311, 1312, 457, 458, 894, 489, 492,
- 509, 507, 508, 510, 502, 503, 504, 505, 0, 0,
- 0, 0, 0, 0, 625, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 649, 650, 651, 652, 653, 654,
- 655, 628, 0, 642, 0, 0, 0, 684, 685, 686,
- 687, 688, 689, 690, 691, 692, 0, 536, 0, 0,
- 0, 790, 0, 0, 0, 0, 0, 0, 0, 533,
- 0, 764, 0, 715, 0, 716, 724, 0, 717, 725,
- 718, 726, 719, 720, 727, 721, 728, 722, 723, 729,
- 0, 0, 0, 536, 536, 0, 0, 39, 513, 514,
- 0, 594, 798, 0, 538, 836, 0, 0, 799, 791,
- 792, 795, 798, 0, 560, 549, 540, 543, 544, 526,
- 0, 552, 556, 0, 558, 559, 0, 0, 68, 0,
- 610, 0, 562, 564, 565, 566, 592, 0, 0, 0,
- 0, 64, 66, 611, 0, 1278, 892, 0, 72, 73,
- 0, 0, 0, 204, 897, 898, 899, -2, 230, 0,
- 192, 188, 132, 133, 134, 181, 136, 181, 181, 181,
- 181, 201, 201, 201, 201, 164, 165, 166, 167, 168,
- 0, 0, 151, 181, 181, 181, 181, 171, 172, 173,
- 174, 175, 176, 177, 178, 137, 138, 139, 140, 141,
- 142, 143, 144, 145, 183, 183, 183, 185, 185, 0,
- 37, 0, 215, 0, 795, 0, 818, 99, 0, 915,
- 102, 0, 0, 368, 329, 357, 369, 0, 332, 333,
- -2, 0, 0, 319, 0, 321, 0, 231, 0, -2,
- 0, 0, 0, 237, 241, 238, 241, 229, 242, 349,
- 772, 0, 350, 351, 0, 383, 580, 0, 0, 0,
- 0, 0, 389, 390, 391, 0, 393, 394, 395, 396,
- 397, 398, 399, 400, 401, 402, 358, 359, 360, 361,
- 362, 363, 364, 0, 0, 321, 0, 354, 0, 275,
- 276, 0, 0, 279, 280, 281, 282, 0, 0, 285,
- 286, 287, 288, 289, 313, 314, 315, 290, 291, 292,
- 293, 294, 295, 296, 307, 308, 309, 310, 311, 312,
- 297, 298, 299, 300, 301, 304, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 815, 816, 817, 0,
- 0, 0, 262, 903, 0, 262, 62, 417, 612, 924,
- 925, 473, 474, 427, 445, 429, 448, 430, 432, 431,
- 433, 472, 0, 0, 0, 235, 236, 472, 436, 437,
- 438, 439, 440, 441, 442, 443, 0, 450, 0, 0,
- 0, 490, 494, 495, 496, 497, 663, 622, 623, 624,
- 626, 643, 0, 645, 647, 633, 634, 658, 659, 660,
- 0, 0, 0, 0, 656, 638, 0, 669, 670, 671,
- 672, 673, 674, 675, 676, 677, 678, 679, 680, 683,
- 747, 748, 749, 0, 681, 682, 693, 0, 0, 0,
- 537, 773, 0, -2, 0, 661, 881, 798, 0, 0,
- 0, 0, 666, 775, 0, 666, 775, 0, 0, 0,
- 534, 535, 770, 767, 0, 0, 733, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 516, 517, 519, 0,
- 614, 0, 595, 0, 597, 598, 833, 50, 40, 0,
- 834, 0, 0, 0, 0, 794, 796, 797, 833, 0,
- 783, 0, 0, 619, 0, 0, 541, 46, 557, 553,
- 0, 619, 0, 0, 609, 0, 0, 0, 0, 0,
- 0, 599, 0, 0, 602, 0, 0, 0, 0, 593,
- 0, 0, 0, -2, 0, 0, 0, 60, 61, 0,
- 0, 0, 887, 71, 0, 0, 76, 77, 888, 889,
- 890, 891, 0, 106, -2, 270, 125, 127, 128, 129,
- 120, 195, 193, 0, 190, 189, 135, 201, 201, 158,
- 159, 204, 0, 204, 204, 204, 0, 0, 152, 153,
- 154, 155, 146, 0, 147, 148, 149, 0, 150, 248,
- 0, 802, 216, 217, 219, 223, 0, 0, 0, 244,
- 245, 0, 0, 905, 0, 916, 115, 116, 117, 118,
- 113, 0, 0, 121, 323, 0, 0, 0, 246, 0,
- 0, 225, 241, 226, 227, 0, 352, 0, 0, 385,
- 386, 387, 388, 0, 0, 0, 321, 323, 204, 0,
- 277, 278, 283, 284, 302, 0, 0, 0, 0, 828,
- 829, 0, 832, 91, 375, 377, 376, 380, 0, 0,
- 0, 0, 412, 414, 263, 264, 1310, 0, 416, 434,
- 470, 471, 469, 449, 469, 476, 453, 486, 644, 646,
- 648, 635, 656, 639, 0, 636, 0, 0, 630, 698,
- 0, 0, 536, 0, 790, 833, 702, 703, 0, 0,
- 0, 0, 0, 740, 0, 0, 741, 0, 790, 0,
- 768, 0, 0, 714, 734, 0, 0, 735, 736, 737,
- 738, 739, 515, 518, 520, 570, 0, 0, 0, 0,
- 596, 42, 0, 0, 0, 800, 801, 793, 41, 0,
- 900, 901, 784, 785, 786, 0, 550, 561, 542, 0,
- 798, 875, 0, 0, 867, 0, 0, 619, 883, 0,
- 563, 588, 590, 0, 585, 600, 601, 603, 0, 605,
- 0, 607, 608, 567, 568, 569, 0, 619, 0, 619,
- 65, 619, 67, 0, 613, 74, 75, 0, 0, 81,
- 205, 206, 113, 272, 126, 197, 0, 194, 131, 191,
- 204, 204, 160, 202, 203, 161, 162, 163, 0, 179,
- 0, 0, 0, 265, 86, 806, 805, 223, 223, 218,
- 0, 221, 0, 917, 182, 0, 0, 0, 327, 574,
- 0, 338, 339, 0, 322, 382, 0, 215, 0, 228,
- 773, 581, 0, 0, 340, 0, 323, 343, 344, 355,
- 305, 306, 303, 572, 819, 820, 821, 0, 831, 94,
- 0, 0, 0, 0, 373, 0, 415, 63, 472, 472,
- 637, 0, 657, 640, 699, 700, 0, 774, 798, 44,
- 0, 181, 181, 753, 181, 185, 756, 181, 758, 181,
- 761, 0, 0, 0, 0, 0, 0, 0, 765, 713,
- 771, 0, 0, 0, 0, 0, 0, 0, 0, 201,
- 838, 835, 43, 788, 0, 620, 554, 47, 51, 0,
- 875, 866, 877, 879, 0, 0, 0, 871, 0, 790,
- 0, 0, 582, 589, 0, 0, 583, 0, 584, 604,
- 606, -2, 790, 619, 58, 59, 0, 78, 79, 80,
- 271, 199, 0, 196, 156, 157, 201, 0, 201, 0,
- 186, 0, 254, 266, 0, 803, 804, 0, 0, 220,
- 222, 572, 101, 0, 0, 122, 324, 0, 214, 0,
- 0, 407, 404, 341, 342, 0, 0, 830, 374, 0,
- 92, 93, 0, 0, 379, 413, 435, 446, 641, 701,
- 833, 704, 750, 201, 754, 755, 757, 759, 760, 762,
- 706, 705, 0, 0, 0, 0, 0, 798, 0, 769,
- 0, 0, 0, 0, 0, 594, 201, 858, 48, 0,
- 0, 0, 52, 0, 880, 0, 0, 0, 0, 69,
- 798, 884, 885, 586, 0, 591, 798, 57, 207, 200,
- 0, 204, 180, 204, 0, 0, 267, 807, 808, 809,
- 810, 811, 812, 813, 0, 330, 575, 0, 0, 384,
- 0, 392, 0, 0, 0, 0, 95, 96, 0, 0,
- 0, 45, 751, 752, 0, 0, 0, 0, 742, 0,
- 766, 0, 0, 0, 616, 576, 577, 0, 0, 614,
- 840, 839, 852, 856, 789, 787, 0, 878, 0, 870,
- 873, 869, 872, 55, 0, 56, 212, 0, 209, 211,
- 198, 169, 170, 184, 187, 0, 0, 0, 408, 405,
- 406, 822, 573, 0, 0, 0, 381, 707, 709, 708,
- 710, 0, 0, 0, 712, 730, 731, 0, 615, 617,
- 618, 571, 858, 0, 851, 854, -2, 0, 0, 868,
- 0, 587, 130, 0, 208, 210, 822, 0, 0, 371,
- 824, 97, 98, 316, 317, 318, 91, 711, 0, 0,
- 0, 578, 579, 845, 843, 843, 856, 0, 860, 0,
- 865, 0, 876, 874, 213, 87, 0, 0, 0, 0,
- 825, 826, 94, 743, 0, 746, 848, 0, 841, 844,
- 842, 853, 0, 859, 0, 0, 857, 409, 410, 250,
- 0, 378, 744, 837, 0, 846, 847, 855, 0, 0,
- 251, 252, 0, 823, 0, 849, 850, 861, 863, 253,
- 0, 0, 0, 0, 255, 257, 258, 0, 0, 256,
- 745, 259, 260, 261,
+ 31, 32, 33, 825, 0, 557, 557, 557, 557, 557,
+ 557, 557, 0, 0, -2, -2, -2, 849, 961, 0,
+ 938, 0, 0, -2, 490, 491, 0, 493, -2, 0,
+ 0, 502, 1370, 1370, 552, 0, 0, 0, 0, 0,
+ 0, 1368, 55, 56, 508, 509, 510, 1, 3, 0,
+ 561, 833, 0, 0, -2, 559, 0, 0, 944, 944,
+ 944, 0, 86, 87, 0, 0, 0, 849, 0, 0,
+ 0, 0, 0, 557, 0, 939, 109, 110, 90, -2,
+ 114, 115, 0, 119, 368, 329, 371, 327, 357, -2,
+ 320, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 332, 224, 224, 0, 0, -2, 320,
+ 320, 320, 0, 0, 0, 354, 946, 274, 224, 224,
+ 0, 224, 224, 224, 224, 0, 0, 224, 224, 224,
+ 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
+ 224, 224, 0, 108, 862, 0, 0, 0, 118, 962,
+ 959, 960, 35, 36, 37, 1102, 1103, 1104, 1105, 1106,
+ 1107, 1108, 1109, 1110, 1111, 1112, 1113, 1114, 1115, 1116,
+ 1117, 1118, 1119, 1120, 1121, 1122, 1123, 1124, 1125, 1126,
+ 1127, 1128, 1129, 1130, 1131, 1132, 1133, 1134, 1135, 1136,
+ 1137, 1138, 1139, 1140, 1141, 1142, 1143, 1144, 1145, 1146,
+ 1147, 1148, 1149, 1150, 1151, 1152, 1153, 1154, 1155, 1156,
+ 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166,
+ 1167, 1168, 1169, 1170, 1171, 1172, 1173, 1174, 1175, 1176,
+ 1177, 1178, 1179, 1180, 1181, 1182, 1183, 1184, 1185, 1186,
+ 1187, 1188, 1189, 1190, 1191, 1192, 1193, 1194, 1195, 1196,
+ 1197, 1198, 1199, 1200, 1201, 1202, 1203, 1204, 1205, 1206,
+ 1207, 1208, 1209, 1210, 1211, 1212, 1213, 1214, 1215, 1216,
+ 1217, 1218, 1219, 1220, 1221, 1222, 1223, 1224, 1225, 1226,
+ 1227, 1228, 1229, 1230, 1231, 1232, 1233, 1234, 1235, 1236,
+ 1237, 1238, 1239, 1240, 1241, 1242, 1243, 1244, 1245, 1246,
+ 1247, 1248, 1249, 1250, 1251, 1252, 1253, 1254, 1255, 1256,
+ 1257, 1258, 1259, 1260, 1261, 1262, 1263, 1264, 1265, 1266,
+ 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 1275, 1276,
+ 1277, 1278, 1279, 1280, 1281, 1282, 1283, 1284, 1285, 1286,
+ 1287, 1288, 1289, 1290, 1291, 1292, 1293, 1294, 1295, 1296,
+ 1297, 1298, 1299, 1300, 1301, 1302, 1303, 1304, 1305, 1306,
+ 1307, 1308, 1309, 1310, 1311, 1312, 1313, 1314, 1315, 1316,
+ 1317, 1318, 1319, 1320, 1321, 1322, 1323, 1324, 1325, 1326,
+ 1327, 1328, 1329, 1330, 1331, 1332, 1333, 1334, 1335, 1336,
+ 1337, 1338, 1339, 1340, 1341, 1342, 1343, 1344, 1345, 1346,
+ 1347, 1348, 1349, 1350, 1351, 1352, 1353, 1354, 1355, 1356,
+ 1357, 1358, 1359, 1360, 1361, 1362, 1363, 1364, 1365, 1366,
+ 1367, 0, 0, 0, 940, 557, 0, 424, 646, 0,
+ 481, 481, 0, 481, 481, 481, 481, 0, 0, 0,
+ 436, 0, 0, 0, 0, 478, 0, 0, 455, 457,
+ 0, 478, 0, 465, 481, 1371, 1371, 1371, 929, 0,
+ 475, 473, 487, 488, 470, 471, 489, 492, 0, 497,
+ 500, 955, 956, 0, 515, 0, 1178, 507, 520, 521,
+ 0, 553, 554, 40, 697, 656, 0, 662, 664, 0,
+ 699, 700, 701, 702, 703, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 729, 730, 731, 732, 810,
+ 811, 812, 813, 814, 815, 816, 817, 666, 667, 807,
+ 0, 918, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 798, 0, 767, 767, 767, 767, 767, 767, 767,
+ 767, 767, 0, 0, 0, 0, 0, 0, 0, -2,
+ -2, 1370, 0, 530, 0, 0, 825, 51, 0, 557,
+ 562, 563, 868, 0, 0, 825, 1369, 0, 0, -2,
+ -2, 573, 579, 580, 581, 582, 583, 558, 0, 586,
+ 590, 0, 0, 0, 945, 0, 0, 72, 0, 1334,
+ 922, -2, -2, 0, 0, 957, 958, 931, -2, 965,
+ 966, 967, 968, 969, 970, 971, 972, 973, 974, 975,
+ 976, 977, 978, 979, 980, 981, 982, 983, 984, 985,
+ 986, 987, 988, 989, 990, 991, 992, 993, 994, 995,
+ 996, 997, 998, 999, 1000, 1001, 1002, 1003, 1004, 1005,
+ 1006, 1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015,
+ 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024, 1025,
+ 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035,
+ 1036, 1037, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045,
+ 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055,
+ 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065,
+ 1066, 1067, 1068, 1069, 1070, 1071, 1072, 1073, 1074, 1075,
+ 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085,
+ 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095,
+ 1096, 1097, 1098, 1099, 1100, 1101, -2, 0, 0, 128,
+ 129, 0, 38, 250, 0, 124, 0, 244, 197, 862,
+ 942, 952, 0, 0, 0, 942, 92, 116, 117, 224,
+ 224, 0, 118, 118, 336, 337, 338, 0, 0, -2,
+ 248, 0, 321, 0, 0, 238, 238, 242, 240, 241,
+ 0, 0, 0, 0, 0, 0, 348, 0, 349, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 408, 0,
+ 225, 0, 366, 367, 275, 0, 0, 0, 0, 346,
+ 347, 0, 0, 947, 948, 0, 0, 224, 224, 0,
+ 0, 0, 0, 224, 224, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 102, 853, 0, 0, 0, 0, 0, 0, 0, 0,
+ -2, 0, 416, 0, 940, 0, 0, 0, 940, 423,
+ 0, 425, 426, 0, 0, 427, 0, 478, 478, 476,
+ 477, 429, 430, 431, 432, 481, 0, 0, 233, 234,
+ 235, 478, 481, 0, 481, 481, 481, 481, 478, 481,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 1371,
+ 1371, 1371, 484, 481, 462, 463, 466, 467, 1372, 1373,
+ 976, 468, 469, 930, 498, 501, 518, 516, 517, 519,
+ 511, 512, 513, 514, 0, 532, 533, 538, 0, 0,
+ 0, 0, 544, 545, 546, 0, 0, 549, 550, 551,
+ 0, 0, 0, 0, 0, 660, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 684, 685, 686, 687, 688,
+ 689, 690, 663, 0, 677, 0, 0, 0, 719, 720,
+ 721, 722, 723, 724, 725, 726, 727, 0, 570, 0,
+ 0, 0, 825, 0, 0, 0, 0, 0, 0, 0,
+ 567, 0, 799, 0, 750, 0, 751, 759, 0, 752,
+ 760, 753, 761, 754, 755, 762, 756, 763, 757, 758,
+ 764, 0, 0, 0, 570, 570, 0, 0, 41, 522,
+ 523, 0, 629, 950, 531, 833, 0, 572, 871, 0,
+ 0, 834, 826, 827, 830, 833, 0, 595, 584, 574,
+ 577, 578, 560, 0, 587, 591, 0, 593, 594, 0,
+ 0, 70, 0, 645, 0, 597, 599, 600, 601, 627,
+ 0, 0, 0, 0, 66, 68, 646, 0, 1334, 928,
+ 0, 74, 75, 0, 0, 0, 212, 933, 934, 935,
+ -2, 231, 0, 136, 204, 148, 149, 150, 197, 152,
+ 197, 197, 197, 197, 208, 208, 208, 208, 180, 181,
+ 182, 183, 184, 0, 0, 167, 197, 197, 197, 197,
+ 187, 188, 189, 190, 191, 192, 193, 194, 153, 154,
+ 155, 156, 157, 158, 159, 160, 161, 199, 199, 199,
+ 201, 201, 0, 39, 0, 216, 0, 830, 0, 853,
+ 0, 0, 0, 953, 0, 952, 952, 952, 0, 0,
+ 0, 369, 330, 358, 370, 0, 333, 334, -2, 0,
+ 0, 320, 0, 322, 0, 232, 0, -2, 0, 0,
+ 0, 238, 242, 239, 242, 230, 243, 350, 807, 0,
+ 351, 352, 0, 388, 615, 0, 0, 0, 0, 0,
+ 394, 395, 396, 0, 398, 399, 400, 401, 402, 403,
+ 404, 405, 406, 407, 359, 360, 361, 362, 363, 364,
+ 365, 0, 0, 322, 0, 355, 0, 276, 277, 0,
+ 0, 280, 281, 282, 283, 0, 0, 286, 287, 288,
+ 289, 290, 314, 315, 316, 291, 292, 293, 294, 295,
+ 296, 297, 308, 309, 310, 311, 312, 313, 298, 299,
+ 300, 301, 302, 305, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 383, 384, 385, 386, 850, 851,
+ 852, 0, 0, 0, 0, 0, 263, 64, 941, 0,
+ 647, 963, 964, 482, 483, 0, 236, 237, 481, 481,
+ 433, 456, 0, 481, 437, 458, 438, 440, 439, 441,
+ 481, 444, 479, 480, 445, 446, 447, 448, 449, 450,
+ 451, 452, 453, 454, 460, 0, 461, 0, 0, 499,
+ 503, 504, 505, 506, 0, 0, 535, 540, 541, 542,
+ 543, 555, 548, 698, 657, 658, 659, 661, 678, 0,
+ 680, 682, 668, 669, 693, 694, 695, 0, 0, 0,
+ 0, 691, 673, 0, 704, 705, 706, 707, 708, 709,
+ 710, 711, 712, 713, 714, 715, 718, 782, 783, 784,
+ 0, 716, 717, 728, 0, 0, 0, 571, 808, 0,
+ -2, 0, 696, 917, 833, 0, 0, 0, 0, 701,
+ 810, 0, 701, 810, 0, 0, 0, 568, 569, 805,
+ 802, 0, 0, 768, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 525, 526, 528, 0, 649, 0, 630,
+ 0, 632, 633, 0, 951, 868, 52, 42, 0, 869,
+ 0, 0, 0, 0, 829, 831, 832, 868, 0, 818,
+ 0, 0, 654, 0, 0, 575, 48, 592, 588, 0,
+ 654, 0, 0, 644, 0, 0, 0, 0, 0, 0,
+ 634, 0, 0, 637, 0, 0, 0, 0, 628, 0,
+ 0, 0, -2, 0, 0, 0, 62, 63, 0, 0,
+ 0, 923, 73, 0, 0, 78, 79, 924, 925, 926,
+ 927, 0, 111, -2, 271, 130, 132, 133, 134, 125,
+ 135, 206, 205, 151, 208, 208, 174, 175, 212, 0,
+ 212, 212, 212, 0, 0, 168, 169, 170, 171, 162,
+ 0, 163, 164, 165, 0, 166, 249, 0, 837, 217,
+ 218, 220, 224, 0, 0, 245, 246, 0, 0, 101,
+ 0, 0, 954, 0, 0, 0, 107, 120, 121, 122,
+ 123, 118, 0, 0, 126, 324, 0, 0, 0, 247,
+ 0, 0, 226, 242, 227, 228, 0, 353, 0, 0,
+ 390, 391, 392, 393, 0, 0, 0, 322, 324, 212,
+ 0, 278, 279, 284, 285, 303, 0, 0, 0, 0,
+ 863, 864, 0, 867, 93, 376, 378, 377, 381, 0,
+ 0, 0, 0, 417, 263, 837, 0, 421, 264, 265,
+ 422, 478, 443, 459, 478, 435, 442, 485, 464, 495,
+ 539, 0, 0, 0, 547, 0, 679, 681, 683, 670,
+ 691, 674, 0, 671, 0, 0, 665, 733, 0, 0,
+ 570, 0, 825, 868, 737, 738, 0, 0, 0, 0,
+ 0, 775, 0, 0, 776, 0, 825, 0, 803, 0,
+ 0, 749, 769, 0, 0, 770, 771, 772, 773, 774,
+ 524, 527, 529, 605, 0, 0, 0, 0, 631, 949,
+ 44, 0, 0, 0, 835, 836, 828, 43, 0, 936,
+ 937, 819, 820, 821, 0, 585, 596, 576, 0, 833,
+ 911, 0, 0, 903, 0, 0, 654, 919, 0, 598,
+ 623, 625, 0, 620, 635, 636, 638, 0, 640, 0,
+ 642, 643, 602, 603, 604, 0, 654, 0, 654, 67,
+ 654, 69, 0, 648, 76, 77, 0, 0, 83, 213,
+ 214, 118, 273, 131, 137, 0, 0, 0, 141, 0,
+ 0, 144, 146, 147, 207, 212, 212, 176, 209, 210,
+ 211, 177, 178, 179, 0, 195, 0, 0, 0, 266,
+ 88, 841, 840, 224, 224, 219, 0, 222, 0, 198,
+ 0, 943, 103, 0, 0, 0, 0, 328, 609, 0,
+ 339, 340, 0, 323, 387, 0, 216, 0, 229, 808,
+ 616, 0, 0, 341, 0, 324, 344, 345, 356, 306,
+ 307, 304, 607, 854, 855, 856, 0, 866, 96, 0,
+ 0, 0, 0, 374, 0, 419, 420, 65, 481, 481,
+ 534, 0, 537, 0, 672, 0, 692, 675, 734, 735,
+ 0, 809, 833, 46, 0, 197, 197, 788, 197, 201,
+ 791, 197, 793, 197, 796, 0, 0, 0, 0, 0,
+ 0, 0, 800, 748, 806, 0, 0, 0, 0, 0,
+ 0, 0, 0, 208, 873, 870, 45, 823, 0, 655,
+ 589, 49, 53, 0, 911, 902, 913, 915, 0, 0,
+ 0, 907, 0, 825, 0, 0, 617, 624, 0, 0,
+ 618, 0, 619, 639, 641, -2, 825, 654, 60, 61,
+ 0, 80, 81, 82, 272, 138, 139, 0, 142, 143,
+ 145, 172, 173, 208, 0, 208, 0, 202, 0, 255,
+ 267, 0, 838, 839, 0, 0, 221, 223, 607, 104,
+ 105, 106, 0, 0, 127, 325, 0, 215, 0, 0,
+ 412, 409, 342, 343, 0, 0, 865, 375, 0, 94,
+ 95, 0, 0, 380, 418, 428, 434, 536, 556, 676,
+ 736, 868, 739, 785, 208, 789, 790, 792, 794, 795,
+ 797, 741, 740, 0, 0, 0, 0, 0, 833, 0,
+ 804, 0, 0, 0, 0, 0, 629, 208, 893, 50,
+ 0, 0, 0, 54, 0, 916, 0, 0, 0, 0,
+ 71, 833, 920, 921, 621, 0, 626, 833, 59, 140,
+ 212, 196, 212, 0, 0, 268, 842, 843, 844, 845,
+ 846, 847, 848, 0, 331, 610, 0, 0, 389, 0,
+ 397, 0, 0, 0, 0, 97, 98, 0, 0, 0,
+ 47, 786, 787, 0, 0, 0, 0, 777, 0, 801,
+ 0, 0, 0, 651, 611, 612, 0, 0, 649, 875,
+ 874, 887, 900, 824, 822, 0, 914, 0, 906, 909,
+ 905, 908, 57, 0, 58, 185, 186, 200, 203, 0,
+ 0, 0, 413, 410, 411, 857, 608, 0, 0, 0,
+ 382, 742, 744, 743, 745, 0, 0, 0, 747, 765,
+ 766, 0, 650, 652, 653, 606, 893, 0, 886, 0,
+ -2, 895, 0, 0, 0, 901, 0, 904, 0, 622,
+ 857, 0, 0, 372, 859, 99, 100, 317, 318, 319,
+ 93, 746, 0, 0, 0, 613, 614, 880, 878, 878,
+ 888, 889, 0, 0, 896, 0, 0, 0, 912, 910,
+ 89, 0, 0, 0, 0, 860, 861, 96, 778, 0,
+ 781, 883, 0, 876, 879, 877, 890, 0, 0, 897,
+ 0, 899, 414, 415, 251, 0, 379, 779, 872, 0,
+ 881, 882, 891, 892, 898, 252, 253, 0, 858, 0,
+ 884, 885, 254, 0, 0, 0, 0, 256, 258, 259,
+ 0, 0, 257, 780, 260, 261, 262,
}
var yyTok1 = [...]int{
1, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 110, 3, 3, 3, 137, 129, 3,
- 80, 82, 134, 132, 81, 133, 149, 135, 3, 3,
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 451,
- 118, 117, 119, 3, 3, 3, 3, 3, 3, 3,
+ 3, 3, 3, 111, 3, 3, 3, 138, 130, 3,
+ 81, 83, 135, 133, 82, 134, 150, 136, 3, 3,
+ 3, 3, 3, 3, 3, 3, 3, 3, 3, 474,
+ 119, 118, 120, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 139, 3, 3, 3, 3, 3,
+ 3, 3, 3, 3, 140, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
- 3, 3, 3, 3, 128, 3, 140,
+ 3, 3, 3, 3, 129, 3, 141,
}
var yyTok2 = [...]int{
@@ -4824,13 +5456,13 @@ var yyTok2 = [...]int{
42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
52, 53, 54, 55, 56, 57, 58, 59, 60, 61,
62, 63, 64, 65, 66, 67, 68, 69, 70, 71,
- 72, 73, 74, 75, 76, 77, 78, 79, 83, 84,
+ 72, 73, 74, 75, 76, 77, 78, 79, 80, 84,
85, 86, 87, 88, 89, 90, 91, 92, 93, 94,
95, 96, 97, 98, 99, 100, 101, 102, 103, 104,
- 105, 106, 107, 108, 109, 111, 112, 113, 114, 115,
- 116, 120, 121, 122, 123, 124, 125, 126, 127, 130,
- 131, 136, 138, 141, 142, 143, 144, 145, 146, 147,
- 148, 150, 151, 152, 153, 154, 155, 156, 157, 158,
+ 105, 106, 107, 108, 109, 110, 112, 113, 114, 115,
+ 116, 117, 121, 122, 123, 124, 125, 126, 127, 128,
+ 131, 132, 137, 139, 142, 143, 144, 145, 146, 147,
+ 148, 149, 151, 152, 153, 154, 155, 156, 157, 158,
159, 160, 161, 162, 163, 164, 165, 166, 167, 168,
169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
179, 180, 181, 182, 183, 184, 185, 186, 187, 188,
@@ -4881,7 +5513,11 @@ var yyTok3 = [...]int{
57760, 435, 57761, 436, 57762, 437, 57763, 438, 57764, 439,
57765, 440, 57766, 441, 57767, 442, 57768, 443, 57769, 444,
57770, 445, 57771, 446, 57772, 447, 57773, 448, 57774, 449,
- 57775, 450, 0,
+ 57775, 450, 57776, 451, 57777, 452, 57778, 453, 57779, 454,
+ 57780, 455, 57781, 456, 57782, 457, 57783, 458, 57784, 459,
+ 57785, 460, 57786, 461, 57787, 462, 57788, 463, 57789, 464,
+ 57790, 465, 57791, 466, 57792, 467, 57793, 468, 57794, 469,
+ 57795, 470, 57796, 471, 57797, 472, 57798, 473, 0,
}
var yyErrorMessages = [...]struct {
@@ -4894,6 +5530,14 @@ var yyErrorMessages = [...]struct {
/* parser for yacc output */
+func yyIaddr(v interface{}) __yyunsafe__.Pointer {
+ type h struct {
+ t __yyunsafe__.Pointer
+ p __yyunsafe__.Pointer
+ }
+ return (*h)(__yyunsafe__.Pointer(&v)).p
+}
+
var (
yyDebug = 0
yyErrorVerbose = false
@@ -5223,2095 +5867,2529 @@ yydefault:
case 1:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:407
+//line sql.y:424
{
- setParseTree(yylex, yyDollar[1].statement)
+ setParseTree(yylex, yyDollar[1].statementUnion())
}
case 2:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:412
+//line sql.y:429
{
}
case 3:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:413
+//line sql.y:430
{
}
case 4:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:417
+ var yyLOCAL Statement
+//line sql.y:434
{
- yyVAL.statement = yyDollar[1].selStmt
+ yyLOCAL = yyDollar[1].selStmtUnion()
}
- case 32:
+ yyVAL.union = yyLOCAL
+ case 34:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:448
+//line sql.y:467
{
setParseTree(yylex, nil)
}
- case 33:
+ case 35:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:454
+//line sql.y:473
{
- yyVAL.colIdent = NewColIdentWithAt(string(yyDollar[1].bytes), NoAt)
+ yyVAL.colIdent = NewColIdentWithAt(string(yyDollar[1].str), NoAt)
}
- case 34:
+ case 36:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:458
+//line sql.y:477
{
- yyVAL.colIdent = NewColIdentWithAt(string(yyDollar[1].bytes), SingleAt)
+ yyVAL.colIdent = NewColIdentWithAt(string(yyDollar[1].str), SingleAt)
}
- case 35:
+ case 37:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:462
+//line sql.y:481
{
- yyVAL.colIdent = NewColIdentWithAt(string(yyDollar[1].bytes), DoubleAt)
+ yyVAL.colIdent = NewColIdentWithAt(string(yyDollar[1].str), DoubleAt)
}
- case 36:
+ case 38:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:467
+//line sql.y:486
{
yyVAL.colIdent = NewColIdentWithAt("", NoAt)
}
- case 37:
+ case 39:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:471
+//line sql.y:490
{
yyVAL.colIdent = yyDollar[1].colIdent
}
- case 38:
+ case 40:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:477
+ var yyLOCAL Statement
+//line sql.y:496
{
- yyVAL.statement = &OtherAdmin{}
+ yyLOCAL = &OtherAdmin{}
}
- case 39:
+ yyVAL.union = yyLOCAL
+ case 41:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:483
+ var yyLOCAL Statement
+//line sql.y:502
{
- yyVAL.statement = &Load{}
+ yyLOCAL = &Load{}
}
- case 40:
+ yyVAL.union = yyLOCAL
+ case 42:
yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:489
+ var yyLOCAL SelectStatement
+//line sql.y:508
{
- sel := yyDollar[1].selStmt.(*Select)
- sel.OrderBy = yyDollar[2].orderBy
- sel.Limit = yyDollar[3].limit
- sel.Lock = yyDollar[4].lock
- sel.Into = yyDollar[5].selectInto
- yyVAL.selStmt = sel
+ sel := yyDollar[1].selStmtUnion().(*Select)
+ sel.OrderBy = yyDollar[2].orderByUnion()
+ sel.Limit = yyDollar[3].limitUnion()
+ sel.Lock = yyDollar[4].lockUnion()
+ sel.Into = yyDollar[5].selectIntoUnion()
+ yyLOCAL = sel
}
- case 41:
+ yyVAL.union = yyLOCAL
+ case 43:
yyDollar = yyS[yypt-6 : yypt+1]
-//line sql.y:498
+ var yyLOCAL SelectStatement
+//line sql.y:517
{
- yyVAL.selStmt = &Union{FirstStatement: &ParenSelect{Select: yyDollar[2].selStmt}, OrderBy: yyDollar[4].orderBy, Limit: yyDollar[5].limit, Lock: yyDollar[6].lock}
+ yyLOCAL = &Union{FirstStatement: &ParenSelect{Select: yyDollar[2].selStmtUnion()}, OrderBy: yyDollar[4].orderByUnion(), Limit: yyDollar[5].limitUnion(), Lock: yyDollar[6].lockUnion()}
}
- case 42:
+ yyVAL.union = yyLOCAL
+ case 44:
yyDollar = yyS[yypt-6 : yypt+1]
-//line sql.y:502
+ var yyLOCAL SelectStatement
+//line sql.y:521
{
- yyVAL.selStmt = Unionize(yyDollar[1].selStmt, yyDollar[3].selStmt, yyDollar[2].boolean, yyDollar[4].orderBy, yyDollar[5].limit, yyDollar[6].lock)
+ yyLOCAL = Unionize(yyDollar[1].selStmtUnion(), yyDollar[3].selStmtUnion(), yyDollar[2].booleanUnion(), yyDollar[4].orderByUnion(), yyDollar[5].limitUnion(), yyDollar[6].lockUnion())
}
- case 43:
+ yyVAL.union = yyLOCAL
+ case 45:
yyDollar = yyS[yypt-7 : yypt+1]
-//line sql.y:506
+ var yyLOCAL SelectStatement
+//line sql.y:525
{
- yyVAL.selStmt = NewSelect(Comments(yyDollar[2].bytes2), SelectExprs{Nextval{Expr: yyDollar[5].expr}}, []string{yyDollar[3].str} /*options*/, TableExprs{&AliasedTableExpr{Expr: yyDollar[7].tableName}}, nil /*where*/, nil /*groupBy*/, nil /*having*/)
+ yyLOCAL = NewSelect(Comments(yyDollar[2].strs), SelectExprs{&Nextval{Expr: yyDollar[5].exprUnion()}}, []string{yyDollar[3].str} /*options*/, TableExprs{&AliasedTableExpr{Expr: yyDollar[7].tableName}}, nil /*where*/, nil /*groupBy*/, nil /*having*/)
}
- case 44:
+ yyVAL.union = yyLOCAL
+ case 46:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:529
+ var yyLOCAL SelectStatement
+//line sql.y:548
{
- sel := yyDollar[1].selStmt.(*Select)
- sel.OrderBy = yyDollar[2].orderBy
- sel.Limit = yyDollar[3].limit
- sel.Lock = yyDollar[4].lock
- yyVAL.selStmt = sel
+ sel := yyDollar[1].selStmtUnion().(*Select)
+ sel.OrderBy = yyDollar[2].orderByUnion()
+ sel.Limit = yyDollar[3].limitUnion()
+ sel.Lock = yyDollar[4].lockUnion()
+ yyLOCAL = sel
}
- case 45:
+ yyVAL.union = yyLOCAL
+ case 47:
yyDollar = yyS[yypt-6 : yypt+1]
-//line sql.y:537
+ var yyLOCAL SelectStatement
+//line sql.y:556
{
- yyVAL.selStmt = Unionize(yyDollar[1].selStmt, yyDollar[3].selStmt, yyDollar[2].boolean, yyDollar[4].orderBy, yyDollar[5].limit, yyDollar[6].lock)
+ yyLOCAL = Unionize(yyDollar[1].selStmtUnion(), yyDollar[3].selStmtUnion(), yyDollar[2].booleanUnion(), yyDollar[4].orderByUnion(), yyDollar[5].limitUnion(), yyDollar[6].lockUnion())
}
- case 46:
+ yyVAL.union = yyLOCAL
+ case 48:
yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:543
+ var yyLOCAL Statement
+//line sql.y:562
{
- yyVAL.statement = &Stream{Comments: Comments(yyDollar[2].bytes2), SelectExpr: yyDollar[3].selectExpr, Table: yyDollar[5].tableName}
+ yyLOCAL = &Stream{Comments: Comments(yyDollar[2].strs), SelectExpr: yyDollar[3].selectExprUnion(), Table: yyDollar[5].tableName}
}
- case 47:
+ yyVAL.union = yyLOCAL
+ case 49:
yyDollar = yyS[yypt-7 : yypt+1]
-//line sql.y:549
+ var yyLOCAL Statement
+//line sql.y:568
{
- yyVAL.statement = &VStream{Comments: Comments(yyDollar[2].bytes2), SelectExpr: yyDollar[3].selectExpr, Table: yyDollar[5].tableName, Where: NewWhere(WhereClause, yyDollar[6].expr), Limit: yyDollar[7].limit}
+ yyLOCAL = &VStream{Comments: Comments(yyDollar[2].strs), SelectExpr: yyDollar[3].selectExprUnion(), Table: yyDollar[5].tableName, Where: NewWhere(WhereClause, yyDollar[6].exprUnion()), Limit: yyDollar[7].limitUnion()}
}
- case 48:
+ yyVAL.union = yyLOCAL
+ case 50:
yyDollar = yyS[yypt-8 : yypt+1]
-//line sql.y:557
+ var yyLOCAL SelectStatement
+//line sql.y:576
{
- yyVAL.selStmt = NewSelect(Comments(yyDollar[2].bytes2), yyDollar[4].selectExprs /*SelectExprs*/, yyDollar[3].strs /*options*/, yyDollar[5].tableExprs /*from*/, NewWhere(WhereClause, yyDollar[6].expr), GroupBy(yyDollar[7].exprs), NewWhere(HavingClause, yyDollar[8].expr))
+ yyLOCAL = NewSelect(Comments(yyDollar[2].strs), yyDollar[4].selectExprsUnion() /*SelectExprs*/, yyDollar[3].strs /*options*/, yyDollar[5].tableExprsUnion() /*from*/, NewWhere(WhereClause, yyDollar[6].exprUnion()), GroupBy(yyDollar[7].exprsUnion()), NewWhere(HavingClause, yyDollar[8].exprUnion()))
}
- case 49:
+ yyVAL.union = yyLOCAL
+ case 51:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:563
+ var yyLOCAL SelectStatement
+//line sql.y:582
{
- yyVAL.selStmt = yyDollar[1].selStmt
+ yyLOCAL = yyDollar[1].selStmtUnion()
}
- case 50:
+ yyVAL.union = yyLOCAL
+ case 52:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:567
+ var yyLOCAL SelectStatement
+//line sql.y:586
{
- yyVAL.selStmt = &ParenSelect{Select: yyDollar[2].selStmt}
+ yyLOCAL = &ParenSelect{Select: yyDollar[2].selStmtUnion()}
}
- case 51:
+ yyVAL.union = yyLOCAL
+ case 53:
yyDollar = yyS[yypt-7 : yypt+1]
-//line sql.y:574
+ var yyLOCAL Statement
+//line sql.y:593
{
// insert_data returns a *Insert pre-filled with Columns & Values
- ins := yyDollar[6].ins
- ins.Action = yyDollar[1].insertAction
- ins.Comments = yyDollar[2].bytes2
- ins.Ignore = yyDollar[3].ignore
+ ins := yyDollar[6].insUnion()
+ ins.Action = yyDollar[1].insertActionUnion()
+ ins.Comments = yyDollar[2].strs
+ ins.Ignore = yyDollar[3].ignoreUnion()
ins.Table = yyDollar[4].tableName
- ins.Partitions = yyDollar[5].partitions
- ins.OnDup = OnDup(yyDollar[7].updateExprs)
- yyVAL.statement = ins
+ ins.Partitions = yyDollar[5].partitionsUnion()
+ ins.OnDup = OnDup(yyDollar[7].updateExprsUnion())
+ yyLOCAL = ins
}
- case 52:
+ yyVAL.union = yyLOCAL
+ case 54:
yyDollar = yyS[yypt-8 : yypt+1]
-//line sql.y:586
+ var yyLOCAL Statement
+//line sql.y:605
{
- cols := make(Columns, 0, len(yyDollar[7].updateExprs))
- vals := make(ValTuple, 0, len(yyDollar[8].updateExprs))
- for _, updateList := range yyDollar[7].updateExprs {
+ cols := make(Columns, 0, len(yyDollar[7].updateExprsUnion()))
+ vals := make(ValTuple, 0, len(yyDollar[8].updateExprsUnion()))
+ for _, updateList := range yyDollar[7].updateExprsUnion() {
cols = append(cols, updateList.Name.Name)
vals = append(vals, updateList.Expr)
}
- yyVAL.statement = &Insert{Action: yyDollar[1].insertAction, Comments: Comments(yyDollar[2].bytes2), Ignore: yyDollar[3].ignore, Table: yyDollar[4].tableName, Partitions: yyDollar[5].partitions, Columns: cols, Rows: Values{vals}, OnDup: OnDup(yyDollar[8].updateExprs)}
+ yyLOCAL = &Insert{Action: yyDollar[1].insertActionUnion(), Comments: Comments(yyDollar[2].strs), Ignore: yyDollar[3].ignoreUnion(), Table: yyDollar[4].tableName, Partitions: yyDollar[5].partitionsUnion(), Columns: cols, Rows: Values{vals}, OnDup: OnDup(yyDollar[8].updateExprsUnion())}
}
- case 53:
+ yyVAL.union = yyLOCAL
+ case 55:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:598
+ var yyLOCAL InsertAction
+//line sql.y:617
{
- yyVAL.insertAction = InsertAct
- }
- case 54:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:602
- {
- yyVAL.insertAction = ReplaceAct
- }
- case 55:
- yyDollar = yyS[yypt-9 : yypt+1]
-//line sql.y:608
- {
- yyVAL.statement = &Update{Comments: Comments(yyDollar[2].bytes2), Ignore: yyDollar[3].ignore, TableExprs: yyDollar[4].tableExprs, Exprs: yyDollar[6].updateExprs, Where: NewWhere(WhereClause, yyDollar[7].expr), OrderBy: yyDollar[8].orderBy, Limit: yyDollar[9].limit}
+ yyLOCAL = InsertAct
}
+ yyVAL.union = yyLOCAL
case 56:
- yyDollar = yyS[yypt-9 : yypt+1]
-//line sql.y:614
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL InsertAction
+//line sql.y:621
{
- yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Ignore: yyDollar[3].ignore, TableExprs: TableExprs{&AliasedTableExpr{Expr: yyDollar[5].tableName}}, Partitions: yyDollar[6].partitions, Where: NewWhere(WhereClause, yyDollar[7].expr), OrderBy: yyDollar[8].orderBy, Limit: yyDollar[9].limit}
+ yyLOCAL = ReplaceAct
}
+ yyVAL.union = yyLOCAL
case 57:
- yyDollar = yyS[yypt-8 : yypt+1]
-//line sql.y:618
+ yyDollar = yyS[yypt-9 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:627
{
- yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Ignore: yyDollar[3].ignore, Targets: yyDollar[5].tableNames, TableExprs: yyDollar[7].tableExprs, Where: NewWhere(WhereClause, yyDollar[8].expr)}
+ yyLOCAL = &Update{Comments: Comments(yyDollar[2].strs), Ignore: yyDollar[3].ignoreUnion(), TableExprs: yyDollar[4].tableExprsUnion(), Exprs: yyDollar[6].updateExprsUnion(), Where: NewWhere(WhereClause, yyDollar[7].exprUnion()), OrderBy: yyDollar[8].orderByUnion(), Limit: yyDollar[9].limitUnion()}
}
+ yyVAL.union = yyLOCAL
case 58:
- yyDollar = yyS[yypt-7 : yypt+1]
-//line sql.y:622
+ yyDollar = yyS[yypt-9 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:633
{
- yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Ignore: yyDollar[3].ignore, Targets: yyDollar[4].tableNames, TableExprs: yyDollar[6].tableExprs, Where: NewWhere(WhereClause, yyDollar[7].expr)}
+ yyLOCAL = &Delete{Comments: Comments(yyDollar[2].strs), Ignore: yyDollar[3].ignoreUnion(), TableExprs: TableExprs{&AliasedTableExpr{Expr: yyDollar[5].tableName}}, Partitions: yyDollar[6].partitionsUnion(), Where: NewWhere(WhereClause, yyDollar[7].exprUnion()), OrderBy: yyDollar[8].orderByUnion(), Limit: yyDollar[9].limitUnion()}
}
+ yyVAL.union = yyLOCAL
case 59:
- yyDollar = yyS[yypt-7 : yypt+1]
-//line sql.y:626
+ yyDollar = yyS[yypt-8 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:637
{
- yyVAL.statement = &Delete{Comments: Comments(yyDollar[2].bytes2), Ignore: yyDollar[3].ignore, Targets: yyDollar[4].tableNames, TableExprs: yyDollar[6].tableExprs, Where: NewWhere(WhereClause, yyDollar[7].expr)}
+ yyLOCAL = &Delete{Comments: Comments(yyDollar[2].strs), Ignore: yyDollar[3].ignoreUnion(), Targets: yyDollar[5].tableNamesUnion(), TableExprs: yyDollar[7].tableExprsUnion(), Where: NewWhere(WhereClause, yyDollar[8].exprUnion())}
}
+ yyVAL.union = yyLOCAL
case 60:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:631
+ yyDollar = yyS[yypt-7 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:641
{
+ yyLOCAL = &Delete{Comments: Comments(yyDollar[2].strs), Ignore: yyDollar[3].ignoreUnion(), Targets: yyDollar[4].tableNamesUnion(), TableExprs: yyDollar[6].tableExprsUnion(), Where: NewWhere(WhereClause, yyDollar[7].exprUnion())}
}
+ yyVAL.union = yyLOCAL
case 61:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:632
+ yyDollar = yyS[yypt-7 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:645
{
+ yyLOCAL = &Delete{Comments: Comments(yyDollar[2].strs), Ignore: yyDollar[3].ignoreUnion(), Targets: yyDollar[4].tableNamesUnion(), TableExprs: yyDollar[6].tableExprsUnion(), Where: NewWhere(WhereClause, yyDollar[7].exprUnion())}
}
+ yyVAL.union = yyLOCAL
case 62:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:636
+//line sql.y:650
{
- yyVAL.tableNames = TableNames{yyDollar[1].tableName.ToViewName()}
}
case 63:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:640
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:651
{
- yyVAL.tableNames = append(yyVAL.tableNames, yyDollar[3].tableName.ToViewName())
}
case 64:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:646
+ var yyLOCAL TableNames
+//line sql.y:655
{
- yyVAL.tableNames = TableNames{yyDollar[1].tableName}
+ yyLOCAL = TableNames{yyDollar[1].tableName.ToViewName()}
}
+ yyVAL.union = yyLOCAL
case 65:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:650
+//line sql.y:659
{
- yyVAL.tableNames = append(yyVAL.tableNames, yyDollar[3].tableName)
+ yySLICE := (*TableNames)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[3].tableName.ToViewName())
}
case 66:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:656
+ var yyLOCAL TableNames
+//line sql.y:665
{
- yyVAL.tableNames = TableNames{yyDollar[1].tableName}
+ yyLOCAL = TableNames{yyDollar[1].tableName}
}
+ yyVAL.union = yyLOCAL
case 67:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:660
+//line sql.y:669
{
- yyVAL.tableNames = append(yyVAL.tableNames, yyDollar[3].tableName)
+ yySLICE := (*TableNames)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[3].tableName)
}
case 68:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:665
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL TableNames
+//line sql.y:675
{
- yyVAL.partitions = nil
+ yyLOCAL = TableNames{yyDollar[1].tableName}
}
+ yyVAL.union = yyLOCAL
case 69:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:669
+ yyDollar = yyS[yypt-3 : yypt+1]
+//line sql.y:679
{
- yyVAL.partitions = yyDollar[3].partitions
+ yySLICE := (*TableNames)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[3].tableName)
}
case 70:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:675
+ yyDollar = yyS[yypt-0 : yypt+1]
+ var yyLOCAL Partitions
+//line sql.y:684
{
- yyVAL.statement = &Set{Comments: Comments(yyDollar[2].bytes2), Exprs: yyDollar[3].setExprs}
+ yyLOCAL = nil
}
+ yyVAL.union = yyLOCAL
case 71:
- yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:681
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL Partitions
+//line sql.y:688
{
- yyVAL.statement = &SetTransaction{Comments: Comments(yyDollar[2].bytes2), Scope: yyDollar[3].scope, Characteristics: yyDollar[5].characteristics}
+ yyLOCAL = yyDollar[3].partitionsUnion()
}
+ yyVAL.union = yyLOCAL
case 72:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:685
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:694
{
- yyVAL.statement = &SetTransaction{Comments: Comments(yyDollar[2].bytes2), Characteristics: yyDollar[4].characteristics, Scope: ImplicitScope}
+ yyLOCAL = &Set{Comments: Comments(yyDollar[2].strs), Exprs: yyDollar[3].setExprsUnion()}
}
+ yyVAL.union = yyLOCAL
case 73:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:691
+ yyDollar = yyS[yypt-5 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:700
{
- yyVAL.characteristics = []Characteristic{yyDollar[1].characteristic}
+ yyLOCAL = &SetTransaction{Comments: Comments(yyDollar[2].strs), Scope: yyDollar[3].scopeUnion(), Characteristics: yyDollar[5].characteristicsUnion()}
}
+ yyVAL.union = yyLOCAL
case 74:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:695
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:704
{
- yyVAL.characteristics = append(yyVAL.characteristics, yyDollar[3].characteristic)
+ yyLOCAL = &SetTransaction{Comments: Comments(yyDollar[2].strs), Characteristics: yyDollar[4].characteristicsUnion(), Scope: ImplicitScope}
}
+ yyVAL.union = yyLOCAL
case 75:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:701
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL []Characteristic
+//line sql.y:710
{
- yyVAL.characteristic = yyDollar[3].isolationLevel
+ yyLOCAL = []Characteristic{yyDollar[1].characteristicUnion()}
}
+ yyVAL.union = yyLOCAL
case 76:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:705
+ yyDollar = yyS[yypt-3 : yypt+1]
+//line sql.y:714
{
- yyVAL.characteristic = ReadWrite
+ yySLICE := (*[]Characteristic)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[3].characteristicUnion())
}
case 77:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:709
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL Characteristic
+//line sql.y:720
{
- yyVAL.characteristic = ReadOnly
+ yyLOCAL = yyDollar[3].isolationLevelUnion()
}
+ yyVAL.union = yyLOCAL
case 78:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:715
+ var yyLOCAL Characteristic
+//line sql.y:724
{
- yyVAL.isolationLevel = RepeatableRead
+ yyLOCAL = ReadWrite
}
+ yyVAL.union = yyLOCAL
case 79:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:719
+ var yyLOCAL Characteristic
+//line sql.y:728
{
- yyVAL.isolationLevel = ReadCommitted
+ yyLOCAL = ReadOnly
}
+ yyVAL.union = yyLOCAL
case 80:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:723
+ var yyLOCAL IsolationLevel
+//line sql.y:734
{
- yyVAL.isolationLevel = ReadUncommitted
+ yyLOCAL = RepeatableRead
}
+ yyVAL.union = yyLOCAL
case 81:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:727
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL IsolationLevel
+//line sql.y:738
{
- yyVAL.isolationLevel = Serializable
+ yyLOCAL = ReadCommitted
}
+ yyVAL.union = yyLOCAL
case 82:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:733
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL IsolationLevel
+//line sql.y:742
{
- yyVAL.scope = SessionScope
+ yyLOCAL = ReadUncommitted
}
+ yyVAL.union = yyLOCAL
case 83:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:737
+ var yyLOCAL IsolationLevel
+//line sql.y:746
{
- yyVAL.scope = GlobalScope
+ yyLOCAL = Serializable
}
+ yyVAL.union = yyLOCAL
case 84:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:743
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL Scope
+//line sql.y:752
{
- yyDollar[1].createTable.TableSpec = yyDollar[2].TableSpec
- yyDollar[1].createTable.FullyParsed = true
- yyVAL.statement = yyDollar[1].createTable
+ yyLOCAL = SessionScope
}
+ yyVAL.union = yyLOCAL
case 85:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:749
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL Scope
+//line sql.y:756
{
- // Create table [name] like [name]
- yyDollar[1].createTable.OptLike = yyDollar[2].optLike
- yyDollar[1].createTable.FullyParsed = true
- yyVAL.statement = yyDollar[1].createTable
+ yyLOCAL = GlobalScope
}
+ yyVAL.union = yyLOCAL
case 86:
- yyDollar = yyS[yypt-6 : yypt+1]
-//line sql.y:756
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:762
{
- yyDollar[1].createIndex.Columns = yyDollar[3].indexColumns
- yyDollar[1].createIndex.Options = append(yyDollar[1].createIndex.Options, yyDollar[5].indexOptions...)
- yyDollar[1].createIndex.Options = append(yyDollar[1].createIndex.Options, yyDollar[6].indexOptions...)
- yyDollar[1].createIndex.FullyParsed = true
- yyVAL.statement = yyDollar[1].createIndex
+ yyDollar[1].createTableUnion().TableSpec = yyDollar[2].tableSpecUnion()
+ yyDollar[1].createTableUnion().FullyParsed = true
+ yyLOCAL = yyDollar[1].createTableUnion()
}
+ yyVAL.union = yyLOCAL
case 87:
- yyDollar = yyS[yypt-11 : yypt+1]
-//line sql.y:764
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:768
{
- yyVAL.statement = &CreateView{ViewName: yyDollar[7].tableName.ToViewName(), IsReplace: yyDollar[2].boolean, Algorithm: yyDollar[3].str, Definer: yyDollar[4].str, Security: yyDollar[5].str, Columns: yyDollar[8].columns, Select: yyDollar[10].selStmt, CheckOption: yyDollar[11].str}
+ // Create table [name] like [name]
+ yyDollar[1].createTableUnion().OptLike = yyDollar[2].optLikeUnion()
+ yyDollar[1].createTableUnion().FullyParsed = true
+ yyLOCAL = yyDollar[1].createTableUnion()
}
+ yyVAL.union = yyLOCAL
case 88:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:768
+ yyDollar = yyS[yypt-6 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:775
{
- yyDollar[1].createDatabase.FullyParsed = true
- yyDollar[1].createDatabase.CreateOptions = yyDollar[2].collateAndCharsets
- yyVAL.statement = yyDollar[1].createDatabase
+ indexDef := yyDollar[1].alterTableUnion().AlterOptions[0].(*AddIndexDefinition).IndexDefinition
+ indexDef.Columns = yyDollar[3].indexColumnsUnion()
+ indexDef.Options = append(indexDef.Options, yyDollar[5].indexOptionsUnion()...)
+ yyDollar[1].alterTableUnion().AlterOptions = append(yyDollar[1].alterTableUnion().AlterOptions, yyDollar[6].alterOptionsUnion()...)
+ yyDollar[1].alterTableUnion().FullyParsed = true
+ yyLOCAL = yyDollar[1].alterTableUnion()
}
+ yyVAL.union = yyLOCAL
case 89:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:775
+ yyDollar = yyS[yypt-11 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:784
{
- yyVAL.boolean = false
+ yyLOCAL = &CreateView{ViewName: yyDollar[7].tableName.ToViewName(), IsReplace: yyDollar[2].booleanUnion(), Algorithm: yyDollar[3].str, Definer: yyDollar[4].str, Security: yyDollar[5].str, Columns: yyDollar[8].columnsUnion(), Select: yyDollar[10].selStmtUnion(), CheckOption: yyDollar[11].str}
}
+ yyVAL.union = yyLOCAL
case 90:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:779
+ var yyLOCAL Statement
+//line sql.y:788
{
- yyVAL.boolean = true
+ yyDollar[1].createDatabaseUnion().FullyParsed = true
+ yyDollar[1].createDatabaseUnion().CreateOptions = yyDollar[2].collateAndCharsetsUnion()
+ yyLOCAL = yyDollar[1].createDatabaseUnion()
}
+ yyVAL.union = yyLOCAL
case 91:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:784
+ var yyLOCAL bool
+//line sql.y:795
{
- yyVAL.colIdent = NewColIdent("")
+ yyLOCAL = false
}
+ yyVAL.union = yyLOCAL
case 92:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:788
+ var yyLOCAL bool
+//line sql.y:799
{
- yyVAL.colIdent = yyDollar[2].colIdent
+ yyLOCAL = true
}
+ yyVAL.union = yyLOCAL
case 93:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:794
+ yyDollar = yyS[yypt-0 : yypt+1]
+//line sql.y:804
{
- yyVAL.colIdent = yyDollar[1].colIdent
+ yyVAL.colIdent = NewColIdent("")
}
case 94:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:799
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:808
{
- var v []VindexParam
- yyVAL.vindexParams = v
+ yyVAL.colIdent = yyDollar[2].colIdent
}
case 95:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:804
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:814
{
- yyVAL.vindexParams = yyDollar[2].vindexParams
+ yyVAL.colIdent = yyDollar[1].colIdent
}
case 96:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:810
+ yyDollar = yyS[yypt-0 : yypt+1]
+ var yyLOCAL []VindexParam
+//line sql.y:819
{
- yyVAL.vindexParams = make([]VindexParam, 0, 4)
- yyVAL.vindexParams = append(yyVAL.vindexParams, yyDollar[1].vindexParam)
+ var v []VindexParam
+ yyLOCAL = v
}
+ yyVAL.union = yyLOCAL
case 97:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:815
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL []VindexParam
+//line sql.y:824
{
- yyVAL.vindexParams = append(yyVAL.vindexParams, yyDollar[3].vindexParam)
+ yyLOCAL = yyDollar[2].vindexParamsUnion()
}
+ yyVAL.union = yyLOCAL
case 98:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:821
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL []VindexParam
+//line sql.y:830
{
- yyVAL.vindexParam = VindexParam{Key: yyDollar[1].colIdent, Val: yyDollar[3].str}
+ yyLOCAL = make([]VindexParam, 0, 4)
+ yyLOCAL = append(yyLOCAL, yyDollar[1].vindexParam)
}
+ yyVAL.union = yyLOCAL
case 99:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:827
+ yyDollar = yyS[yypt-3 : yypt+1]
+//line sql.y:835
{
- yyVAL.createTable = &CreateTable{Table: yyDollar[4].tableName, IfNotExists: yyDollar[3].boolean}
- setDDL(yylex, yyVAL.createTable)
+ yySLICE := (*[]VindexParam)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[3].vindexParam)
}
case 100:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:834
+//line sql.y:841
{
- yyVAL.alterTable = &AlterTable{Table: yyDollar[3].tableName}
- setDDL(yylex, yyVAL.alterTable)
+ yyVAL.vindexParam = VindexParam{Key: yyDollar[1].colIdent, Val: yyDollar[3].str}
}
case 101:
- yyDollar = yyS[yypt-7 : yypt+1]
-//line sql.y:841
+ yyDollar = yyS[yypt-5 : yypt+1]
+ var yyLOCAL *CreateTable
+//line sql.y:847
{
- yyVAL.createIndex = &CreateIndex{Constraint: yyDollar[2].str, Name: yyDollar[4].colIdent, Options: yyDollar[5].indexOptions, Table: yyDollar[7].tableName}
- setDDL(yylex, yyVAL.createIndex)
+ yyLOCAL = &CreateTable{Table: yyDollar[5].tableName, IfNotExists: yyDollar[4].booleanUnion(), Temp: yyDollar[2].booleanUnion()}
+ setDDL(yylex, yyLOCAL)
}
+ yyVAL.union = yyLOCAL
case 102:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:848
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL *AlterTable
+//line sql.y:854
{
- yyVAL.createDatabase = &CreateDatabase{DBName: string(yyDollar[4].colIdent.String()), IfNotExists: yyDollar[3].boolean}
- setDDL(yylex, yyVAL.createDatabase)
+ yyLOCAL = &AlterTable{Table: yyDollar[3].tableName}
+ setDDL(yylex, yyLOCAL)
}
+ yyVAL.union = yyLOCAL
case 103:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:855
+ yyDollar = yyS[yypt-6 : yypt+1]
+ var yyLOCAL *AlterTable
+//line sql.y:861
{
- yyVAL.alterDatabase = &AlterDatabase{}
- setDDL(yylex, yyVAL.alterDatabase)
+ yyLOCAL = &AlterTable{Table: yyDollar[6].tableName, AlterOptions: []AlterOption{&AddIndexDefinition{IndexDefinition: &IndexDefinition{Info: &IndexInfo{Name: yyDollar[3].colIdent, Type: string(yyDollar[2].str)}, Options: yyDollar[4].indexOptionsUnion()}}}}
+ setDDL(yylex, yyLOCAL)
}
- case 106:
- yyDollar = yyS[yypt-4 : yypt+1]
+ yyVAL.union = yyLOCAL
+ case 104:
+ yyDollar = yyS[yypt-7 : yypt+1]
+ var yyLOCAL *AlterTable
//line sql.y:866
{
- yyVAL.TableSpec = yyDollar[2].TableSpec
- yyVAL.TableSpec.Options = yyDollar[4].tableOptions
+ yyLOCAL = &AlterTable{Table: yyDollar[7].tableName, AlterOptions: []AlterOption{&AddIndexDefinition{IndexDefinition: &IndexDefinition{Info: &IndexInfo{Name: yyDollar[4].colIdent, Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), Fulltext: true}, Options: yyDollar[5].indexOptionsUnion()}}}}
+ setDDL(yylex, yyLOCAL)
}
- case 107:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:872
+ yyVAL.union = yyLOCAL
+ case 105:
+ yyDollar = yyS[yypt-7 : yypt+1]
+ var yyLOCAL *AlterTable
+//line sql.y:871
{
- yyVAL.collateAndCharsets = nil
+ yyLOCAL = &AlterTable{Table: yyDollar[7].tableName, AlterOptions: []AlterOption{&AddIndexDefinition{IndexDefinition: &IndexDefinition{Info: &IndexInfo{Name: yyDollar[4].colIdent, Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), Spatial: true}, Options: yyDollar[5].indexOptionsUnion()}}}}
+ setDDL(yylex, yyLOCAL)
}
- case 108:
- yyDollar = yyS[yypt-1 : yypt+1]
+ yyVAL.union = yyLOCAL
+ case 106:
+ yyDollar = yyS[yypt-7 : yypt+1]
+ var yyLOCAL *AlterTable
//line sql.y:876
{
- yyVAL.collateAndCharsets = yyDollar[1].collateAndCharsets
+ yyLOCAL = &AlterTable{Table: yyDollar[7].tableName, AlterOptions: []AlterOption{&AddIndexDefinition{IndexDefinition: &IndexDefinition{Info: &IndexInfo{Name: yyDollar[4].colIdent, Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), Unique: true}, Options: yyDollar[5].indexOptionsUnion()}}}}
+ setDDL(yylex, yyLOCAL)
}
- case 109:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:882
+ yyVAL.union = yyLOCAL
+ case 107:
+ yyDollar = yyS[yypt-5 : yypt+1]
+ var yyLOCAL *CreateDatabase
+//line sql.y:883
{
- yyVAL.collateAndCharsets = []CollateAndCharset{yyDollar[1].collateAndCharset}
+ yyLOCAL = &CreateDatabase{Comments: Comments(yyDollar[3].strs), DBName: yyDollar[5].tableIdent, IfNotExists: yyDollar[4].booleanUnion()}
+ setDDL(yylex, yyLOCAL)
}
- case 110:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:886
+ yyVAL.union = yyLOCAL
+ case 108:
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL *AlterDatabase
+//line sql.y:890
{
- yyVAL.collateAndCharsets = []CollateAndCharset{yyDollar[1].collateAndCharset}
+ yyLOCAL = &AlterDatabase{}
+ setDDL(yylex, yyLOCAL)
}
+ yyVAL.union = yyLOCAL
case 111:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:890
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL *TableSpec
+//line sql.y:901
{
- yyVAL.collateAndCharsets = append(yyDollar[1].collateAndCharsets, yyDollar[2].collateAndCharset)
+ yyLOCAL = yyDollar[2].tableSpecUnion()
+ yyLOCAL.Options = yyDollar[4].tableOptionsUnion()
}
+ yyVAL.union = yyLOCAL
case 112:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:894
+ yyDollar = yyS[yypt-0 : yypt+1]
+ var yyLOCAL []CollateAndCharset
+//line sql.y:907
{
- yyVAL.collateAndCharsets = append(yyDollar[1].collateAndCharsets, yyDollar[2].collateAndCharset)
+ yyLOCAL = nil
}
+ yyVAL.union = yyLOCAL
case 113:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:899
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL []CollateAndCharset
+//line sql.y:911
{
- yyVAL.boolean = false
+ yyLOCAL = yyDollar[1].collateAndCharsetsUnion()
}
+ yyVAL.union = yyLOCAL
case 114:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:903
+ var yyLOCAL []CollateAndCharset
+//line sql.y:917
{
- yyVAL.boolean = true
+ yyLOCAL = []CollateAndCharset{yyDollar[1].collateAndCharset}
}
+ yyVAL.union = yyLOCAL
case 115:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:909
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL []CollateAndCharset
+//line sql.y:921
{
- yyVAL.collateAndCharset = CollateAndCharset{Type: CharacterSetType, Value: (yyDollar[4].colIdent.String()), IsDefault: yyDollar[1].boolean}
+ yyLOCAL = []CollateAndCharset{yyDollar[1].collateAndCharset}
}
+ yyVAL.union = yyLOCAL
case 116:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:913
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:925
{
- yyVAL.collateAndCharset = CollateAndCharset{Type: CharacterSetType, Value: ("'" + string(yyDollar[4].bytes) + "'"), IsDefault: yyDollar[1].boolean}
+ yySLICE := (*[]CollateAndCharset)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[2].collateAndCharset)
}
case 117:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:919
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:929
{
- yyVAL.collateAndCharset = CollateAndCharset{Type: CollateType, Value: (yyDollar[4].colIdent.String()), IsDefault: yyDollar[1].boolean}
+ yySLICE := (*[]CollateAndCharset)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[2].collateAndCharset)
}
case 118:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:923
+ yyDollar = yyS[yypt-0 : yypt+1]
+ var yyLOCAL bool
+//line sql.y:934
{
- yyVAL.collateAndCharset = CollateAndCharset{Type: CollateType, Value: ("'" + string(yyDollar[4].bytes) + "'"), IsDefault: yyDollar[1].boolean}
+ yyLOCAL = false
}
+ yyVAL.union = yyLOCAL
case 119:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:930
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL bool
+//line sql.y:938
{
- yyVAL.optLike = &OptLike{LikeTable: yyDollar[2].tableName}
+ yyLOCAL = true
}
+ yyVAL.union = yyLOCAL
case 120:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:934
+//line sql.y:944
{
- yyVAL.optLike = &OptLike{LikeTable: yyDollar[3].tableName}
+ yyVAL.collateAndCharset = CollateAndCharset{Type: CharacterSetType, Value: (yyDollar[4].colIdent.String()), IsDefault: yyDollar[1].booleanUnion()}
}
case 121:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:940
+ yyDollar = yyS[yypt-4 : yypt+1]
+//line sql.y:948
{
- yyVAL.columnDefinitions = []*ColumnDefinition{yyDollar[1].columnDefinition}
+ yyVAL.collateAndCharset = CollateAndCharset{Type: CharacterSetType, Value: (encodeSQLString(yyDollar[4].str)), IsDefault: yyDollar[1].booleanUnion()}
}
case 122:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:944
+ yyDollar = yyS[yypt-4 : yypt+1]
+//line sql.y:954
{
- yyVAL.columnDefinitions = append(yyDollar[1].columnDefinitions, yyDollar[3].columnDefinition)
+ yyVAL.collateAndCharset = CollateAndCharset{Type: CollateType, Value: (yyDollar[4].colIdent.String()), IsDefault: yyDollar[1].booleanUnion()}
}
case 123:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:950
+ yyDollar = yyS[yypt-4 : yypt+1]
+//line sql.y:958
{
- yyVAL.TableSpec = &TableSpec{}
- yyVAL.TableSpec.AddColumn(yyDollar[1].columnDefinition)
+ yyVAL.collateAndCharset = CollateAndCharset{Type: CollateType, Value: (encodeSQLString(yyDollar[4].str)), IsDefault: yyDollar[1].booleanUnion()}
}
case 124:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:955
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL *OptLike
+//line sql.y:965
{
- yyVAL.TableSpec = &TableSpec{}
- yyVAL.TableSpec.AddConstraint(yyDollar[1].constraintDefinition)
+ yyLOCAL = &OptLike{LikeTable: yyDollar[2].tableName}
}
+ yyVAL.union = yyLOCAL
case 125:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:960
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL *OptLike
+//line sql.y:969
{
- yyVAL.TableSpec.AddColumn(yyDollar[3].columnDefinition)
+ yyLOCAL = &OptLike{LikeTable: yyDollar[3].tableName}
}
+ yyVAL.union = yyLOCAL
case 126:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:964
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL []*ColumnDefinition
+//line sql.y:975
{
- yyVAL.TableSpec.AddColumn(yyDollar[3].columnDefinition)
- yyVAL.TableSpec.AddConstraint(yyDollar[4].constraintDefinition)
+ yyLOCAL = []*ColumnDefinition{yyDollar[1].columnDefinitionUnion()}
}
+ yyVAL.union = yyLOCAL
case 127:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:969
+//line sql.y:979
{
- yyVAL.TableSpec.AddIndex(yyDollar[3].indexDefinition)
+ yySLICE := (*[]*ColumnDefinition)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[3].columnDefinitionUnion())
}
case 128:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:973
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL *TableSpec
+//line sql.y:985
{
- yyVAL.TableSpec.AddConstraint(yyDollar[3].constraintDefinition)
+ yyLOCAL = &TableSpec{}
+ yyLOCAL.AddColumn(yyDollar[1].columnDefinitionUnion())
}
+ yyVAL.union = yyLOCAL
case 129:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:977
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL *TableSpec
+//line sql.y:990
{
- yyVAL.TableSpec.AddConstraint(yyDollar[3].constraintDefinition)
+ yyLOCAL = &TableSpec{}
+ yyLOCAL.AddConstraint(yyDollar[1].constraintDefinitionUnion())
}
+ yyVAL.union = yyLOCAL
case 130:
- yyDollar = yyS[yypt-8 : yypt+1]
-//line sql.y:983
+ yyDollar = yyS[yypt-3 : yypt+1]
+//line sql.y:995
{
- yyDollar[2].columnType.NotNull = yyDollar[3].boolean
- yyDollar[2].columnType.Default = yyDollar[4].optVal
- yyDollar[2].columnType.OnUpdate = yyDollar[5].optVal
- yyDollar[2].columnType.Autoincrement = yyDollar[6].boolean
- yyDollar[2].columnType.KeyOpt = yyDollar[7].colKeyOpt
- yyDollar[2].columnType.Comment = yyDollar[8].literal
- yyVAL.columnDefinition = &ColumnDefinition{Name: yyDollar[1].colIdent, Type: yyDollar[2].columnType}
+ yyVAL.tableSpecUnion().AddColumn(yyDollar[3].columnDefinitionUnion())
}
case 131:
+ yyDollar = yyS[yypt-4 : yypt+1]
+//line sql.y:999
+ {
+ yyVAL.tableSpecUnion().AddColumn(yyDollar[3].columnDefinitionUnion())
+ yyVAL.tableSpecUnion().AddConstraint(yyDollar[4].constraintDefinitionUnion())
+ }
+ case 132:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:994
+//line sql.y:1004
{
- yyVAL.columnType = yyDollar[1].columnType
- yyVAL.columnType.Unsigned = yyDollar[2].boolean
- yyVAL.columnType.Zerofill = yyDollar[3].boolean
+ yyVAL.tableSpecUnion().AddIndex(yyDollar[3].indexDefinitionUnion())
+ }
+ case 133:
+ yyDollar = yyS[yypt-3 : yypt+1]
+//line sql.y:1008
+ {
+ yyVAL.tableSpecUnion().AddConstraint(yyDollar[3].constraintDefinitionUnion())
+ }
+ case 134:
+ yyDollar = yyS[yypt-3 : yypt+1]
+//line sql.y:1012
+ {
+ yyVAL.tableSpecUnion().AddConstraint(yyDollar[3].constraintDefinitionUnion())
}
case 135:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1005
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL *ColumnDefinition
+//line sql.y:1018
{
- yyVAL.columnType = yyDollar[1].columnType
- yyVAL.columnType.Length = yyDollar[2].literal
+ yyDollar[2].columnType.Options = yyDollar[3].columnTypeOptionsUnion()
+ yyLOCAL = &ColumnDefinition{Name: yyDollar[1].colIdent, Type: yyDollar[2].columnType}
}
+ yyVAL.union = yyLOCAL
case 136:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1010
+ yyDollar = yyS[yypt-0 : yypt+1]
+ var yyLOCAL *ColumnTypeOptions
+//line sql.y:1028
{
- yyVAL.columnType = yyDollar[1].columnType
+ yyLOCAL = &ColumnTypeOptions{Null: nil, Default: nil, OnUpdate: nil, Autoincrement: false, KeyOpt: colKeyNone, Comment: nil}
}
+ yyVAL.union = yyLOCAL
case 137:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1016
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL *ColumnTypeOptions
+//line sql.y:1032
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
+ val := true
+ yyDollar[1].columnTypeOptionsUnion().Null = &val
+ yyLOCAL = yyDollar[1].columnTypeOptionsUnion()
}
+ yyVAL.union = yyLOCAL
case 138:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1020
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL *ColumnTypeOptions
+//line sql.y:1038
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
+ val := false
+ yyDollar[1].columnTypeOptionsUnion().Null = &val
+ yyLOCAL = yyDollar[1].columnTypeOptionsUnion()
}
+ yyVAL.union = yyLOCAL
case 139:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1024
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL *ColumnTypeOptions
+//line sql.y:1044
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
+ yyDollar[1].columnTypeOptionsUnion().Default = yyDollar[3].exprUnion()
+ yyLOCAL = yyDollar[1].columnTypeOptionsUnion()
}
+ yyVAL.union = yyLOCAL
case 140:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1028
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL *ColumnTypeOptions
+//line sql.y:1049
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
+ yyDollar[1].columnTypeOptionsUnion().OnUpdate = yyDollar[4].exprUnion()
+ yyLOCAL = yyDollar[1].columnTypeOptionsUnion()
}
+ yyVAL.union = yyLOCAL
case 141:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1032
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL *ColumnTypeOptions
+//line sql.y:1054
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
+ yyDollar[1].columnTypeOptionsUnion().Autoincrement = true
+ yyLOCAL = yyDollar[1].columnTypeOptionsUnion()
}
+ yyVAL.union = yyLOCAL
case 142:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1036
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL *ColumnTypeOptions
+//line sql.y:1059
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
+ yyDollar[1].columnTypeOptionsUnion().Comment = NewStrLiteral(yyDollar[3].str)
+ yyLOCAL = yyDollar[1].columnTypeOptionsUnion()
}
+ yyVAL.union = yyLOCAL
case 143:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1040
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL *ColumnTypeOptions
+//line sql.y:1064
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
+ yyDollar[1].columnTypeOptionsUnion().KeyOpt = colKeyPrimary
+ yyLOCAL = yyDollar[1].columnTypeOptionsUnion()
}
+ yyVAL.union = yyLOCAL
case 144:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1044
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL *ColumnTypeOptions
+//line sql.y:1069
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
+ yyDollar[1].columnTypeOptionsUnion().KeyOpt = colKey
+ yyLOCAL = yyDollar[1].columnTypeOptionsUnion()
}
+ yyVAL.union = yyLOCAL
case 145:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1048
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL *ColumnTypeOptions
+//line sql.y:1074
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
+ yyDollar[1].columnTypeOptionsUnion().KeyOpt = colKeyUniqueKey
+ yyLOCAL = yyDollar[1].columnTypeOptionsUnion()
}
+ yyVAL.union = yyLOCAL
case 146:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1054
+ var yyLOCAL *ColumnTypeOptions
+//line sql.y:1079
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
- yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length
- yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale
+ yyDollar[1].columnTypeOptionsUnion().KeyOpt = colKeyUnique
+ yyLOCAL = yyDollar[1].columnTypeOptionsUnion()
}
+ yyVAL.union = yyLOCAL
case 147:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1060
- {
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
- yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length
- yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale
- }
- case 148:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1066
- {
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
- yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length
- yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale
- }
- case 149:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1072
- {
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
- yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length
- yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale
- }
- case 150:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1078
+ yyDollar = yyS[yypt-3 : yypt+1]
+//line sql.y:1086
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
- yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length
- yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale
+ yyVAL.columnType = yyDollar[1].columnType
+ yyVAL.columnType.Unsigned = yyDollar[2].booleanUnion()
+ yyVAL.columnType.Zerofill = yyDollar[3].booleanUnion()
}
case 151:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1086
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:1097
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
+ yyVAL.columnType = yyDollar[1].columnType
+ yyVAL.columnType.Length = yyDollar[2].literalUnion()
}
case 152:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1090
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:1102
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal}
+ yyVAL.columnType = yyDollar[1].columnType
}
case 153:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1094
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:1108
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
}
case 154:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1098
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:1112
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
}
case 155:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1102
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:1116
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
}
case 156:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:1108
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:1120
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Collate: yyDollar[4].str}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
}
case 157:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:1112
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:1124
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Collate: yyDollar[4].str}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
}
case 158:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1116
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:1128
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
}
case 159:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1120
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:1132
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
}
case 160:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1124
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:1136
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
}
case 161:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1128
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:1140
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
}
case 162:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1132
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:1146
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
+ yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length
+ yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale
}
case 163:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1136
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:1152
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), Charset: yyDollar[2].str, Collate: yyDollar[3].str}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
+ yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length
+ yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale
}
case 164:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1140
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:1158
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
+ yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length
+ yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale
}
case 165:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1144
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:1164
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
+ yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length
+ yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale
}
case 166:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1148
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:1170
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
+ yyVAL.columnType.Length = yyDollar[2].LengthScaleOption.Length
+ yyVAL.columnType.Scale = yyDollar[2].LengthScaleOption.Scale
}
case 167:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1152
+//line sql.y:1178
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
}
case 168:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1156
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:1182
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()}
}
case 169:
- yyDollar = yyS[yypt-6 : yypt+1]
-//line sql.y:1160
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:1186
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()}
}
case 170:
- yyDollar = yyS[yypt-6 : yypt+1]
-//line sql.y:1165
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:1190
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()}
}
case 171:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1171
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:1194
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()}
}
case 172:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1175
+ yyDollar = yyS[yypt-4 : yypt+1]
+//line sql.y:1200
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion(), Charset: yyDollar[3].str, Collate: yyDollar[4].str}
}
case 173:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1179
+ yyDollar = yyS[yypt-4 : yypt+1]
+//line sql.y:1204
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion(), Charset: yyDollar[3].str, Collate: yyDollar[4].str}
}
case 174:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1183
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:1208
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()}
}
case 175:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1187
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:1212
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()}
}
case 176:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1191
+ yyDollar = yyS[yypt-3 : yypt+1]
+//line sql.y:1216
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Charset: yyDollar[2].str, Collate: yyDollar[3].str}
}
case 177:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1195
+ yyDollar = yyS[yypt-3 : yypt+1]
+//line sql.y:1220
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Charset: yyDollar[2].str, Collate: yyDollar[3].str}
}
case 178:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1199
+ yyDollar = yyS[yypt-3 : yypt+1]
+//line sql.y:1224
{
- yyVAL.columnType = ColumnType{Type: string(yyDollar[1].bytes)}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Charset: yyDollar[2].str, Collate: yyDollar[3].str}
}
case 179:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1205
+ yyDollar = yyS[yypt-3 : yypt+1]
+//line sql.y:1228
{
- yyVAL.strs = make([]string, 0, 4)
- yyVAL.strs = append(yyVAL.strs, "'"+string(yyDollar[1].bytes)+"'")
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), Charset: yyDollar[2].str, Collate: yyDollar[3].str}
}
case 180:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1210
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:1232
{
- yyVAL.strs = append(yyDollar[1].strs, "'"+string(yyDollar[3].bytes)+"'")
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
}
case 181:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:1215
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:1236
{
- yyVAL.literal = nil
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
}
case 182:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1219
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:1240
{
- yyVAL.literal = NewIntLiteral(yyDollar[2].bytes)
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
}
case 183:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:1224
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:1244
{
- yyVAL.LengthScaleOption = LengthScaleOption{}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
}
case 184:
- yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:1228
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:1248
{
- yyVAL.LengthScaleOption = LengthScaleOption{
- Length: NewIntLiteral(yyDollar[2].bytes),
- Scale: NewIntLiteral(yyDollar[4].bytes),
- }
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
}
case 185:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:1236
+ yyDollar = yyS[yypt-6 : yypt+1]
+//line sql.y:1252
{
- yyVAL.LengthScaleOption = LengthScaleOption{}
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str}
}
case 186:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1240
+ yyDollar = yyS[yypt-6 : yypt+1]
+//line sql.y:1257
{
- yyVAL.LengthScaleOption = LengthScaleOption{
- Length: NewIntLiteral(yyDollar[2].bytes),
- }
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str), EnumValues: yyDollar[3].strs, Charset: yyDollar[5].str, Collate: yyDollar[6].str}
}
case 187:
- yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:1246
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:1263
{
- yyVAL.LengthScaleOption = LengthScaleOption{
- Length: NewIntLiteral(yyDollar[2].bytes),
- Scale: NewIntLiteral(yyDollar[4].bytes),
- }
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
}
case 188:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:1254
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:1267
{
- yyVAL.boolean = false
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
}
case 189:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1258
+//line sql.y:1271
{
- yyVAL.boolean = true
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
}
case 190:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:1263
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:1275
{
- yyVAL.boolean = false
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
}
case 191:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1267
+//line sql.y:1279
{
- yyVAL.boolean = true
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
}
case 192:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:1273
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:1283
{
- yyVAL.boolean = false
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
}
case 193:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1277
+//line sql.y:1287
{
- yyVAL.boolean = false
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
}
case 194:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1281
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:1291
{
- yyVAL.boolean = true
+ yyVAL.columnType = ColumnType{Type: string(yyDollar[1].str)}
}
case 195:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:1286
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:1297
{
- yyVAL.optVal = nil
+ yyVAL.strs = make([]string, 0, 4)
+ yyVAL.strs = append(yyVAL.strs, encodeSQLString(yyDollar[1].str))
}
case 196:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1290
+ yyDollar = yyS[yypt-3 : yypt+1]
+//line sql.y:1302
{
- yyVAL.optVal = yyDollar[2].expr
+ yyVAL.strs = append(yyDollar[1].strs, encodeSQLString(yyDollar[3].str))
}
case 197:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:1295
+ var yyLOCAL *Literal
+//line sql.y:1307
{
- yyVAL.optVal = nil
+ yyLOCAL = nil
}
+ yyVAL.union = yyLOCAL
case 198:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1299
+ var yyLOCAL *Literal
+//line sql.y:1311
{
- yyVAL.optVal = yyDollar[3].expr
+ yyLOCAL = NewIntLiteral(yyDollar[2].str)
}
+ yyVAL.union = yyLOCAL
case 199:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:1304
+//line sql.y:1316
{
- yyVAL.boolean = false
+ yyVAL.LengthScaleOption = LengthScaleOption{}
}
case 200:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1308
+ yyDollar = yyS[yypt-5 : yypt+1]
+//line sql.y:1320
{
- yyVAL.boolean = true
+ yyVAL.LengthScaleOption = LengthScaleOption{
+ Length: NewIntLiteral(yyDollar[2].str),
+ Scale: NewIntLiteral(yyDollar[4].str),
+ }
}
case 201:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:1313
+//line sql.y:1328
{
- yyVAL.str = ""
+ yyVAL.LengthScaleOption = LengthScaleOption{}
}
case 202:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1317
+ yyDollar = yyS[yypt-3 : yypt+1]
+//line sql.y:1332
{
- yyVAL.str = string(yyDollar[2].colIdent.String())
+ yyVAL.LengthScaleOption = LengthScaleOption{
+ Length: NewIntLiteral(yyDollar[2].str),
+ }
}
case 203:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1321
+ yyDollar = yyS[yypt-5 : yypt+1]
+//line sql.y:1338
{
- yyVAL.str = string(yyDollar[2].bytes)
+ yyVAL.LengthScaleOption = LengthScaleOption{
+ Length: NewIntLiteral(yyDollar[2].str),
+ Scale: NewIntLiteral(yyDollar[4].str),
+ }
}
case 204:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:1326
+ var yyLOCAL bool
+//line sql.y:1346
{
- yyVAL.str = ""
+ yyLOCAL = false
}
+ yyVAL.union = yyLOCAL
case 205:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1330
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL bool
+//line sql.y:1350
{
- yyVAL.str = string(yyDollar[2].colIdent.String())
+ yyLOCAL = true
}
+ yyVAL.union = yyLOCAL
case 206:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1334
+ yyDollar = yyS[yypt-0 : yypt+1]
+ var yyLOCAL bool
+//line sql.y:1355
{
- yyVAL.str = string(yyDollar[2].bytes)
+ yyLOCAL = false
}
+ yyVAL.union = yyLOCAL
case 207:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:1339
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL bool
+//line sql.y:1359
{
- yyVAL.colKeyOpt = colKeyNone
+ yyLOCAL = true
}
+ yyVAL.union = yyLOCAL
case 208:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1343
+ yyDollar = yyS[yypt-0 : yypt+1]
+//line sql.y:1364
{
- yyVAL.colKeyOpt = colKeyPrimary
+ yyVAL.str = ""
}
case 209:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1347
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:1368
{
- yyVAL.colKeyOpt = colKey
+ yyVAL.str = string(yyDollar[2].colIdent.String())
}
case 210:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1351
+//line sql.y:1372
{
- yyVAL.colKeyOpt = colKeyUniqueKey
+ yyVAL.str = encodeSQLString(yyDollar[2].str)
}
case 211:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1355
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:1376
{
- yyVAL.colKeyOpt = colKeyUnique
+ yyVAL.str = string(yyDollar[2].str)
}
case 212:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:1360
+//line sql.y:1381
{
- yyVAL.literal = nil
+ yyVAL.str = ""
}
case 213:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1364
+//line sql.y:1385
{
- yyVAL.literal = NewStrLiteral(yyDollar[2].bytes)
+ yyVAL.str = string(yyDollar[2].colIdent.String())
}
case 214:
- yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:1370
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:1389
{
- yyVAL.indexDefinition = &IndexDefinition{Info: yyDollar[1].indexInfo, Columns: yyDollar[3].indexColumns, Options: yyDollar[5].indexOptions}
+ yyVAL.str = encodeSQLString(yyDollar[2].str)
}
case 215:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:1375
+ yyDollar = yyS[yypt-5 : yypt+1]
+ var yyLOCAL *IndexDefinition
+//line sql.y:1396
{
- yyVAL.indexOptions = nil
+ yyLOCAL = &IndexDefinition{Info: yyDollar[1].indexInfoUnion(), Columns: yyDollar[3].indexColumnsUnion(), Options: yyDollar[5].indexOptionsUnion()}
}
+ yyVAL.union = yyLOCAL
case 216:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1379
+ yyDollar = yyS[yypt-0 : yypt+1]
+ var yyLOCAL []*IndexOption
+//line sql.y:1401
{
- yyVAL.indexOptions = yyDollar[1].indexOptions
+ yyLOCAL = nil
}
+ yyVAL.union = yyLOCAL
case 217:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1385
+ var yyLOCAL []*IndexOption
+//line sql.y:1405
{
- yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption}
+ yyLOCAL = yyDollar[1].indexOptionsUnion()
}
+ yyVAL.union = yyLOCAL
case 218:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1389
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL []*IndexOption
+//line sql.y:1411
{
- yyVAL.indexOptions = append(yyVAL.indexOptions, yyDollar[2].indexOption)
+ yyLOCAL = []*IndexOption{yyDollar[1].indexOptionUnion()}
}
+ yyVAL.union = yyLOCAL
case 219:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1395
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:1415
{
- yyVAL.indexOption = yyDollar[1].indexOption
+ yySLICE := (*[]*IndexOption)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[2].indexOptionUnion())
}
case 220:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1399
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL *IndexOption
+//line sql.y:1421
{
- // should not be string
- yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)}
+ yyLOCAL = yyDollar[1].indexOptionUnion()
}
+ yyVAL.union = yyLOCAL
case 221:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1404
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL *IndexOption
+//line sql.y:1425
{
- yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), Value: NewStrLiteral(yyDollar[2].bytes)}
+ // should not be string
+ yyLOCAL = &IndexOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)}
}
+ yyVAL.union = yyLOCAL
case 222:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1408
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL *IndexOption
+//line sql.y:1430
{
- yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes), String: yyDollar[3].colIdent.String()}
+ yyLOCAL = &IndexOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[2].str)}
}
+ yyVAL.union = yyLOCAL
case 223:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:1414
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL *IndexOption
+//line sql.y:1434
{
- yyVAL.str = ""
+ yyLOCAL = &IndexOption{Name: string(yyDollar[1].str) + " " + string(yyDollar[2].str), String: yyDollar[3].colIdent.String()}
}
+ yyVAL.union = yyLOCAL
case 224:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1418
+ yyDollar = yyS[yypt-0 : yypt+1]
+//line sql.y:1440
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyVAL.str = ""
}
case 225:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1424
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:1444
{
- yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), ConstraintName: NewColIdent(yyDollar[1].str), Name: NewColIdent("PRIMARY"), Primary: true, Unique: true}
+ yyVAL.str = string(yyDollar[1].str)
}
case 226:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1428
+ var yyLOCAL *IndexInfo
+//line sql.y:1450
{
- yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Spatial: true, Unique: false}
+ yyLOCAL = &IndexInfo{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), ConstraintName: NewColIdent(yyDollar[1].str), Name: NewColIdent("PRIMARY"), Primary: true, Unique: true}
}
+ yyVAL.union = yyLOCAL
case 227:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1432
+ var yyLOCAL *IndexInfo
+//line sql.y:1454
{
- yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].bytes) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Fulltext: true, Unique: false}
+ yyLOCAL = &IndexInfo{Type: string(yyDollar[1].str) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Spatial: true, Unique: false}
}
+ yyVAL.union = yyLOCAL
case 228:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:1436
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL *IndexInfo
+//line sql.y:1458
{
- yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].str), ConstraintName: NewColIdent(yyDollar[1].str), Name: NewColIdent(yyDollar[4].str), Unique: true}
+ yyLOCAL = &IndexInfo{Type: string(yyDollar[1].str) + " " + string(yyDollar[2].str), Name: NewColIdent(yyDollar[3].str), Fulltext: true, Unique: false}
}
+ yyVAL.union = yyLOCAL
case 229:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1440
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL *IndexInfo
+//line sql.y:1462
{
- yyVAL.indexInfo = &IndexInfo{Type: string(yyDollar[1].str), Name: NewColIdent(yyDollar[2].str), Unique: false}
+ yyLOCAL = &IndexInfo{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), ConstraintName: NewColIdent(yyDollar[1].str), Name: NewColIdent(yyDollar[4].str), Unique: true}
}
+ yyVAL.union = yyLOCAL
case 230:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:1445
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL *IndexInfo
+//line sql.y:1466
{
- yyVAL.str = ""
+ yyLOCAL = &IndexInfo{Type: string(yyDollar[1].str), Name: NewColIdent(yyDollar[2].str), Unique: false}
}
+ yyVAL.union = yyLOCAL
case 231:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1449
+ yyDollar = yyS[yypt-0 : yypt+1]
+//line sql.y:1471
{
- yyVAL.str = yyDollar[2].str
+ yyVAL.str = ""
}
case 232:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1455
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:1475
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyVAL.str = yyDollar[2].str
}
case 233:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1459
+//line sql.y:1481
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyVAL.str = string(yyDollar[1].str)
}
case 234:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1463
+//line sql.y:1485
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyVAL.str = string(yyDollar[1].str)
}
case 235:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1470
+//line sql.y:1489
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyVAL.str = string(yyDollar[1].str)
}
case 236:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1474
+//line sql.y:1496
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyVAL.str = string(yyDollar[1].str)
}
case 237:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:1479
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:1500
{
- yyVAL.str = "key"
+ yyVAL.str = string(yyDollar[1].str)
}
case 238:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1483
+ yyDollar = yyS[yypt-0 : yypt+1]
+//line sql.y:1505
{
- yyVAL.str = yyDollar[1].str
+ yyVAL.str = "key"
}
case 239:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1489
+//line sql.y:1509
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyVAL.str = yyDollar[1].str
}
case 240:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1493
+//line sql.y:1515
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyVAL.str = string(yyDollar[1].str)
}
case 241:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:1498
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:1519
{
- yyVAL.str = ""
+ yyVAL.str = string(yyDollar[1].str)
}
case 242:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1502
+ yyDollar = yyS[yypt-0 : yypt+1]
+//line sql.y:1524
{
- yyVAL.str = string(yyDollar[1].colIdent.String())
+ yyVAL.str = ""
}
case 243:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1508
+//line sql.y:1528
{
- yyVAL.indexColumns = []*IndexColumn{yyDollar[1].indexColumn}
+ yyVAL.str = string(yyDollar[1].colIdent.String())
}
case 244:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1512
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL []*IndexColumn
+//line sql.y:1534
{
- yyVAL.indexColumns = append(yyVAL.indexColumns, yyDollar[3].indexColumn)
+ yyLOCAL = []*IndexColumn{yyDollar[1].indexColumnUnion()}
}
+ yyVAL.union = yyLOCAL
case 245:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1518
+//line sql.y:1538
{
- yyVAL.indexColumn = &IndexColumn{Column: yyDollar[1].colIdent, Length: yyDollar[2].literal, Direction: yyDollar[3].orderDirection}
+ yySLICE := (*[]*IndexColumn)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[3].indexColumnUnion())
}
case 246:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1524
+ var yyLOCAL *IndexColumn
+//line sql.y:1544
{
- yyVAL.constraintDefinition = &ConstraintDefinition{Name: string(yyDollar[2].colIdent.String()), Details: yyDollar[3].constraintInfo}
+ yyLOCAL = &IndexColumn{Column: yyDollar[1].colIdent, Length: yyDollar[2].literalUnion(), Direction: yyDollar[3].orderDirectionUnion()}
}
+ yyVAL.union = yyLOCAL
case 247:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1528
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL *ConstraintDefinition
+//line sql.y:1550
{
- yyVAL.constraintDefinition = &ConstraintDefinition{Details: yyDollar[1].constraintInfo}
+ yyLOCAL = &ConstraintDefinition{Name: yyDollar[2].colIdent, Details: yyDollar[3].constraintInfoUnion()}
}
+ yyVAL.union = yyLOCAL
case 248:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1534
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL *ConstraintDefinition
+//line sql.y:1554
{
- yyVAL.constraintDefinition = &ConstraintDefinition{Name: string(yyDollar[2].colIdent.String()), Details: yyDollar[3].constraintInfo}
+ yyLOCAL = &ConstraintDefinition{Details: yyDollar[1].constraintInfoUnion()}
}
+ yyVAL.union = yyLOCAL
case 249:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1538
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL *ConstraintDefinition
+//line sql.y:1560
{
- yyVAL.constraintDefinition = &ConstraintDefinition{Details: yyDollar[1].constraintInfo}
+ yyLOCAL = &ConstraintDefinition{Name: yyDollar[2].colIdent, Details: yyDollar[3].constraintInfoUnion()}
}
+ yyVAL.union = yyLOCAL
case 250:
- yyDollar = yyS[yypt-10 : yypt+1]
-//line sql.y:1544
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL *ConstraintDefinition
+//line sql.y:1564
{
- yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns}
+ yyLOCAL = &ConstraintDefinition{Details: yyDollar[1].constraintInfoUnion()}
}
+ yyVAL.union = yyLOCAL
case 251:
- yyDollar = yyS[yypt-11 : yypt+1]
-//line sql.y:1548
+ yyDollar = yyS[yypt-10 : yypt+1]
+ var yyLOCAL ConstraintInfo
+//line sql.y:1570
{
- yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnDelete: yyDollar[11].ReferenceAction}
+ yyLOCAL = &ForeignKeyDefinition{Source: yyDollar[4].columnsUnion(), ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columnsUnion()}
}
+ yyVAL.union = yyLOCAL
case 252:
yyDollar = yyS[yypt-11 : yypt+1]
-//line sql.y:1552
+ var yyLOCAL ConstraintInfo
+//line sql.y:1574
{
- yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnUpdate: yyDollar[11].ReferenceAction}
+ yyLOCAL = &ForeignKeyDefinition{Source: yyDollar[4].columnsUnion(), ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columnsUnion(), OnDelete: yyDollar[11].ReferenceActionUnion()}
}
+ yyVAL.union = yyLOCAL
case 253:
- yyDollar = yyS[yypt-12 : yypt+1]
-//line sql.y:1556
+ yyDollar = yyS[yypt-11 : yypt+1]
+ var yyLOCAL ConstraintInfo
+//line sql.y:1578
{
- yyVAL.constraintInfo = &ForeignKeyDefinition{Source: yyDollar[4].columns, ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columns, OnDelete: yyDollar[11].ReferenceAction, OnUpdate: yyDollar[12].ReferenceAction}
+ yyLOCAL = &ForeignKeyDefinition{Source: yyDollar[4].columnsUnion(), ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columnsUnion(), OnUpdate: yyDollar[11].ReferenceActionUnion()}
}
+ yyVAL.union = yyLOCAL
case 254:
- yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:1562
+ yyDollar = yyS[yypt-12 : yypt+1]
+ var yyLOCAL ConstraintInfo
+//line sql.y:1582
{
- yyVAL.constraintInfo = &CheckConstraintDefinition{Expr: yyDollar[3].expr, Enforced: yyDollar[5].boolean}
+ yyLOCAL = &ForeignKeyDefinition{Source: yyDollar[4].columnsUnion(), ReferencedTable: yyDollar[7].tableName, ReferencedColumns: yyDollar[9].columnsUnion(), OnDelete: yyDollar[11].ReferenceActionUnion(), OnUpdate: yyDollar[12].ReferenceActionUnion()}
}
+ yyVAL.union = yyLOCAL
case 255:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1568
+ yyDollar = yyS[yypt-5 : yypt+1]
+ var yyLOCAL ConstraintInfo
+//line sql.y:1588
{
- yyVAL.ReferenceAction = yyDollar[3].ReferenceAction
+ yyLOCAL = &CheckConstraintDefinition{Expr: yyDollar[3].exprUnion(), Enforced: yyDollar[5].booleanUnion()}
}
+ yyVAL.union = yyLOCAL
case 256:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1574
+ var yyLOCAL ReferenceAction
+//line sql.y:1594
{
- yyVAL.ReferenceAction = yyDollar[3].ReferenceAction
+ yyLOCAL = yyDollar[3].ReferenceActionUnion()
}
+ yyVAL.union = yyLOCAL
case 257:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1580
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL ReferenceAction
+//line sql.y:1600
{
- yyVAL.ReferenceAction = Restrict
+ yyLOCAL = yyDollar[3].ReferenceActionUnion()
}
+ yyVAL.union = yyLOCAL
case 258:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1584
+ var yyLOCAL ReferenceAction
+//line sql.y:1606
{
- yyVAL.ReferenceAction = Cascade
+ yyLOCAL = Restrict
}
+ yyVAL.union = yyLOCAL
case 259:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1588
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL ReferenceAction
+//line sql.y:1610
{
- yyVAL.ReferenceAction = NoAction
+ yyLOCAL = Cascade
}
+ yyVAL.union = yyLOCAL
case 260:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1592
+ var yyLOCAL ReferenceAction
+//line sql.y:1614
{
- yyVAL.ReferenceAction = SetDefault
+ yyLOCAL = NoAction
}
+ yyVAL.union = yyLOCAL
case 261:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1596
+ var yyLOCAL ReferenceAction
+//line sql.y:1618
{
- yyVAL.ReferenceAction = SetNull
+ yyLOCAL = SetDefault
}
+ yyVAL.union = yyLOCAL
case 262:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:1601
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL ReferenceAction
+//line sql.y:1622
{
- yyVAL.str = ""
+ yyLOCAL = SetNull
}
+ yyVAL.union = yyLOCAL
case 263:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1605
+ yyDollar = yyS[yypt-0 : yypt+1]
+//line sql.y:1627
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyVAL.str = ""
}
case 264:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1609
+//line sql.y:1631
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyVAL.str = string(yyDollar[1].str)
}
case 265:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:1614
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:1635
{
- yyVAL.boolean = true
+ yyVAL.str = string(yyDollar[1].str)
}
case 266:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1618
+ yyDollar = yyS[yypt-0 : yypt+1]
+ var yyLOCAL bool
+//line sql.y:1640
{
- yyVAL.boolean = true
+ yyLOCAL = true
}
+ yyVAL.union = yyLOCAL
case 267:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1622
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL bool
+//line sql.y:1644
{
- yyVAL.boolean = false
+ yyLOCAL = true
}
+ yyVAL.union = yyLOCAL
case 268:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:1627
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL bool
+//line sql.y:1648
{
- yyVAL.tableOptions = nil
+ yyLOCAL = false
}
+ yyVAL.union = yyLOCAL
case 269:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1631
+ yyDollar = yyS[yypt-0 : yypt+1]
+ var yyLOCAL TableOptions
+//line sql.y:1653
{
- yyVAL.tableOptions = yyDollar[1].tableOptions
+ yyLOCAL = nil
}
+ yyVAL.union = yyLOCAL
case 270:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1637
+ var yyLOCAL TableOptions
+//line sql.y:1657
{
- yyVAL.tableOptions = TableOptions{yyDollar[1].tableOption}
+ yyLOCAL = yyDollar[1].tableOptionsUnion()
}
+ yyVAL.union = yyLOCAL
case 271:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1641
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL TableOptions
+//line sql.y:1663
{
- yyVAL.tableOptions = append(yyDollar[1].tableOptions, yyDollar[3].tableOption)
+ yyLOCAL = TableOptions{yyDollar[1].tableOptionUnion()}
}
+ yyVAL.union = yyLOCAL
case 272:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1645
+ yyDollar = yyS[yypt-3 : yypt+1]
+//line sql.y:1667
{
- yyVAL.tableOptions = append(yyDollar[1].tableOptions, yyDollar[2].tableOption)
+ yySLICE := (*TableOptions)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[3].tableOptionUnion())
}
case 273:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1651
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:1671
{
- yyVAL.tableOptions = TableOptions{yyDollar[1].tableOption}
+ yySLICE := (*TableOptions)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[2].tableOptionUnion())
}
case 274:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1655
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL TableOptions
+//line sql.y:1677
{
- yyVAL.tableOptions = append(yyDollar[1].tableOptions, yyDollar[2].tableOption)
+ yyLOCAL = TableOptions{yyDollar[1].tableOptionUnion()}
}
+ yyVAL.union = yyLOCAL
case 275:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1661
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:1681
{
- yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)}
+ yySLICE := (*TableOptions)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[2].tableOptionUnion())
}
case 276:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1665
+ var yyLOCAL *TableOption
+//line sql.y:1687
{
- yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)}
+ yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)}
}
+ yyVAL.union = yyLOCAL
case 277:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:1669
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL *TableOption
+//line sql.y:1691
{
- yyVAL.tableOption = &TableOption{Name: (string(yyDollar[2].bytes)), String: yyDollar[4].str}
+ yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)}
}
+ yyVAL.union = yyLOCAL
case 278:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:1673
+ var yyLOCAL *TableOption
+//line sql.y:1695
{
- yyVAL.tableOption = &TableOption{Name: string(yyDollar[2].bytes), String: yyDollar[4].str}
+ yyLOCAL = &TableOption{Name: (string(yyDollar[2].str)), String: yyDollar[4].str}
}
+ yyVAL.union = yyLOCAL
case 279:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1677
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL *TableOption
+//line sql.y:1699
{
- yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)}
+ yyLOCAL = &TableOption{Name: string(yyDollar[2].str), String: yyDollar[4].str}
}
+ yyVAL.union = yyLOCAL
case 280:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1681
+ var yyLOCAL *TableOption
+//line sql.y:1703
{
- yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewStrLiteral(yyDollar[3].bytes)}
+ yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)}
}
+ yyVAL.union = yyLOCAL
case 281:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1685
+ var yyLOCAL *TableOption
+//line sql.y:1707
{
- yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewStrLiteral(yyDollar[3].bytes)}
+ yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)}
}
+ yyVAL.union = yyLOCAL
case 282:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1689
+ var yyLOCAL *TableOption
+//line sql.y:1711
{
- yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewStrLiteral(yyDollar[3].bytes)}
+ yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)}
}
+ yyVAL.union = yyLOCAL
case 283:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:1693
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL *TableOption
+//line sql.y:1715
{
- yyVAL.tableOption = &TableOption{Name: (string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes)), Value: NewStrLiteral(yyDollar[4].bytes)}
+ yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)}
}
+ yyVAL.union = yyLOCAL
case 284:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:1697
+ var yyLOCAL *TableOption
+//line sql.y:1719
{
- yyVAL.tableOption = &TableOption{Name: (string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes)), Value: NewStrLiteral(yyDollar[4].bytes)}
+ yyLOCAL = &TableOption{Name: (string(yyDollar[1].str) + " " + string(yyDollar[2].str)), Value: NewStrLiteral(yyDollar[4].str)}
}
+ yyVAL.union = yyLOCAL
case 285:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1701
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL *TableOption
+//line sql.y:1723
{
- yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)}
+ yyLOCAL = &TableOption{Name: (string(yyDollar[1].str) + " " + string(yyDollar[2].str)), Value: NewStrLiteral(yyDollar[4].str)}
}
+ yyVAL.union = yyLOCAL
case 286:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1705
+ var yyLOCAL *TableOption
+//line sql.y:1727
{
- yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewStrLiteral(yyDollar[3].bytes)}
+ yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)}
}
+ yyVAL.union = yyLOCAL
case 287:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1709
+ var yyLOCAL *TableOption
+//line sql.y:1731
{
- yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), String: yyDollar[3].colIdent.String()}
+ yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)}
}
+ yyVAL.union = yyLOCAL
case 288:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1713
+ var yyLOCAL *TableOption
+//line sql.y:1735
{
- yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewStrLiteral(yyDollar[3].bytes)}
+ yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: yyDollar[3].colIdent.String()}
}
+ yyVAL.union = yyLOCAL
case 289:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1717
+ var yyLOCAL *TableOption
+//line sql.y:1739
{
- yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)}
+ yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)}
}
+ yyVAL.union = yyLOCAL
case 290:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1721
+ var yyLOCAL *TableOption
+//line sql.y:1743
{
- yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)}
+ yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)}
}
+ yyVAL.union = yyLOCAL
case 291:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1725
+ var yyLOCAL *TableOption
+//line sql.y:1747
{
- yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)}
+ yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)}
}
+ yyVAL.union = yyLOCAL
case 292:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1729
+ var yyLOCAL *TableOption
+//line sql.y:1751
{
- yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)}
+ yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)}
}
+ yyVAL.union = yyLOCAL
case 293:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1733
+ var yyLOCAL *TableOption
+//line sql.y:1755
{
- yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)}
+ yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)}
}
+ yyVAL.union = yyLOCAL
case 294:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1737
+ var yyLOCAL *TableOption
+//line sql.y:1759
{
- yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)}
+ yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)}
}
+ yyVAL.union = yyLOCAL
case 295:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1741
+ var yyLOCAL *TableOption
+//line sql.y:1763
{
- yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewStrLiteral(yyDollar[3].bytes)}
+ yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)}
}
+ yyVAL.union = yyLOCAL
case 296:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1745
+ var yyLOCAL *TableOption
+//line sql.y:1767
{
- yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)}
+ yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewStrLiteral(yyDollar[3].str)}
}
+ yyVAL.union = yyLOCAL
case 297:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1749
+ var yyLOCAL *TableOption
+//line sql.y:1771
{
- yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)}
+ yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)}
}
+ yyVAL.union = yyLOCAL
case 298:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1753
+ var yyLOCAL *TableOption
+//line sql.y:1775
{
- yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)}
+ yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)}
}
+ yyVAL.union = yyLOCAL
case 299:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1757
+ var yyLOCAL *TableOption
+//line sql.y:1779
{
- yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)}
+ yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)}
}
+ yyVAL.union = yyLOCAL
case 300:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1761
+ var yyLOCAL *TableOption
+//line sql.y:1783
{
- yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)}
+ yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)}
}
+ yyVAL.union = yyLOCAL
case 301:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1765
+ var yyLOCAL *TableOption
+//line sql.y:1787
{
- yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Value: NewIntLiteral(yyDollar[3].bytes)}
+ yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: string(yyDollar[3].str)}
}
+ yyVAL.union = yyLOCAL
case 302:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:1769
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL *TableOption
+//line sql.y:1791
{
- yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), String: (yyDollar[3].colIdent.String() + yyDollar[4].str)}
+ yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Value: NewIntLiteral(yyDollar[3].str)}
}
+ yyVAL.union = yyLOCAL
case 303:
- yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:1773
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL *TableOption
+//line sql.y:1795
{
- yyVAL.tableOption = &TableOption{Name: string(yyDollar[1].bytes), Tables: yyDollar[4].tableNames}
+ yyLOCAL = &TableOption{Name: string(yyDollar[1].str), String: (yyDollar[3].colIdent.String() + yyDollar[4].str)}
}
+ yyVAL.union = yyLOCAL
case 304:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:1778
+ yyDollar = yyS[yypt-5 : yypt+1]
+ var yyLOCAL *TableOption
+//line sql.y:1799
{
- yyVAL.str = ""
+ yyLOCAL = &TableOption{Name: string(yyDollar[1].str), Tables: yyDollar[4].tableNamesUnion()}
}
+ yyVAL.union = yyLOCAL
case 305:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1782
+ yyDollar = yyS[yypt-0 : yypt+1]
+//line sql.y:1804
{
- yyVAL.str = " " + string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes)
+ yyVAL.str = ""
}
case 306:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1786
+//line sql.y:1808
{
- yyVAL.str = " " + string(yyDollar[1].bytes) + " " + string(yyDollar[2].bytes)
+ yyVAL.str = " " + string(yyDollar[1].str) + " " + string(yyDollar[2].str)
}
- case 316:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1805
+ case 307:
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:1812
{
- yyVAL.str = yyDollar[1].colIdent.String()
+ yyVAL.str = " " + string(yyDollar[1].str) + " " + string(yyDollar[2].str)
}
case 317:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1809
+//line sql.y:1831
{
- yyVAL.str = "'" + string(yyDollar[1].bytes) + "'"
+ yyVAL.str = yyDollar[1].colIdent.String()
}
case 318:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1813
+//line sql.y:1835
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyVAL.str = encodeSQLString(yyDollar[1].str)
}
case 319:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:1818
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:1839
{
- yyVAL.bytes = []byte("")
+ yyVAL.str = string(yyDollar[1].str)
}
- case 321:
+ case 320:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:1824
+//line sql.y:1844
{
- yyVAL.colName = nil
+ yyVAL.str = ""
}
case 322:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1828
+ yyDollar = yyS[yypt-0 : yypt+1]
+ var yyLOCAL *ColName
+//line sql.y:1850
{
- yyVAL.colName = yyDollar[2].colName
+ yyLOCAL = nil
}
+ yyVAL.union = yyLOCAL
case 323:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:1833
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL *ColName
+//line sql.y:1854
{
- yyVAL.colName = nil
+ yyLOCAL = yyDollar[2].colNameUnion()
}
+ yyVAL.union = yyLOCAL
case 324:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1837
+ yyDollar = yyS[yypt-0 : yypt+1]
+ var yyLOCAL *ColName
+//line sql.y:1859
{
- yyVAL.colName = yyDollar[2].colName
+ yyLOCAL = nil
}
+ yyVAL.union = yyLOCAL
case 325:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:1842
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL *ColName
+//line sql.y:1863
{
- yyVAL.alterOptions = nil
+ yyLOCAL = yyDollar[2].colNameUnion()
}
+ yyVAL.union = yyLOCAL
case 326:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1846
+ yyDollar = yyS[yypt-0 : yypt+1]
+ var yyLOCAL []AlterOption
+//line sql.y:1868
{
- yyVAL.alterOptions = yyDollar[1].alterOptions
+ yyLOCAL = nil
}
+ yyVAL.union = yyLOCAL
case 327:
- yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:1850
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL []AlterOption
+//line sql.y:1872
{
- yyVAL.alterOptions = append(yyDollar[1].alterOptions, &OrderByOption{Cols: yyDollar[5].columns})
+ yyLOCAL = yyDollar[1].alterOptionsUnion()
}
+ yyVAL.union = yyLOCAL
case 328:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1854
+ yyDollar = yyS[yypt-5 : yypt+1]
+//line sql.y:1876
{
- yyVAL.alterOptions = yyDollar[1].alterOptions
+ yySLICE := (*[]AlterOption)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, &OrderByOption{Cols: yyDollar[5].columnsUnion()})
}
case 329:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1858
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL []AlterOption
+//line sql.y:1880
{
- yyVAL.alterOptions = append(yyDollar[1].alterOptions, yyDollar[3].alterOptions...)
+ yyLOCAL = yyDollar[1].alterOptionsUnion()
}
+ yyVAL.union = yyLOCAL
case 330:
- yyDollar = yyS[yypt-7 : yypt+1]
-//line sql.y:1862
+ yyDollar = yyS[yypt-3 : yypt+1]
+//line sql.y:1884
{
- yyVAL.alterOptions = append(append(yyDollar[1].alterOptions, yyDollar[3].alterOptions...), &OrderByOption{Cols: yyDollar[7].columns})
+ yySLICE := (*[]AlterOption)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[3].alterOptionsUnion()...)
}
case 331:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1868
+ yyDollar = yyS[yypt-7 : yypt+1]
+ var yyLOCAL []AlterOption
+//line sql.y:1888
{
- yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption}
+ yyLOCAL = append(append(yyDollar[1].alterOptionsUnion(), yyDollar[3].alterOptionsUnion()...), &OrderByOption{Cols: yyDollar[7].columnsUnion()})
}
+ yyVAL.union = yyLOCAL
case 332:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1872
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL []AlterOption
+//line sql.y:1894
{
- yyVAL.alterOptions = append(yyDollar[1].alterOptions, yyDollar[3].alterOption)
+ yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion()}
}
+ yyVAL.union = yyLOCAL
case 333:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1876
+//line sql.y:1898
{
- yyVAL.alterOptions = append(yyDollar[1].alterOptions, yyDollar[3].alterOption)
+ yySLICE := (*[]AlterOption)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[3].alterOptionUnion())
}
case 334:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1882
+ yyDollar = yyS[yypt-3 : yypt+1]
+//line sql.y:1902
{
- yyVAL.alterOption = yyDollar[1].tableOptions
+ yySLICE := (*[]AlterOption)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[3].alterOptionUnion())
}
case 335:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1886
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL AlterOption
+//line sql.y:1908
{
- yyVAL.alterOption = &AddConstraintDefinition{ConstraintDefinition: yyDollar[2].constraintDefinition}
+ yyLOCAL = yyDollar[1].tableOptionsUnion()
}
+ yyVAL.union = yyLOCAL
case 336:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1890
+ var yyLOCAL AlterOption
+//line sql.y:1912
{
- yyVAL.alterOption = &AddConstraintDefinition{ConstraintDefinition: yyDollar[2].constraintDefinition}
+ yyLOCAL = &AddConstraintDefinition{ConstraintDefinition: yyDollar[2].constraintDefinitionUnion()}
}
+ yyVAL.union = yyLOCAL
case 337:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1894
+ var yyLOCAL AlterOption
+//line sql.y:1916
{
- yyVAL.alterOption = &AddIndexDefinition{IndexDefinition: yyDollar[2].indexDefinition}
+ yyLOCAL = &AddConstraintDefinition{ConstraintDefinition: yyDollar[2].constraintDefinitionUnion()}
}
+ yyVAL.union = yyLOCAL
case 338:
- yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:1898
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL AlterOption
+//line sql.y:1920
{
- yyVAL.alterOption = &AddColumns{Columns: yyDollar[4].columnDefinitions}
+ yyLOCAL = &AddIndexDefinition{IndexDefinition: yyDollar[2].indexDefinitionUnion()}
}
+ yyVAL.union = yyLOCAL
case 339:
yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:1902
+ var yyLOCAL AlterOption
+//line sql.y:1924
{
- yyVAL.alterOption = &AddColumns{Columns: []*ColumnDefinition{yyDollar[3].columnDefinition}, First: yyDollar[4].colName, After: yyDollar[5].colName}
+ yyLOCAL = &AddColumns{Columns: yyDollar[4].columnDefinitionsUnion()}
}
+ yyVAL.union = yyLOCAL
case 340:
yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:1906
+ var yyLOCAL AlterOption
+//line sql.y:1928
{
- yyVAL.alterOption = &AlterColumn{Column: yyDollar[3].colName, DropDefault: true}
+ yyLOCAL = &AddColumns{Columns: []*ColumnDefinition{yyDollar[3].columnDefinitionUnion()}, First: yyDollar[4].colNameUnion(), After: yyDollar[5].colNameUnion()}
}
+ yyVAL.union = yyLOCAL
case 341:
- yyDollar = yyS[yypt-6 : yypt+1]
-//line sql.y:1910
+ yyDollar = yyS[yypt-5 : yypt+1]
+ var yyLOCAL AlterOption
+//line sql.y:1932
{
- yyVAL.alterOption = &AlterColumn{Column: yyDollar[3].colName, DropDefault: false, DefaultVal: yyDollar[6].expr}
+ yyLOCAL = &AlterColumn{Column: yyDollar[3].colNameUnion(), DropDefault: true}
}
+ yyVAL.union = yyLOCAL
case 342:
yyDollar = yyS[yypt-6 : yypt+1]
-//line sql.y:1914
+ var yyLOCAL AlterOption
+//line sql.y:1936
{
- yyVAL.alterOption = &ChangeColumn{OldColumn: yyDollar[3].colName, NewColDefinition: yyDollar[4].columnDefinition, First: yyDollar[5].colName, After: yyDollar[6].colName}
+ yyLOCAL = &AlterColumn{Column: yyDollar[3].colNameUnion(), DropDefault: false, DefaultVal: yyDollar[6].exprUnion()}
}
+ yyVAL.union = yyLOCAL
case 343:
- yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:1918
+ yyDollar = yyS[yypt-6 : yypt+1]
+ var yyLOCAL AlterOption
+//line sql.y:1940
{
- yyVAL.alterOption = &ModifyColumn{NewColDefinition: yyDollar[3].columnDefinition, First: yyDollar[4].colName, After: yyDollar[5].colName}
+ yyLOCAL = &ChangeColumn{OldColumn: yyDollar[3].colNameUnion(), NewColDefinition: yyDollar[4].columnDefinitionUnion(), First: yyDollar[5].colNameUnion(), After: yyDollar[6].colNameUnion()}
}
+ yyVAL.union = yyLOCAL
case 344:
yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:1922
+ var yyLOCAL AlterOption
+//line sql.y:1944
{
- yyVAL.alterOption = &AlterCharset{CharacterSet: yyDollar[4].str, Collate: yyDollar[5].str}
+ yyLOCAL = &ModifyColumn{NewColDefinition: yyDollar[3].columnDefinitionUnion(), First: yyDollar[4].colNameUnion(), After: yyDollar[5].colNameUnion()}
}
+ yyVAL.union = yyLOCAL
case 345:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1926
+ yyDollar = yyS[yypt-5 : yypt+1]
+ var yyLOCAL AlterOption
+//line sql.y:1948
{
- yyVAL.alterOption = &KeyState{Enable: false}
+ yyLOCAL = &AlterCharset{CharacterSet: yyDollar[4].str, Collate: yyDollar[5].str}
}
+ yyVAL.union = yyLOCAL
case 346:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1930
+ var yyLOCAL AlterOption
+//line sql.y:1952
{
- yyVAL.alterOption = &KeyState{Enable: true}
+ yyLOCAL = &KeyState{Enable: false}
}
+ yyVAL.union = yyLOCAL
case 347:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1934
+ var yyLOCAL AlterOption
+//line sql.y:1956
{
- yyVAL.alterOption = &TablespaceOperation{Import: false}
+ yyLOCAL = &KeyState{Enable: true}
}
+ yyVAL.union = yyLOCAL
case 348:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:1938
+ var yyLOCAL AlterOption
+//line sql.y:1960
{
- yyVAL.alterOption = &TablespaceOperation{Import: true}
+ yyLOCAL = &TablespaceOperation{Import: false}
}
+ yyVAL.union = yyLOCAL
case 349:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1942
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL AlterOption
+//line sql.y:1964
{
- yyVAL.alterOption = &DropColumn{Name: yyDollar[3].colName}
+ yyLOCAL = &TablespaceOperation{Import: true}
}
+ yyVAL.union = yyLOCAL
case 350:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1946
+ var yyLOCAL AlterOption
+//line sql.y:1968
{
- yyVAL.alterOption = &DropKey{Type: NormalKeyType, Name: yyDollar[3].colIdent.String()}
+ yyLOCAL = &DropColumn{Name: yyDollar[3].colNameUnion()}
}
+ yyVAL.union = yyLOCAL
case 351:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1950
+ var yyLOCAL AlterOption
+//line sql.y:1972
{
- yyVAL.alterOption = &DropKey{Type: PrimaryKeyType}
+ yyLOCAL = &DropKey{Type: NormalKeyType, Name: yyDollar[3].colIdent}
}
+ yyVAL.union = yyLOCAL
case 352:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:1954
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL AlterOption
+//line sql.y:1976
{
- yyVAL.alterOption = &DropKey{Type: ForeignKeyType, Name: yyDollar[4].colIdent.String()}
+ yyLOCAL = &DropKey{Type: PrimaryKeyType}
}
+ yyVAL.union = yyLOCAL
case 353:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1958
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL AlterOption
+//line sql.y:1980
{
- yyVAL.alterOption = &Force{}
+ yyLOCAL = &DropKey{Type: ForeignKeyType, Name: yyDollar[4].colIdent}
}
+ yyVAL.union = yyLOCAL
case 354:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1962
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL AlterOption
+//line sql.y:1984
{
- yyVAL.alterOption = &RenameTable{Table: yyDollar[3].tableName}
+ yyLOCAL = &Force{}
}
+ yyVAL.union = yyLOCAL
case 355:
- yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:1966
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL AlterOption
+//line sql.y:1988
{
- yyVAL.alterOption = &RenameIndex{OldName: yyDollar[3].colIdent.String(), NewName: yyDollar[5].colIdent.String()}
+ yyLOCAL = &RenameTableName{Table: yyDollar[3].tableName}
}
+ yyVAL.union = yyLOCAL
case 356:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:1972
+ yyDollar = yyS[yypt-5 : yypt+1]
+ var yyLOCAL AlterOption
+//line sql.y:1992
{
- yyVAL.alterOptions = []AlterOption{yyDollar[1].alterOption}
+ yyLOCAL = &RenameIndex{OldName: yyDollar[3].colIdent, NewName: yyDollar[5].colIdent}
}
+ yyVAL.union = yyLOCAL
case 357:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1976
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL []AlterOption
+//line sql.y:1998
{
- yyVAL.alterOptions = append(yyDollar[1].alterOptions, yyDollar[3].alterOption)
+ yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion()}
}
+ yyVAL.union = yyLOCAL
case 358:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1982
+//line sql.y:2002
{
- yyVAL.alterOption = AlgorithmValue(string(yyDollar[3].bytes))
+ yySLICE := (*[]AlterOption)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[3].alterOptionUnion())
}
case 359:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1986
+ var yyLOCAL AlterOption
+//line sql.y:2008
{
- yyVAL.alterOption = AlgorithmValue(string(yyDollar[3].bytes))
+ yyLOCAL = AlgorithmValue(string(yyDollar[3].str))
}
+ yyVAL.union = yyLOCAL
case 360:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1990
+ var yyLOCAL AlterOption
+//line sql.y:2012
{
- yyVAL.alterOption = AlgorithmValue(string(yyDollar[3].bytes))
+ yyLOCAL = AlgorithmValue(string(yyDollar[3].str))
}
+ yyVAL.union = yyLOCAL
case 361:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1994
+ var yyLOCAL AlterOption
+//line sql.y:2016
{
- yyVAL.alterOption = &LockOption{Type: DefaultType}
+ yyLOCAL = AlgorithmValue(string(yyDollar[3].str))
}
+ yyVAL.union = yyLOCAL
case 362:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:1998
+ var yyLOCAL AlterOption
+//line sql.y:2020
{
- yyVAL.alterOption = &LockOption{Type: NoneType}
+ yyLOCAL = &LockOption{Type: DefaultType}
}
+ yyVAL.union = yyLOCAL
case 363:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2002
+ var yyLOCAL AlterOption
+//line sql.y:2024
{
- yyVAL.alterOption = &LockOption{Type: SharedType}
+ yyLOCAL = &LockOption{Type: NoneType}
}
+ yyVAL.union = yyLOCAL
case 364:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2006
+ var yyLOCAL AlterOption
+//line sql.y:2028
{
- yyVAL.alterOption = &LockOption{Type: ExclusiveType}
+ yyLOCAL = &LockOption{Type: SharedType}
}
+ yyVAL.union = yyLOCAL
case 365:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2010
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL AlterOption
+//line sql.y:2032
{
- yyVAL.alterOption = &Validation{With: true}
+ yyLOCAL = &LockOption{Type: ExclusiveType}
}
+ yyVAL.union = yyLOCAL
case 366:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2014
+ var yyLOCAL AlterOption
+//line sql.y:2036
{
- yyVAL.alterOption = &Validation{With: false}
+ yyLOCAL = &Validation{With: true}
}
+ yyVAL.union = yyLOCAL
case 367:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2020
+ var yyLOCAL AlterOption
+//line sql.y:2040
{
- yyDollar[1].alterTable.FullyParsed = true
- yyDollar[1].alterTable.AlterOptions = yyDollar[2].alterOptions
- yyVAL.statement = yyDollar[1].alterTable
+ yyLOCAL = &Validation{With: false}
}
+ yyVAL.union = yyLOCAL
case 368:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:2026
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2046
{
- yyDollar[1].alterTable.FullyParsed = true
- yyDollar[1].alterTable.AlterOptions = yyDollar[2].alterOptions
- yyDollar[1].alterTable.PartitionSpec = &PartitionSpec{Action: RemoveAction}
- yyVAL.statement = yyDollar[1].alterTable
+ yyDollar[1].alterTableUnion().FullyParsed = true
+ yyDollar[1].alterTableUnion().AlterOptions = yyDollar[2].alterOptionsUnion()
+ yyLOCAL = yyDollar[1].alterTableUnion()
}
+ yyVAL.union = yyLOCAL
case 369:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:2033
+ var yyLOCAL Statement
+//line sql.y:2052
{
- yyDollar[1].alterTable.FullyParsed = true
- yyDollar[1].alterTable.AlterOptions = yyDollar[2].alterOptions
- yyDollar[1].alterTable.PartitionSpec = yyDollar[4].partSpec
- yyVAL.statement = yyDollar[1].alterTable
+ yyDollar[1].alterTableUnion().FullyParsed = true
+ yyDollar[1].alterTableUnion().AlterOptions = yyDollar[2].alterOptionsUnion()
+ yyDollar[1].alterTableUnion().PartitionSpec = &PartitionSpec{Action: RemoveAction}
+ yyLOCAL = yyDollar[1].alterTableUnion()
}
+ yyVAL.union = yyLOCAL
case 370:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2040
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2059
{
- yyDollar[1].alterTable.FullyParsed = true
- yyDollar[1].alterTable.PartitionSpec = yyDollar[2].partSpec
- yyVAL.statement = yyDollar[1].alterTable
+ yyDollar[1].alterTableUnion().FullyParsed = true
+ yyDollar[1].alterTableUnion().AlterOptions = yyDollar[2].alterOptionsUnion()
+ yyDollar[1].alterTableUnion().PartitionSpec = yyDollar[4].partSpecUnion()
+ yyLOCAL = yyDollar[1].alterTableUnion()
}
+ yyVAL.union = yyLOCAL
case 371:
- yyDollar = yyS[yypt-10 : yypt+1]
-//line sql.y:2046
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2066
{
- yyVAL.statement = &AlterView{ViewName: yyDollar[6].tableName.ToViewName(), Algorithm: yyDollar[2].str, Definer: yyDollar[3].str, Security: yyDollar[4].str, Columns: yyDollar[7].columns, Select: yyDollar[9].selStmt, CheckOption: yyDollar[10].str}
+ yyDollar[1].alterTableUnion().FullyParsed = true
+ yyDollar[1].alterTableUnion().PartitionSpec = yyDollar[2].partSpecUnion()
+ yyLOCAL = yyDollar[1].alterTableUnion()
}
+ yyVAL.union = yyLOCAL
case 372:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2050
+ yyDollar = yyS[yypt-10 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2072
{
- yyDollar[1].alterDatabase.FullyParsed = true
- yyDollar[1].alterDatabase.DBName = yyDollar[2].colIdent.String()
- yyDollar[1].alterDatabase.AlterOptions = yyDollar[3].collateAndCharsets
- yyVAL.statement = yyDollar[1].alterDatabase
+ yyLOCAL = &AlterView{ViewName: yyDollar[6].tableName.ToViewName(), Algorithm: yyDollar[2].str, Definer: yyDollar[3].str, Security: yyDollar[4].str, Columns: yyDollar[7].columnsUnion(), Select: yyDollar[9].selStmtUnion(), CheckOption: yyDollar[10].str}
}
+ yyVAL.union = yyLOCAL
case 373:
- yyDollar = yyS[yypt-6 : yypt+1]
-//line sql.y:2057
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2076
{
- yyDollar[1].alterDatabase.FullyParsed = true
- yyDollar[1].alterDatabase.DBName = yyDollar[2].colIdent.String()
- yyDollar[1].alterDatabase.UpdateDataDirectory = true
- yyVAL.statement = yyDollar[1].alterDatabase
+ yyDollar[1].alterDatabaseUnion().FullyParsed = true
+ yyDollar[1].alterDatabaseUnion().DBName = yyDollar[2].tableIdent
+ yyDollar[1].alterDatabaseUnion().AlterOptions = yyDollar[3].collateAndCharsetsUnion()
+ yyLOCAL = yyDollar[1].alterDatabaseUnion()
}
+ yyVAL.union = yyLOCAL
case 374:
+ yyDollar = yyS[yypt-6 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2083
+ {
+ yyDollar[1].alterDatabaseUnion().FullyParsed = true
+ yyDollar[1].alterDatabaseUnion().DBName = yyDollar[2].tableIdent
+ yyDollar[1].alterDatabaseUnion().UpdateDataDirectory = true
+ yyLOCAL = yyDollar[1].alterDatabaseUnion()
+ }
+ yyVAL.union = yyLOCAL
+ case 375:
yyDollar = yyS[yypt-7 : yypt+1]
-//line sql.y:2064
+ var yyLOCAL Statement
+//line sql.y:2090
{
- yyVAL.statement = &AlterVschema{
+ yyLOCAL = &AlterVschema{
Action: CreateVindexDDLAction,
Table: yyDollar[5].tableName,
VindexSpec: &VindexSpec{
Name: NewColIdent(yyDollar[5].tableName.Name.String()),
Type: yyDollar[6].colIdent,
- Params: yyDollar[7].vindexParams,
+ Params: yyDollar[7].vindexParamsUnion(),
},
}
}
- case 375:
+ yyVAL.union = yyLOCAL
+ case 376:
yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:2076
+ var yyLOCAL Statement
+//line sql.y:2102
{
- yyVAL.statement = &AlterVschema{
+ yyLOCAL = &AlterVschema{
Action: DropVindexDDLAction,
Table: yyDollar[5].tableName,
VindexSpec: &VindexSpec{
@@ -7319,38 +8397,46 @@ yydefault:
},
}
}
- case 376:
+ yyVAL.union = yyLOCAL
+ case 377:
yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:2086
+ var yyLOCAL Statement
+//line sql.y:2112
{
- yyVAL.statement = &AlterVschema{Action: AddVschemaTableDDLAction, Table: yyDollar[5].tableName}
+ yyLOCAL = &AlterVschema{Action: AddVschemaTableDDLAction, Table: yyDollar[5].tableName}
}
- case 377:
+ yyVAL.union = yyLOCAL
+ case 378:
yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:2090
+ var yyLOCAL Statement
+//line sql.y:2116
{
- yyVAL.statement = &AlterVschema{Action: DropVschemaTableDDLAction, Table: yyDollar[5].tableName}
+ yyLOCAL = &AlterVschema{Action: DropVschemaTableDDLAction, Table: yyDollar[5].tableName}
}
- case 378:
+ yyVAL.union = yyLOCAL
+ case 379:
yyDollar = yyS[yypt-12 : yypt+1]
-//line sql.y:2094
+ var yyLOCAL Statement
+//line sql.y:2120
{
- yyVAL.statement = &AlterVschema{
+ yyLOCAL = &AlterVschema{
Action: AddColVindexDDLAction,
Table: yyDollar[4].tableName,
VindexSpec: &VindexSpec{
Name: yyDollar[7].colIdent,
Type: yyDollar[11].colIdent,
- Params: yyDollar[12].vindexParams,
+ Params: yyDollar[12].vindexParamsUnion(),
},
- VindexCols: yyDollar[9].columns,
+ VindexCols: yyDollar[9].columnsUnion(),
}
}
- case 379:
+ yyVAL.union = yyLOCAL
+ case 380:
yyDollar = yyS[yypt-7 : yypt+1]
-//line sql.y:2107
+ var yyLOCAL Statement
+//line sql.y:2133
{
- yyVAL.statement = &AlterVschema{
+ yyLOCAL = &AlterVschema{
Action: DropColVindexDDLAction,
Table: yyDollar[4].tableName,
VindexSpec: &VindexSpec{
@@ -7358,17 +8444,21 @@ yydefault:
},
}
}
- case 380:
+ yyVAL.union = yyLOCAL
+ case 381:
yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:2117
+ var yyLOCAL Statement
+//line sql.y:2143
{
- yyVAL.statement = &AlterVschema{Action: AddSequenceDDLAction, Table: yyDollar[5].tableName}
+ yyLOCAL = &AlterVschema{Action: AddSequenceDDLAction, Table: yyDollar[5].tableName}
}
- case 381:
+ yyVAL.union = yyLOCAL
+ case 382:
yyDollar = yyS[yypt-9 : yypt+1]
-//line sql.y:2121
+ var yyLOCAL Statement
+//line sql.y:2147
{
- yyVAL.statement = &AlterVschema{
+ yyLOCAL = &AlterVschema{
Action: AddAutoIncDDLAction,
Table: yyDollar[4].tableName,
AutoIncSpec: &AutoIncSpec{
@@ -7377,3253 +8467,4304 @@ yydefault:
},
}
}
- case 382:
- yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:2134
- {
- yyVAL.partSpec = &PartitionSpec{Action: AddAction, Definitions: []*PartitionDefinition{yyDollar[4].partDef}}
- }
+ yyVAL.union = yyLOCAL
case 383:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2138
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2158
{
- yyVAL.partSpec = &PartitionSpec{Action: DropAction, Names: yyDollar[3].partitions}
+ yyLOCAL = &AlterMigration{
+ Type: RetryMigrationType,
+ UUID: string(yyDollar[3].str),
+ }
}
+ yyVAL.union = yyLOCAL
case 384:
- yyDollar = yyS[yypt-7 : yypt+1]
-//line sql.y:2142
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2165
{
- yyVAL.partSpec = &PartitionSpec{Action: ReorganizeAction, Names: yyDollar[3].partitions, Definitions: yyDollar[6].partDefs}
+ yyLOCAL = &AlterMigration{
+ Type: CompleteMigrationType,
+ UUID: string(yyDollar[3].str),
+ }
}
+ yyVAL.union = yyLOCAL
case 385:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:2146
+ var yyLOCAL Statement
+//line sql.y:2172
{
- yyVAL.partSpec = &PartitionSpec{Action: DiscardAction, Names: yyDollar[3].partitions}
+ yyLOCAL = &AlterMigration{
+ Type: CancelMigrationType,
+ UUID: string(yyDollar[3].str),
+ }
}
+ yyVAL.union = yyLOCAL
case 386:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:2150
+ var yyLOCAL Statement
+//line sql.y:2179
{
- yyVAL.partSpec = &PartitionSpec{Action: DiscardAction, IsAll: true}
+ yyLOCAL = &AlterMigration{
+ Type: CancelAllMigrationType,
+ }
}
+ yyVAL.union = yyLOCAL
case 387:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:2154
+ yyDollar = yyS[yypt-5 : yypt+1]
+ var yyLOCAL *PartitionSpec
+//line sql.y:2187
{
- yyVAL.partSpec = &PartitionSpec{Action: ImportAction, Names: yyDollar[3].partitions}
+ yyLOCAL = &PartitionSpec{Action: AddAction, Definitions: []*PartitionDefinition{yyDollar[4].partDefUnion()}}
}
+ yyVAL.union = yyLOCAL
case 388:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:2158
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL *PartitionSpec
+//line sql.y:2191
{
- yyVAL.partSpec = &PartitionSpec{Action: ImportAction, IsAll: true}
+ yyLOCAL = &PartitionSpec{Action: DropAction, Names: yyDollar[3].partitionsUnion()}
}
+ yyVAL.union = yyLOCAL
case 389:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2162
+ yyDollar = yyS[yypt-7 : yypt+1]
+ var yyLOCAL *PartitionSpec
+//line sql.y:2195
{
- yyVAL.partSpec = &PartitionSpec{Action: TruncateAction, Names: yyDollar[3].partitions}
+ yyLOCAL = &PartitionSpec{Action: ReorganizeAction, Names: yyDollar[3].partitionsUnion(), Definitions: yyDollar[6].partDefsUnion()}
}
+ yyVAL.union = yyLOCAL
case 390:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2166
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL *PartitionSpec
+//line sql.y:2199
{
- yyVAL.partSpec = &PartitionSpec{Action: TruncateAction, IsAll: true}
+ yyLOCAL = &PartitionSpec{Action: DiscardAction, Names: yyDollar[3].partitionsUnion()}
}
+ yyVAL.union = yyLOCAL
case 391:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2170
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL *PartitionSpec
+//line sql.y:2203
{
- yyVAL.partSpec = &PartitionSpec{Action: CoalesceAction, Number: NewIntLiteral(yyDollar[3].bytes)}
+ yyLOCAL = &PartitionSpec{Action: DiscardAction, IsAll: true}
}
+ yyVAL.union = yyLOCAL
case 392:
- yyDollar = yyS[yypt-7 : yypt+1]
-//line sql.y:2174
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL *PartitionSpec
+//line sql.y:2207
{
- yyVAL.partSpec = &PartitionSpec{Action: ExchangeAction, Names: Partitions{yyDollar[3].colIdent}, TableName: yyDollar[6].tableName, WithoutValidation: yyDollar[7].boolean}
+ yyLOCAL = &PartitionSpec{Action: ImportAction, Names: yyDollar[3].partitionsUnion()}
}
+ yyVAL.union = yyLOCAL
case 393:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2178
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL *PartitionSpec
+//line sql.y:2211
{
- yyVAL.partSpec = &PartitionSpec{Action: AnalyzeAction, Names: yyDollar[3].partitions}
+ yyLOCAL = &PartitionSpec{Action: ImportAction, IsAll: true}
}
+ yyVAL.union = yyLOCAL
case 394:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2182
+ var yyLOCAL *PartitionSpec
+//line sql.y:2215
{
- yyVAL.partSpec = &PartitionSpec{Action: AnalyzeAction, IsAll: true}
+ yyLOCAL = &PartitionSpec{Action: TruncateAction, Names: yyDollar[3].partitionsUnion()}
}
+ yyVAL.union = yyLOCAL
case 395:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2186
+ var yyLOCAL *PartitionSpec
+//line sql.y:2219
{
- yyVAL.partSpec = &PartitionSpec{Action: CheckAction, Names: yyDollar[3].partitions}
+ yyLOCAL = &PartitionSpec{Action: TruncateAction, IsAll: true}
}
+ yyVAL.union = yyLOCAL
case 396:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2190
+ var yyLOCAL *PartitionSpec
+//line sql.y:2223
{
- yyVAL.partSpec = &PartitionSpec{Action: CheckAction, IsAll: true}
+ yyLOCAL = &PartitionSpec{Action: CoalesceAction, Number: NewIntLiteral(yyDollar[3].str)}
}
+ yyVAL.union = yyLOCAL
case 397:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2194
+ yyDollar = yyS[yypt-7 : yypt+1]
+ var yyLOCAL *PartitionSpec
+//line sql.y:2227
{
- yyVAL.partSpec = &PartitionSpec{Action: OptimizeAction, Names: yyDollar[3].partitions}
+ yyLOCAL = &PartitionSpec{Action: ExchangeAction, Names: Partitions{yyDollar[3].colIdent}, TableName: yyDollar[6].tableName, WithoutValidation: yyDollar[7].booleanUnion()}
}
+ yyVAL.union = yyLOCAL
case 398:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2198
+ var yyLOCAL *PartitionSpec
+//line sql.y:2231
{
- yyVAL.partSpec = &PartitionSpec{Action: OptimizeAction, IsAll: true}
+ yyLOCAL = &PartitionSpec{Action: AnalyzeAction, Names: yyDollar[3].partitionsUnion()}
}
+ yyVAL.union = yyLOCAL
case 399:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2202
+ var yyLOCAL *PartitionSpec
+//line sql.y:2235
{
- yyVAL.partSpec = &PartitionSpec{Action: RebuildAction, Names: yyDollar[3].partitions}
+ yyLOCAL = &PartitionSpec{Action: AnalyzeAction, IsAll: true}
}
+ yyVAL.union = yyLOCAL
case 400:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2206
+ var yyLOCAL *PartitionSpec
+//line sql.y:2239
{
- yyVAL.partSpec = &PartitionSpec{Action: RebuildAction, IsAll: true}
+ yyLOCAL = &PartitionSpec{Action: CheckAction, Names: yyDollar[3].partitionsUnion()}
}
+ yyVAL.union = yyLOCAL
case 401:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2210
+ var yyLOCAL *PartitionSpec
+//line sql.y:2243
{
- yyVAL.partSpec = &PartitionSpec{Action: RepairAction, Names: yyDollar[3].partitions}
+ yyLOCAL = &PartitionSpec{Action: CheckAction, IsAll: true}
}
+ yyVAL.union = yyLOCAL
case 402:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2214
+ var yyLOCAL *PartitionSpec
+//line sql.y:2247
{
- yyVAL.partSpec = &PartitionSpec{Action: RepairAction, IsAll: true}
+ yyLOCAL = &PartitionSpec{Action: OptimizeAction, Names: yyDollar[3].partitionsUnion()}
}
+ yyVAL.union = yyLOCAL
case 403:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2218
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL *PartitionSpec
+//line sql.y:2251
{
- yyVAL.partSpec = &PartitionSpec{Action: UpgradeAction}
+ yyLOCAL = &PartitionSpec{Action: OptimizeAction, IsAll: true}
}
+ yyVAL.union = yyLOCAL
case 404:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:2223
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL *PartitionSpec
+//line sql.y:2255
{
- yyVAL.boolean = false
+ yyLOCAL = &PartitionSpec{Action: RebuildAction, Names: yyDollar[3].partitionsUnion()}
}
+ yyVAL.union = yyLOCAL
case 405:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2227
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL *PartitionSpec
+//line sql.y:2259
{
- yyVAL.boolean = false
+ yyLOCAL = &PartitionSpec{Action: RebuildAction, IsAll: true}
}
+ yyVAL.union = yyLOCAL
case 406:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2231
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL *PartitionSpec
+//line sql.y:2263
{
- yyVAL.boolean = true
+ yyLOCAL = &PartitionSpec{Action: RepairAction, Names: yyDollar[3].partitionsUnion()}
}
+ yyVAL.union = yyLOCAL
case 407:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2238
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL *PartitionSpec
+//line sql.y:2267
{
- yyVAL.partDefs = []*PartitionDefinition{yyDollar[1].partDef}
+ yyLOCAL = &PartitionSpec{Action: RepairAction, IsAll: true}
}
+ yyVAL.union = yyLOCAL
case 408:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2242
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL *PartitionSpec
+//line sql.y:2271
{
- yyVAL.partDefs = append(yyDollar[1].partDefs, yyDollar[3].partDef)
+ yyLOCAL = &PartitionSpec{Action: UpgradeAction}
}
+ yyVAL.union = yyLOCAL
case 409:
- yyDollar = yyS[yypt-8 : yypt+1]
-//line sql.y:2248
+ yyDollar = yyS[yypt-0 : yypt+1]
+ var yyLOCAL bool
+//line sql.y:2276
{
- yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Limit: yyDollar[7].expr}
+ yyLOCAL = false
}
+ yyVAL.union = yyLOCAL
case 410:
- yyDollar = yyS[yypt-8 : yypt+1]
-//line sql.y:2252
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL bool
+//line sql.y:2280
{
- yyVAL.partDef = &PartitionDefinition{Name: yyDollar[2].colIdent, Maxvalue: true}
+ yyLOCAL = false
}
+ yyVAL.union = yyLOCAL
case 411:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2258
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL bool
+//line sql.y:2284
{
- yyVAL.statement = yyDollar[3].ddl
+ yyLOCAL = true
}
+ yyVAL.union = yyLOCAL
case 412:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2264
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL []*PartitionDefinition
+//line sql.y:2291
{
- yyVAL.ddl = &DDL{Action: RenameDDLAction, FromTables: TableNames{yyDollar[1].tableName}, ToTables: TableNames{yyDollar[3].tableName}}
+ yyLOCAL = []*PartitionDefinition{yyDollar[1].partDefUnion()}
}
+ yyVAL.union = yyLOCAL
case 413:
- yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:2268
+ yyDollar = yyS[yypt-3 : yypt+1]
+//line sql.y:2295
{
- yyVAL.ddl = yyDollar[1].ddl
- yyVAL.ddl.FromTables = append(yyVAL.ddl.FromTables, yyDollar[3].tableName)
- yyVAL.ddl.ToTables = append(yyVAL.ddl.ToTables, yyDollar[5].tableName)
+ yySLICE := (*[]*PartitionDefinition)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[3].partDefUnion())
}
case 414:
- yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:2276
+ yyDollar = yyS[yypt-8 : yypt+1]
+ var yyLOCAL *PartitionDefinition
+//line sql.y:2301
{
- yyVAL.statement = &DropTable{FromTables: yyDollar[4].tableNames, IfExists: yyDollar[3].boolean}
+ yyLOCAL = &PartitionDefinition{Name: yyDollar[2].colIdent, Limit: yyDollar[7].exprUnion()}
}
+ yyVAL.union = yyLOCAL
case 415:
- yyDollar = yyS[yypt-6 : yypt+1]
-//line sql.y:2280
+ yyDollar = yyS[yypt-8 : yypt+1]
+ var yyLOCAL *PartitionDefinition
+//line sql.y:2305
{
- // Change this to an alter statement
- yyVAL.statement = &DDL{Action: AlterDDLAction, Table: yyDollar[5].tableName}
+ yyLOCAL = &PartitionDefinition{Name: yyDollar[2].colIdent, Maxvalue: true}
}
+ yyVAL.union = yyLOCAL
case 416:
- yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:2285
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2311
{
- yyVAL.statement = &DropView{FromTables: yyDollar[4].tableNames, IfExists: yyDollar[3].boolean}
+ yyLOCAL = &RenameTable{TablePairs: yyDollar[3].renameTablePairsUnion()}
}
+ yyVAL.union = yyLOCAL
case 417:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:2289
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL []*RenameTablePair
+//line sql.y:2317
{
- yyVAL.statement = &DropDatabase{DBName: string(yyDollar[4].colIdent.String()), IfExists: yyDollar[3].boolean}
+ yyLOCAL = []*RenameTablePair{{FromTable: yyDollar[1].tableName, ToTable: yyDollar[3].tableName}}
}
+ yyVAL.union = yyLOCAL
case 418:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2295
+ yyDollar = yyS[yypt-5 : yypt+1]
+//line sql.y:2321
{
- yyVAL.statement = &DDL{Action: TruncateDDLAction, Table: yyDollar[3].tableName}
+ yySLICE := (*[]*RenameTablePair)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, &RenameTablePair{FromTable: yyDollar[3].tableName, ToTable: yyDollar[5].tableName})
}
case 419:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2299
+ yyDollar = yyS[yypt-6 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2327
{
- yyVAL.statement = &DDL{Action: TruncateDDLAction, Table: yyDollar[2].tableName}
+ yyLOCAL = &DropTable{FromTables: yyDollar[5].tableNamesUnion(), IfExists: yyDollar[4].booleanUnion(), Temp: yyDollar[2].booleanUnion()}
}
+ yyVAL.union = yyLOCAL
case 420:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2304
+ yyDollar = yyS[yypt-6 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2331
{
- yyVAL.statement = &OtherRead{}
+ // Change this to an alter statement
+ if yyDollar[3].colIdent.Lowered() == "primary" {
+ yyLOCAL = &AlterTable{Table: yyDollar[5].tableName, AlterOptions: append([]AlterOption{&DropKey{Type: PrimaryKeyType}}, yyDollar[6].alterOptionsUnion()...)}
+ } else {
+ yyLOCAL = &AlterTable{Table: yyDollar[5].tableName, AlterOptions: append([]AlterOption{&DropKey{Type: NormalKeyType, Name: yyDollar[3].colIdent}}, yyDollar[6].alterOptionsUnion()...)}
+ }
}
+ yyVAL.union = yyLOCAL
case 421:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2310
+ yyDollar = yyS[yypt-5 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2340
{
- yyVAL.statement = &Show{&ShowBasic{Command: Charset, Filter: yyDollar[3].showFilter}}
+ yyLOCAL = &DropView{FromTables: yyDollar[4].tableNamesUnion(), IfExists: yyDollar[3].booleanUnion()}
}
+ yyVAL.union = yyLOCAL
case 422:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2314
+ yyDollar = yyS[yypt-5 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2344
{
- yyVAL.statement = &Show{&ShowBasic{Command: Collation, Filter: yyDollar[3].showFilter}}
+ yyLOCAL = &DropDatabase{Comments: Comments(yyDollar[3].strs), DBName: yyDollar[5].tableIdent, IfExists: yyDollar[4].booleanUnion()}
}
+ yyVAL.union = yyLOCAL
case 423:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2318
+ var yyLOCAL Statement
+//line sql.y:2350
{
- yyVAL.statement = &Show{&ShowBasic{Command: Database, Filter: yyDollar[3].showFilter}}
+ yyLOCAL = &TruncateTable{Table: yyDollar[3].tableName}
}
+ yyVAL.union = yyLOCAL
case 424:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2322
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2354
{
- yyVAL.statement = &Show{&ShowBasic{Command: Database, Filter: yyDollar[3].showFilter}}
+ yyLOCAL = &TruncateTable{Table: yyDollar[2].tableName}
}
+ yyVAL.union = yyLOCAL
case 425:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2326
+ var yyLOCAL Statement
+//line sql.y:2359
{
- yyVAL.statement = &Show{&ShowBasic{Command: Database, Filter: yyDollar[3].showFilter}}
+ yyLOCAL = &OtherRead{}
}
+ yyVAL.union = yyLOCAL
case 426:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2330
+ var yyLOCAL Statement
+//line sql.y:2365
{
- yyVAL.statement = &Show{&ShowBasic{Command: Database, Filter: yyDollar[3].showFilter}}
+ yyLOCAL = &Show{&ShowBasic{Command: Charset, Filter: yyDollar[3].showFilterUnion()}}
}
+ yyVAL.union = yyLOCAL
case 427:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:2334
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2369
{
- yyVAL.statement = &Show{&ShowBasic{Command: Function, Filter: yyDollar[4].showFilter}}
+ yyLOCAL = &Show{&ShowBasic{Command: Collation, Filter: yyDollar[3].showFilterUnion()}}
}
+ yyVAL.union = yyLOCAL
case 428:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2338
+ yyDollar = yyS[yypt-7 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2373
{
- yyVAL.statement = &Show{&ShowBasic{Command: Privilege}}
+ yyLOCAL = &Show{&ShowBasic{Full: yyDollar[2].booleanUnion(), Command: Column, Tbl: yyDollar[5].tableName, DbName: yyDollar[6].tableIdent, Filter: yyDollar[7].showFilterUnion()}}
}
+ yyVAL.union = yyLOCAL
case 429:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:2342
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2377
{
- yyVAL.statement = &Show{&ShowBasic{Command: Procedure, Filter: yyDollar[4].showFilter}}
+ yyLOCAL = &Show{&ShowBasic{Command: Database, Filter: yyDollar[3].showFilterUnion()}}
}
+ yyVAL.union = yyLOCAL
case 430:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:2346
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2381
{
- yyVAL.statement = &Show{&ShowBasic{Command: StatusSession, Filter: yyDollar[4].showFilter}}
+ yyLOCAL = &Show{&ShowBasic{Command: Database, Filter: yyDollar[3].showFilterUnion()}}
}
+ yyVAL.union = yyLOCAL
case 431:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:2350
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2385
{
- yyVAL.statement = &Show{&ShowBasic{Command: StatusGlobal, Filter: yyDollar[4].showFilter}}
+ yyLOCAL = &Show{&ShowBasic{Command: Keyspace, Filter: yyDollar[3].showFilterUnion()}}
}
+ yyVAL.union = yyLOCAL
case 432:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:2354
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2389
{
- yyVAL.statement = &Show{&ShowBasic{Command: VariableSession, Filter: yyDollar[4].showFilter}}
+ yyLOCAL = &Show{&ShowBasic{Command: Keyspace, Filter: yyDollar[3].showFilterUnion()}}
}
+ yyVAL.union = yyLOCAL
case 433:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:2358
+ var yyLOCAL Statement
+//line sql.y:2393
{
- yyVAL.statement = &Show{&ShowBasic{Command: VariableGlobal, Filter: yyDollar[4].showFilter}}
+ yyLOCAL = &Show{&ShowBasic{Command: Function, Filter: yyDollar[4].showFilterUnion()}}
}
+ yyVAL.union = yyLOCAL
case 434:
- yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:2362
+ yyDollar = yyS[yypt-7 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2397
{
- yyVAL.statement = &Show{&ShowTableStatus{DatabaseName: yyDollar[4].str, Filter: yyDollar[5].showFilter}}
+ yyLOCAL = &Show{&ShowBasic{Command: Index, Tbl: yyDollar[5].tableName, DbName: yyDollar[6].tableIdent, Filter: yyDollar[7].showFilterUnion()}}
}
+ yyVAL.union = yyLOCAL
case 435:
- yyDollar = yyS[yypt-7 : yypt+1]
-//line sql.y:2366
+ yyDollar = yyS[yypt-5 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2401
{
- yyVAL.statement = &Show{&ShowColumns{Full: yyDollar[2].str, Table: yyDollar[5].tableName, DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter}}
+ yyLOCAL = &Show{&ShowBasic{Command: OpenTable, DbName: yyDollar[4].tableIdent, Filter: yyDollar[5].showFilterUnion()}}
}
+ yyVAL.union = yyLOCAL
case 436:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:2370
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2405
{
- yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].colIdent.String()), Scope: ImplicitScope}}
+ yyLOCAL = &Show{&ShowBasic{Command: Privilege}}
}
+ yyVAL.union = yyLOCAL
case 437:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:2374
+ var yyLOCAL Statement
+//line sql.y:2409
{
- yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}}
+ yyLOCAL = &Show{&ShowBasic{Command: Procedure, Filter: yyDollar[4].showFilterUnion()}}
}
+ yyVAL.union = yyLOCAL
case 438:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:2378
+ var yyLOCAL Statement
+//line sql.y:2413
{
- yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope}}
+ yyLOCAL = &Show{&ShowBasic{Command: StatusSession, Filter: yyDollar[4].showFilterUnion()}}
}
+ yyVAL.union = yyLOCAL
case 439:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:2383
+ var yyLOCAL Statement
+//line sql.y:2417
{
- yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].colIdent.String()), Scope: ImplicitScope}}
+ yyLOCAL = &Show{&ShowBasic{Command: StatusGlobal, Filter: yyDollar[4].showFilterUnion()}}
}
+ yyVAL.union = yyLOCAL
case 440:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:2387
+ var yyLOCAL Statement
+//line sql.y:2421
{
- yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}}
+ yyLOCAL = &Show{&ShowBasic{Command: VariableSession, Filter: yyDollar[4].showFilterUnion()}}
}
+ yyVAL.union = yyLOCAL
case 441:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:2391
+ var yyLOCAL Statement
+//line sql.y:2425
{
- yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope}}
+ yyLOCAL = &Show{&ShowBasic{Command: VariableGlobal, Filter: yyDollar[4].showFilterUnion()}}
}
+ yyVAL.union = yyLOCAL
case 442:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:2395
+ yyDollar = yyS[yypt-5 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2429
{
- yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}}
+ yyLOCAL = &Show{&ShowBasic{Command: TableStatus, DbName: yyDollar[4].tableIdent, Filter: yyDollar[5].showFilterUnion()}}
}
+ yyVAL.union = yyLOCAL
case 443:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:2399
+ yyDollar = yyS[yypt-5 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2433
{
- yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}}
+ yyLOCAL = &Show{&ShowBasic{Command: Table, Full: yyDollar[2].booleanUnion(), DbName: yyDollar[4].tableIdent, Filter: yyDollar[5].showFilterUnion()}}
}
+ yyVAL.union = yyLOCAL
case 444:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2403
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2437
{
- yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}}
+ yyLOCAL = &Show{&ShowBasic{Command: Trigger, DbName: yyDollar[3].tableIdent, Filter: yyDollar[4].showFilterUnion()}}
}
+ yyVAL.union = yyLOCAL
case 445:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:2407
+ var yyLOCAL Statement
+//line sql.y:2441
{
- yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope}}
+ yyLOCAL = &Show{&ShowCreate{Command: CreateDb, Op: yyDollar[4].tableName}}
}
+ yyVAL.union = yyLOCAL
case 446:
- yyDollar = yyS[yypt-7 : yypt+1]
-//line sql.y:2411
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2445
{
- showTablesOpt := &ShowTablesOpt{DbName: yyDollar[6].str, Filter: yyDollar[7].showFilter}
- yyVAL.statement = &Show{&ShowLegacy{Extended: string(yyDollar[2].str), Type: string(yyDollar[3].str), ShowTablesOpt: showTablesOpt, OnTable: yyDollar[5].tableName, Scope: ImplicitScope}}
+ yyLOCAL = &Show{&ShowCreate{Command: CreateE, Op: yyDollar[4].tableName}}
}
+ yyVAL.union = yyLOCAL
case 447:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2416
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2449
{
- yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}}
+ yyLOCAL = &Show{&ShowCreate{Command: CreateF, Op: yyDollar[4].tableName}}
}
+ yyVAL.union = yyLOCAL
case 448:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:2420
+ var yyLOCAL Statement
+//line sql.y:2453
{
- yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Table: yyDollar[4].tableName, Scope: ImplicitScope}}
+ yyLOCAL = &Show{&ShowCreate{Command: CreateProc, Op: yyDollar[4].tableName}}
}
+ yyVAL.union = yyLOCAL
case 449:
- yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:2424
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2457
{
- // this is ugly, but I couldn't find a better way for now
- if yyDollar[3].str == "processlist" {
- yyVAL.statement = &Show{&ShowLegacy{Type: yyDollar[3].str, Scope: ImplicitScope}}
- } else {
- showTablesOpt := &ShowTablesOpt{Full: yyDollar[2].str, DbName: yyDollar[4].str, Filter: yyDollar[5].showFilter}
- yyVAL.statement = &Show{&ShowLegacy{Type: yyDollar[3].str, ShowTablesOpt: showTablesOpt, Scope: ImplicitScope}}
- }
+ yyLOCAL = &Show{&ShowCreate{Command: CreateTbl, Op: yyDollar[4].tableName}}
}
+ yyVAL.union = yyLOCAL
case 450:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:2434
+ var yyLOCAL Statement
+//line sql.y:2461
{
- showTablesOpt := &ShowTablesOpt{Filter: yyDollar[4].showFilter}
- yyVAL.statement = &Show{&ShowLegacy{Scope: VitessMetadataScope, Type: string(yyDollar[3].bytes), ShowTablesOpt: showTablesOpt}}
+ yyLOCAL = &Show{&ShowCreate{Command: CreateTr, Op: yyDollar[4].tableName}}
}
+ yyVAL.union = yyLOCAL
case 451:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2439
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2465
{
- yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}}
+ yyLOCAL = &Show{&ShowCreate{Command: CreateV, Op: yyDollar[4].tableName}}
}
+ yyVAL.union = yyLOCAL
case 452:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2443
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2469
{
- yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), Scope: ImplicitScope}}
+ yyLOCAL = &Show{&ShowLegacy{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), Scope: ImplicitScope}}
}
+ yyVAL.union = yyLOCAL
case 453:
- yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:2447
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2473
{
- yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes) + " " + string(yyDollar[3].bytes), OnTable: yyDollar[5].tableName, Scope: ImplicitScope}}
+ yyLOCAL = &Show{&ShowLegacy{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].colIdent.String()), Scope: ImplicitScope}}
}
+ yyVAL.union = yyLOCAL
case 454:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2451
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2477
{
- yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}}
+ yyLOCAL = &Show{&ShowLegacy{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), Scope: ImplicitScope}}
}
+ yyVAL.union = yyLOCAL
case 455:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2456
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2481
{
- // This should probably be a different type (ShowVitessTopoOpt), but
- // just getting the thing working for now
- showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilter}
- yyVAL.statement = &Show{&ShowLegacy{Type: yyDollar[2].str, ShowTablesOpt: showTablesOpt}}
+ yyLOCAL = &Show{&ShowLegacy{Type: string(yyDollar[2].str), Scope: ImplicitScope}}
}
+ yyVAL.union = yyLOCAL
case 456:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2470
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2485
{
- yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].colIdent.String()), Scope: ImplicitScope}}
+ yyLOCAL = &Show{&ShowLegacy{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), Table: yyDollar[4].tableName, Scope: ImplicitScope}}
}
+ yyVAL.union = yyLOCAL
case 457:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2474
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2489
{
- yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}}
+ yyLOCAL = &Show{&ShowLegacy{Type: string(yyDollar[2].str), Scope: ImplicitScope}}
}
+ yyVAL.union = yyLOCAL
case 458:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2478
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2493
{
- yyVAL.statement = &Show{&ShowLegacy{Type: string(yyDollar[2].bytes), Scope: ImplicitScope}}
+ yyLOCAL = &Show{&ShowLegacy{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), Table: yyDollar[4].tableName, Scope: ImplicitScope}}
}
+ yyVAL.union = yyLOCAL
case 459:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2484
+ yyDollar = yyS[yypt-5 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2497
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyLOCAL = &Show{&ShowLegacy{Type: string(yyDollar[3].str), Scope: ImplicitScope}}
}
+ yyVAL.union = yyLOCAL
case 460:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2488
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2501
{
- yyVAL.str = string(yyDollar[1].bytes)
+ showTablesOpt := &ShowTablesOpt{Filter: yyDollar[4].showFilterUnion()}
+ yyLOCAL = &Show{&ShowLegacy{Scope: VitessMetadataScope, Type: string(yyDollar[3].str), ShowTablesOpt: showTablesOpt}}
}
+ yyVAL.union = yyLOCAL
case 461:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2494
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2506
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyLOCAL = &Show{&ShowBasic{Command: VitessMigrations, Filter: yyDollar[4].showFilterUnion(), DbName: yyDollar[3].tableIdent}}
}
+ yyVAL.union = yyLOCAL
case 462:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2498
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2510
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyLOCAL = &Show{&ShowLegacy{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), Scope: ImplicitScope}}
}
+ yyVAL.union = yyLOCAL
case 463:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:2504
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2514
{
- yyVAL.str = ""
+ yyLOCAL = &Show{&ShowLegacy{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), Scope: ImplicitScope}}
}
+ yyVAL.union = yyLOCAL
case 464:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2508
+ yyDollar = yyS[yypt-5 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2518
{
- yyVAL.str = "extended "
+ yyLOCAL = &Show{&ShowLegacy{Type: string(yyDollar[2].str) + " " + string(yyDollar[3].str), OnTable: yyDollar[5].tableName, Scope: ImplicitScope}}
}
+ yyVAL.union = yyLOCAL
case 465:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:2514
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2522
{
- yyVAL.str = ""
+ yyLOCAL = &Show{&ShowLegacy{Type: string(yyDollar[2].str), Scope: ImplicitScope}}
}
+ yyVAL.union = yyLOCAL
case 466:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2518
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2527
{
- yyVAL.str = "full "
+ // This should probably be a different type (ShowVitessTopoOpt), but
+ // just getting the thing working for now
+ showTablesOpt := &ShowTablesOpt{Filter: yyDollar[3].showFilterUnion()}
+ yyLOCAL = &Show{&ShowLegacy{Type: yyDollar[2].str, ShowTablesOpt: showTablesOpt}}
}
+ yyVAL.union = yyLOCAL
case 467:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2524
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2541
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyLOCAL = &Show{&ShowLegacy{Type: string(yyDollar[2].colIdent.String()), Scope: ImplicitScope}}
}
+ yyVAL.union = yyLOCAL
case 468:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2528
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2545
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyLOCAL = &Show{&ShowLegacy{Type: string(yyDollar[2].str), Scope: ImplicitScope}}
}
+ yyVAL.union = yyLOCAL
case 469:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:2534
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2549
{
- yyVAL.str = ""
+ yyLOCAL = &Show{&ShowLegacy{Type: string(yyDollar[2].str), Scope: ImplicitScope}}
}
+ yyVAL.union = yyLOCAL
case 470:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2538
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:2555
{
- yyVAL.str = yyDollar[2].tableIdent.v
+ yyVAL.str = string(yyDollar[1].str)
}
case 471:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2542
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:2559
{
- yyVAL.str = yyDollar[2].tableIdent.v
+ yyVAL.str = string(yyDollar[1].str)
}
case 472:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:2548
+//line sql.y:2565
{
- yyVAL.showFilter = nil
+ yyVAL.str = ""
}
case 473:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2552
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:2569
{
- yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)}
+ yyVAL.str = "extended "
}
case 474:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2556
+ yyDollar = yyS[yypt-0 : yypt+1]
+ var yyLOCAL bool
+//line sql.y:2575
{
- yyVAL.showFilter = &ShowFilter{Filter: yyDollar[2].expr}
+ yyLOCAL = false
}
+ yyVAL.union = yyLOCAL
case 475:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:2562
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL bool
+//line sql.y:2579
{
- yyVAL.showFilter = nil
+ yyLOCAL = true
}
+ yyVAL.union = yyLOCAL
case 476:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2566
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:2585
{
- yyVAL.showFilter = &ShowFilter{Like: string(yyDollar[2].bytes)}
+ yyVAL.str = string(yyDollar[1].str)
}
case 477:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:2572
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:2589
{
- yyVAL.empty = struct{}{}
+ yyVAL.str = string(yyDollar[1].str)
}
case 478:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2576
+ yyDollar = yyS[yypt-0 : yypt+1]
+//line sql.y:2595
{
- yyVAL.empty = struct{}{}
+ yyVAL.tableIdent = NewTableIdent("")
}
case 479:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2580
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:2599
{
- yyVAL.empty = struct{}{}
+ yyVAL.tableIdent = yyDollar[2].tableIdent
}
case 480:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2586
+//line sql.y:2603
{
- yyVAL.statement = &Use{DBName: yyDollar[2].tableIdent}
+ yyVAL.tableIdent = yyDollar[2].tableIdent
}
case 481:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2590
+ yyDollar = yyS[yypt-0 : yypt+1]
+ var yyLOCAL *ShowFilter
+//line sql.y:2609
{
- yyVAL.statement = &Use{DBName: TableIdent{v: ""}}
+ yyLOCAL = nil
}
+ yyVAL.union = yyLOCAL
case 482:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2596
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL *ShowFilter
+//line sql.y:2613
{
- yyVAL.statement = &Begin{}
+ yyLOCAL = &ShowFilter{Like: string(yyDollar[2].str)}
}
+ yyVAL.union = yyLOCAL
case 483:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2600
+ var yyLOCAL *ShowFilter
+//line sql.y:2617
{
- yyVAL.statement = &Begin{}
+ yyLOCAL = &ShowFilter{Filter: yyDollar[2].exprUnion()}
}
+ yyVAL.union = yyLOCAL
case 484:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2606
+ yyDollar = yyS[yypt-0 : yypt+1]
+ var yyLOCAL *ShowFilter
+//line sql.y:2623
{
- yyVAL.statement = &Commit{}
+ yyLOCAL = nil
}
+ yyVAL.union = yyLOCAL
case 485:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2612
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL *ShowFilter
+//line sql.y:2627
{
- yyVAL.statement = &Rollback{}
+ yyLOCAL = &ShowFilter{Like: string(yyDollar[2].str)}
}
+ yyVAL.union = yyLOCAL
case 486:
- yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:2616
+ yyDollar = yyS[yypt-0 : yypt+1]
+//line sql.y:2633
{
- yyVAL.statement = &SRollback{Name: yyDollar[5].colIdent}
+ yyVAL.empty = struct{}{}
}
case 487:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:2621
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:2637
{
yyVAL.empty = struct{}{}
}
case 488:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2623
+//line sql.y:2641
{
yyVAL.empty = struct{}{}
}
case 489:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:2626
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2647
{
- yyVAL.empty = struct{}{}
+ yyLOCAL = &Use{DBName: yyDollar[2].tableIdent}
}
+ yyVAL.union = yyLOCAL
case 490:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2628
+ var yyLOCAL Statement
+//line sql.y:2651
{
- yyVAL.empty = struct{}{}
+ yyLOCAL = &Use{DBName: TableIdent{v: ""}}
}
+ yyVAL.union = yyLOCAL
case 491:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2633
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2657
{
- yyVAL.statement = &Savepoint{Name: yyDollar[2].colIdent}
+ yyLOCAL = &Begin{}
}
+ yyVAL.union = yyLOCAL
case 492:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2639
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2661
{
- yyVAL.statement = &Release{Name: yyDollar[3].colIdent}
+ yyLOCAL = &Begin{}
}
+ yyVAL.union = yyLOCAL
case 493:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:2644
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2667
{
- yyVAL.explainType = EmptyType
+ yyLOCAL = &Commit{}
}
+ yyVAL.union = yyLOCAL
case 494:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2648
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2673
{
- yyVAL.explainType = JSONType
+ yyLOCAL = &Rollback{}
}
+ yyVAL.union = yyLOCAL
case 495:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2652
+ yyDollar = yyS[yypt-5 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2677
{
- yyVAL.explainType = TreeType
+ yyLOCAL = &SRollback{Name: yyDollar[5].colIdent}
}
+ yyVAL.union = yyLOCAL
case 496:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2656
+ yyDollar = yyS[yypt-0 : yypt+1]
+//line sql.y:2682
{
- yyVAL.explainType = VitessType
+ yyVAL.empty = struct{}{}
}
case 497:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2660
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:2684
{
- yyVAL.explainType = TraditionalType
+ yyVAL.empty = struct{}{}
}
case 498:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2664
+ yyDollar = yyS[yypt-0 : yypt+1]
+//line sql.y:2687
{
- yyVAL.explainType = AnalyzeType
+ yyVAL.empty = struct{}{}
}
case 499:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2670
+//line sql.y:2689
{
- yyVAL.bytes = yyDollar[1].bytes
+ yyVAL.empty = struct{}{}
}
case 500:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2674
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2694
{
- yyVAL.bytes = yyDollar[1].bytes
+ yyLOCAL = &Savepoint{Name: yyDollar[2].colIdent}
}
+ yyVAL.union = yyLOCAL
case 501:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2678
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2700
{
- yyVAL.bytes = yyDollar[1].bytes
+ yyLOCAL = &Release{Name: yyDollar[3].colIdent}
}
+ yyVAL.union = yyLOCAL
case 502:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2684
+ yyDollar = yyS[yypt-0 : yypt+1]
+ var yyLOCAL ExplainType
+//line sql.y:2705
{
- yyVAL.statement = yyDollar[1].selStmt
+ yyLOCAL = EmptyType
}
+ yyVAL.union = yyLOCAL
case 503:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2688
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL ExplainType
+//line sql.y:2709
{
- yyVAL.statement = yyDollar[1].statement
+ yyLOCAL = JSONType
}
+ yyVAL.union = yyLOCAL
case 504:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2692
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL ExplainType
+//line sql.y:2713
{
- yyVAL.statement = yyDollar[1].statement
+ yyLOCAL = TreeType
}
+ yyVAL.union = yyLOCAL
case 505:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2696
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL ExplainType
+//line sql.y:2717
{
- yyVAL.statement = yyDollar[1].statement
+ yyLOCAL = VitessType
}
+ yyVAL.union = yyLOCAL
case 506:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:2701
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL ExplainType
+//line sql.y:2721
{
- yyVAL.str = ""
+ yyLOCAL = TraditionalType
}
+ yyVAL.union = yyLOCAL
case 507:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2705
+ var yyLOCAL ExplainType
+//line sql.y:2725
{
- yyVAL.str = ""
+ yyLOCAL = AnalyzeType
}
+ yyVAL.union = yyLOCAL
case 508:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2709
+//line sql.y:2731
{
- yyVAL.str = ""
+ yyVAL.str = yyDollar[1].str
}
case 509:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2715
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:2735
{
- yyVAL.statement = &OtherRead{}
+ yyVAL.str = yyDollar[1].str
}
case 510:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2719
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:2739
{
- yyVAL.statement = &Explain{Type: yyDollar[2].explainType, Statement: yyDollar[3].statement}
+ yyVAL.str = yyDollar[1].str
}
case 511:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2725
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2745
{
- yyVAL.statement = &OtherAdmin{}
+ yyLOCAL = yyDollar[1].selStmtUnion()
}
+ yyVAL.union = yyLOCAL
case 512:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2729
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2749
{
- yyVAL.statement = &OtherAdmin{}
+ yyLOCAL = yyDollar[1].statementUnion()
}
+ yyVAL.union = yyLOCAL
case 513:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2735
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2753
{
- yyVAL.statement = &LockTables{Tables: yyDollar[3].tableAndLockTypes}
+ yyLOCAL = yyDollar[1].statementUnion()
}
+ yyVAL.union = yyLOCAL
case 514:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2741
+ var yyLOCAL Statement
+//line sql.y:2757
{
- yyVAL.tableAndLockTypes = TableAndLockTypes{yyDollar[1].tableAndLockType}
+ yyLOCAL = yyDollar[1].statementUnion()
}
+ yyVAL.union = yyLOCAL
case 515:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2745
+ yyDollar = yyS[yypt-0 : yypt+1]
+//line sql.y:2762
{
- yyVAL.tableAndLockTypes = append(yyDollar[1].tableAndLockTypes, yyDollar[3].tableAndLockType)
+ yyVAL.str = ""
}
case 516:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2751
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:2766
{
- yyVAL.tableAndLockType = &TableAndLockType{Table: yyDollar[1].aliasedTableName, Lock: yyDollar[2].lockType}
+ yyVAL.str = yyDollar[1].colIdent.val
}
case 517:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2757
+//line sql.y:2770
{
- yyVAL.lockType = Read
+ yyVAL.str = encodeSQLString(yyDollar[1].str)
}
case 518:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2761
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2776
{
- yyVAL.lockType = ReadLocal
+ yyLOCAL = &ExplainTab{Table: yyDollar[2].tableName, Wild: yyDollar[3].str}
}
+ yyVAL.union = yyLOCAL
case 519:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2765
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2780
{
- yyVAL.lockType = Write
+ yyLOCAL = &ExplainStmt{Type: yyDollar[2].explainTypeUnion(), Statement: yyDollar[3].statementUnion()}
}
+ yyVAL.union = yyLOCAL
case 520:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2769
+ var yyLOCAL Statement
+//line sql.y:2786
{
- yyVAL.lockType = LowPriorityWrite
+ yyLOCAL = &OtherAdmin{}
}
+ yyVAL.union = yyLOCAL
case 521:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2775
+ var yyLOCAL Statement
+//line sql.y:2790
{
- yyVAL.statement = &UnlockTables{}
+ yyLOCAL = &OtherAdmin{}
}
+ yyVAL.union = yyLOCAL
case 522:
- yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2781
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2796
{
- yyVAL.statement = &DDL{Action: FlushDDLAction}
+ yyLOCAL = &LockTables{Tables: yyDollar[3].tableAndLockTypesUnion()}
}
+ yyVAL.union = yyLOCAL
case 523:
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL TableAndLockTypes
+//line sql.y:2802
+ {
+ yyLOCAL = TableAndLockTypes{yyDollar[1].tableAndLockTypeUnion()}
+ }
+ yyVAL.union = yyLOCAL
+ case 524:
+ yyDollar = yyS[yypt-3 : yypt+1]
+//line sql.y:2806
+ {
+ yySLICE := (*TableAndLockTypes)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[3].tableAndLockTypeUnion())
+ }
+ case 525:
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL *TableAndLockType
+//line sql.y:2812
+ {
+ yyLOCAL = &TableAndLockType{Table: yyDollar[1].aliasedTableNameUnion(), Lock: yyDollar[2].lockTypeUnion()}
+ }
+ yyVAL.union = yyLOCAL
+ case 526:
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL LockType
+//line sql.y:2818
+ {
+ yyLOCAL = Read
+ }
+ yyVAL.union = yyLOCAL
+ case 527:
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL LockType
+//line sql.y:2822
+ {
+ yyLOCAL = ReadLocal
+ }
+ yyVAL.union = yyLOCAL
+ case 528:
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL LockType
+//line sql.y:2826
+ {
+ yyLOCAL = Write
+ }
+ yyVAL.union = yyLOCAL
+ case 529:
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL LockType
+//line sql.y:2830
+ {
+ yyLOCAL = LowPriorityWrite
+ }
+ yyVAL.union = yyLOCAL
+ case 530:
+ yyDollar = yyS[yypt-2 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2836
+ {
+ yyLOCAL = &UnlockTables{}
+ }
+ yyVAL.union = yyLOCAL
+ case 531:
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2842
+ {
+ yyLOCAL = &RevertMigration{UUID: string(yyDollar[3].str)}
+ }
+ yyVAL.union = yyLOCAL
+ case 532:
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2848
+ {
+ yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), FlushOptions: yyDollar[3].strs}
+ }
+ yyVAL.union = yyLOCAL
+ case 533:
+ yyDollar = yyS[yypt-3 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2852
+ {
+ yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion()}
+ }
+ yyVAL.union = yyLOCAL
+ case 534:
+ yyDollar = yyS[yypt-6 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2856
+ {
+ yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), WithLock: true}
+ }
+ yyVAL.union = yyLOCAL
+ case 535:
+ yyDollar = yyS[yypt-4 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2860
+ {
+ yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), TableNames: yyDollar[4].tableNamesUnion()}
+ }
+ yyVAL.union = yyLOCAL
+ case 536:
+ yyDollar = yyS[yypt-7 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2864
+ {
+ yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), TableNames: yyDollar[4].tableNamesUnion(), WithLock: true}
+ }
+ yyVAL.union = yyLOCAL
+ case 537:
+ yyDollar = yyS[yypt-6 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:2868
+ {
+ yyLOCAL = &Flush{IsLocal: yyDollar[2].booleanUnion(), TableNames: yyDollar[4].tableNamesUnion(), ForExport: true}
+ }
+ yyVAL.union = yyLOCAL
+ case 538:
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:2874
+ {
+ yyVAL.strs = []string{yyDollar[1].str}
+ }
+ case 539:
+ yyDollar = yyS[yypt-3 : yypt+1]
+//line sql.y:2878
+ {
+ yyVAL.strs = append(yyDollar[1].strs, yyDollar[3].str)
+ }
+ case 540:
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:2884
+ {
+ yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str)
+ }
+ case 541:
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:2888
+ {
+ yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str)
+ }
+ case 542:
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:2892
+ {
+ yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str)
+ }
+ case 543:
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:2896
+ {
+ yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str)
+ }
+ case 544:
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:2900
+ {
+ yyVAL.str = string(yyDollar[1].str)
+ }
+ case 545:
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:2904
+ {
+ yyVAL.str = string(yyDollar[1].str)
+ }
+ case 546:
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:2908
+ {
+ yyVAL.str = string(yyDollar[1].str)
+ }
+ case 547:
+ yyDollar = yyS[yypt-3 : yypt+1]
+//line sql.y:2912
+ {
+ yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str) + yyDollar[3].str
+ }
+ case 548:
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:2916
+ {
+ yyVAL.str = string(yyDollar[1].str) + " " + string(yyDollar[2].str)
+ }
+ case 549:
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:2920
+ {
+ yyVAL.str = string(yyDollar[1].str)
+ }
+ case 550:
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:2924
+ {
+ yyVAL.str = string(yyDollar[1].str)
+ }
+ case 551:
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:2928
+ {
+ yyVAL.str = string(yyDollar[1].str)
+ }
+ case 552:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:2785
+ var yyLOCAL bool
+//line sql.y:2933
+ {
+ yyLOCAL = false
+ }
+ yyVAL.union = yyLOCAL
+ case 553:
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL bool
+//line sql.y:2937
+ {
+ yyLOCAL = true
+ }
+ yyVAL.union = yyLOCAL
+ case 554:
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL bool
+//line sql.y:2941
+ {
+ yyLOCAL = true
+ }
+ yyVAL.union = yyLOCAL
+ case 555:
+ yyDollar = yyS[yypt-0 : yypt+1]
+//line sql.y:2946
+ {
+ yyVAL.str = ""
+ }
+ case 556:
+ yyDollar = yyS[yypt-3 : yypt+1]
+//line sql.y:2950
+ {
+ yyVAL.str = " " + string(yyDollar[1].str) + " " + string(yyDollar[2].str) + " " + yyDollar[3].colIdent.String()
+ }
+ case 557:
+ yyDollar = yyS[yypt-0 : yypt+1]
+//line sql.y:2955
{
setAllowComments(yylex, true)
}
- case 524:
+ case 558:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2789
+//line sql.y:2959
{
- yyVAL.bytes2 = yyDollar[2].bytes2
+ yyVAL.strs = yyDollar[2].strs
setAllowComments(yylex, false)
}
- case 525:
+ case 559:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:2795
+//line sql.y:2965
{
- yyVAL.bytes2 = nil
+ yyVAL.strs = nil
}
- case 526:
+ case 560:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2799
+//line sql.y:2969
{
- yyVAL.bytes2 = append(yyDollar[1].bytes2, yyDollar[2].bytes)
+ yyVAL.strs = append(yyDollar[1].strs, yyDollar[2].str)
}
- case 527:
+ case 561:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2805
+ var yyLOCAL bool
+//line sql.y:2975
{
- yyVAL.boolean = true
+ yyLOCAL = true
}
- case 528:
+ yyVAL.union = yyLOCAL
+ case 562:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2809
+ var yyLOCAL bool
+//line sql.y:2979
{
- yyVAL.boolean = false
+ yyLOCAL = false
}
- case 529:
+ yyVAL.union = yyLOCAL
+ case 563:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2813
+ var yyLOCAL bool
+//line sql.y:2983
{
- yyVAL.boolean = true
+ yyLOCAL = true
}
- case 530:
+ yyVAL.union = yyLOCAL
+ case 564:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:2818
+//line sql.y:2988
{
yyVAL.str = ""
}
- case 531:
+ case 565:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2822
+//line sql.y:2992
{
yyVAL.str = SQLNoCacheStr
}
- case 532:
+ case 566:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2826
+//line sql.y:2996
{
yyVAL.str = SQLCacheStr
}
- case 533:
+ case 567:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:2831
+ var yyLOCAL bool
+//line sql.y:3001
{
- yyVAL.boolean = false
+ yyLOCAL = false
}
- case 534:
+ yyVAL.union = yyLOCAL
+ case 568:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2835
+ var yyLOCAL bool
+//line sql.y:3005
{
- yyVAL.boolean = true
+ yyLOCAL = true
}
- case 535:
+ yyVAL.union = yyLOCAL
+ case 569:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2839
+ var yyLOCAL bool
+//line sql.y:3009
{
- yyVAL.boolean = true
+ yyLOCAL = true
}
- case 536:
+ yyVAL.union = yyLOCAL
+ case 570:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:2844
+ var yyLOCAL SelectExprs
+//line sql.y:3014
{
- yyVAL.selectExprs = nil
+ yyLOCAL = nil
}
- case 537:
+ yyVAL.union = yyLOCAL
+ case 571:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2848
+ var yyLOCAL SelectExprs
+//line sql.y:3018
{
- yyVAL.selectExprs = yyDollar[1].selectExprs
+ yyLOCAL = yyDollar[1].selectExprsUnion()
}
- case 538:
+ yyVAL.union = yyLOCAL
+ case 572:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:2853
+//line sql.y:3023
{
yyVAL.strs = nil
}
- case 539:
+ case 573:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2857
+//line sql.y:3027
{
yyVAL.strs = []string{yyDollar[1].str}
}
- case 540:
+ case 574:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2861
+//line sql.y:3031
{ // TODO: This is a hack since I couldn't get it to work in a nicer way. I got 'conflicts: 8 shift/reduce'
yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str}
}
- case 541:
+ case 575:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2865
+//line sql.y:3035
{
yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str}
}
- case 542:
+ case 576:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:2869
+//line sql.y:3039
{
yyVAL.strs = []string{yyDollar[1].str, yyDollar[2].str, yyDollar[3].str, yyDollar[4].str}
}
- case 543:
+ case 577:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2875
+//line sql.y:3045
{
yyVAL.str = SQLNoCacheStr
}
- case 544:
+ case 578:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2879
+//line sql.y:3049
{
yyVAL.str = SQLCacheStr
}
- case 545:
+ case 579:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2883
+//line sql.y:3053
{
yyVAL.str = DistinctStr
}
- case 546:
+ case 580:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2887
+//line sql.y:3057
{
yyVAL.str = DistinctStr
}
- case 547:
+ case 581:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2891
+//line sql.y:3061
{
yyVAL.str = StraightJoinHint
}
- case 548:
+ case 582:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2895
+//line sql.y:3065
{
yyVAL.str = SQLCalcFoundRowsStr
}
- case 549:
+ case 583:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2901
+//line sql.y:3069
{
- yyVAL.selectExprs = SelectExprs{yyDollar[1].selectExpr}
+ yyVAL.str = AllStr // These are not picked up by NewSelect, and so ALL will be dropped. But this is OK, since it's redundant anyway
}
- case 550:
+ case 584:
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL SelectExprs
+//line sql.y:3075
+ {
+ yyLOCAL = SelectExprs{yyDollar[1].selectExprUnion()}
+ }
+ yyVAL.union = yyLOCAL
+ case 585:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2905
+//line sql.y:3079
{
- yyVAL.selectExprs = append(yyVAL.selectExprs, yyDollar[3].selectExpr)
+ yySLICE := (*SelectExprs)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[3].selectExprUnion())
}
- case 551:
+ case 586:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2911
+ var yyLOCAL SelectExpr
+//line sql.y:3085
{
- yyVAL.selectExpr = &StarExpr{}
+ yyLOCAL = &StarExpr{}
}
- case 552:
+ yyVAL.union = yyLOCAL
+ case 587:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2915
+ var yyLOCAL SelectExpr
+//line sql.y:3089
{
- yyVAL.selectExpr = &AliasedExpr{Expr: yyDollar[1].expr, As: yyDollar[2].colIdent}
+ yyLOCAL = &AliasedExpr{Expr: yyDollar[1].exprUnion(), As: yyDollar[2].colIdent}
}
- case 553:
+ yyVAL.union = yyLOCAL
+ case 588:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2919
+ var yyLOCAL SelectExpr
+//line sql.y:3093
{
- yyVAL.selectExpr = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}}
+ yyLOCAL = &StarExpr{TableName: TableName{Name: yyDollar[1].tableIdent}}
}
- case 554:
+ yyVAL.union = yyLOCAL
+ case 589:
yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:2923
+ var yyLOCAL SelectExpr
+//line sql.y:3097
{
- yyVAL.selectExpr = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}}
+ yyLOCAL = &StarExpr{TableName: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}}
}
- case 555:
+ yyVAL.union = yyLOCAL
+ case 590:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:2928
+//line sql.y:3102
{
yyVAL.colIdent = ColIdent{}
}
- case 556:
+ case 591:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2932
+//line sql.y:3106
{
yyVAL.colIdent = yyDollar[1].colIdent
}
- case 557:
+ case 592:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2936
+//line sql.y:3110
{
yyVAL.colIdent = yyDollar[2].colIdent
}
- case 559:
+ case 594:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2943
+//line sql.y:3117
{
- yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes))
+ yyVAL.colIdent = NewColIdent(string(yyDollar[1].str))
}
- case 560:
+ case 595:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:2948
+ var yyLOCAL TableExprs
+//line sql.y:3122
{
- yyVAL.tableExprs = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}}
+ yyLOCAL = TableExprs{&AliasedTableExpr{Expr: TableName{Name: NewTableIdent("dual")}}}
}
- case 561:
+ yyVAL.union = yyLOCAL
+ case 596:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:2952
+ var yyLOCAL TableExprs
+//line sql.y:3126
{
- yyVAL.tableExprs = yyDollar[2].tableExprs
+ yyLOCAL = yyDollar[2].tableExprsUnion()
}
- case 562:
+ yyVAL.union = yyLOCAL
+ case 597:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2958
+ var yyLOCAL TableExprs
+//line sql.y:3132
{
- yyVAL.tableExprs = TableExprs{yyDollar[1].tableExpr}
+ yyLOCAL = TableExprs{yyDollar[1].tableExprUnion()}
}
- case 563:
+ yyVAL.union = yyLOCAL
+ case 598:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2962
+//line sql.y:3136
{
- yyVAL.tableExprs = append(yyVAL.tableExprs, yyDollar[3].tableExpr)
+ yySLICE := (*TableExprs)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[3].tableExprUnion())
}
- case 566:
+ case 601:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:2972
+ var yyLOCAL TableExpr
+//line sql.y:3146
{
- yyVAL.tableExpr = yyDollar[1].aliasedTableName
+ yyLOCAL = yyDollar[1].aliasedTableNameUnion()
}
- case 567:
+ yyVAL.union = yyLOCAL
+ case 602:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2976
+ var yyLOCAL TableExpr
+//line sql.y:3150
{
- yyVAL.tableExpr = &AliasedTableExpr{Expr: yyDollar[1].derivedTable, As: yyDollar[3].tableIdent}
+ yyLOCAL = &AliasedTableExpr{Expr: yyDollar[1].derivedTableUnion(), As: yyDollar[3].tableIdent}
}
- case 568:
+ yyVAL.union = yyLOCAL
+ case 603:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2980
+ var yyLOCAL TableExpr
+//line sql.y:3154
{
- yyVAL.tableExpr = &ParenTableExpr{Exprs: yyDollar[2].tableExprs}
+ yyLOCAL = &ParenTableExpr{Exprs: yyDollar[2].tableExprsUnion()}
}
- case 569:
+ yyVAL.union = yyLOCAL
+ case 604:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2986
+ var yyLOCAL *DerivedTable
+//line sql.y:3160
{
- yyVAL.derivedTable = &DerivedTable{yyDollar[2].selStmt}
+ yyLOCAL = &DerivedTable{yyDollar[2].selStmtUnion()}
}
- case 570:
+ yyVAL.union = yyLOCAL
+ case 605:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:2992
+ var yyLOCAL *AliasedTableExpr
+//line sql.y:3166
{
- yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHints}
+ yyLOCAL = &AliasedTableExpr{Expr: yyDollar[1].tableName, As: yyDollar[2].tableIdent, Hints: yyDollar[3].indexHintsUnion()}
}
- case 571:
+ yyVAL.union = yyLOCAL
+ case 606:
yyDollar = yyS[yypt-7 : yypt+1]
-//line sql.y:2996
+ var yyLOCAL *AliasedTableExpr
+//line sql.y:3170
{
- yyVAL.aliasedTableName = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitions, As: yyDollar[6].tableIdent, Hints: yyDollar[7].indexHints}
+ yyLOCAL = &AliasedTableExpr{Expr: yyDollar[1].tableName, Partitions: yyDollar[4].partitionsUnion(), As: yyDollar[6].tableIdent, Hints: yyDollar[7].indexHintsUnion()}
}
- case 572:
+ yyVAL.union = yyLOCAL
+ case 607:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:3001
+ var yyLOCAL Columns
+//line sql.y:3175
{
- yyVAL.columns = nil
+ yyLOCAL = nil
}
- case 573:
+ yyVAL.union = yyLOCAL
+ case 608:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3005
+ var yyLOCAL Columns
+//line sql.y:3179
{
- yyVAL.columns = yyDollar[2].columns
+ yyLOCAL = yyDollar[2].columnsUnion()
}
- case 574:
+ yyVAL.union = yyLOCAL
+ case 609:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3011
+ var yyLOCAL Columns
+//line sql.y:3185
{
- yyVAL.columns = Columns{yyDollar[1].colIdent}
+ yyLOCAL = Columns{yyDollar[1].colIdent}
}
- case 575:
+ yyVAL.union = yyLOCAL
+ case 610:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3015
+//line sql.y:3189
{
- yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent)
+ yySLICE := (*Columns)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[3].colIdent)
}
- case 576:
+ case 611:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3021
+ var yyLOCAL Columns
+//line sql.y:3195
{
- yyVAL.columns = Columns{yyDollar[1].colIdent}
+ yyLOCAL = Columns{yyDollar[1].colIdent}
}
- case 577:
+ yyVAL.union = yyLOCAL
+ case 612:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3025
+ var yyLOCAL Columns
+//line sql.y:3199
{
- yyVAL.columns = Columns{NewColIdent(string(yyDollar[1].bytes))}
+ yyLOCAL = Columns{NewColIdent(string(yyDollar[1].str))}
}
- case 578:
+ yyVAL.union = yyLOCAL
+ case 613:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3029
+//line sql.y:3203
{
- yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent)
+ yySLICE := (*Columns)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[3].colIdent)
}
- case 579:
+ case 614:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3033
+//line sql.y:3207
{
- yyVAL.columns = append(yyVAL.columns, NewColIdent(string(yyDollar[3].bytes)))
+ yySLICE := (*Columns)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, NewColIdent(string(yyDollar[3].str)))
}
- case 580:
+ case 615:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3039
+ var yyLOCAL Partitions
+//line sql.y:3213
{
- yyVAL.partitions = Partitions{yyDollar[1].colIdent}
+ yyLOCAL = Partitions{yyDollar[1].colIdent}
}
- case 581:
+ yyVAL.union = yyLOCAL
+ case 616:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3043
+//line sql.y:3217
{
- yyVAL.partitions = append(yyVAL.partitions, yyDollar[3].colIdent)
+ yySLICE := (*Partitions)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[3].colIdent)
}
- case 582:
+ case 617:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:3056
+ var yyLOCAL TableExpr
+//line sql.y:3230
{
- yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition}
+ yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion(), Condition: yyDollar[4].joinCondition}
}
- case 583:
+ yyVAL.union = yyLOCAL
+ case 618:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:3060
+ var yyLOCAL TableExpr
+//line sql.y:3234
{
- yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition}
+ yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion(), Condition: yyDollar[4].joinCondition}
}
- case 584:
+ yyVAL.union = yyLOCAL
+ case 619:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:3064
+ var yyLOCAL TableExpr
+//line sql.y:3238
{
- yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr, Condition: yyDollar[4].joinCondition}
+ yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion(), Condition: yyDollar[4].joinCondition}
}
- case 585:
+ yyVAL.union = yyLOCAL
+ case 620:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3068
+ var yyLOCAL TableExpr
+//line sql.y:3242
{
- yyVAL.tableExpr = &JoinTableExpr{LeftExpr: yyDollar[1].tableExpr, Join: yyDollar[2].joinType, RightExpr: yyDollar[3].tableExpr}
+ yyLOCAL = &JoinTableExpr{LeftExpr: yyDollar[1].tableExprUnion(), Join: yyDollar[2].joinTypeUnion(), RightExpr: yyDollar[3].tableExprUnion()}
}
- case 586:
+ yyVAL.union = yyLOCAL
+ case 621:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3074
+//line sql.y:3248
{
- yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr}
+ yyVAL.joinCondition = JoinCondition{On: yyDollar[2].exprUnion()}
}
- case 587:
+ case 622:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:3076
+//line sql.y:3250
{
- yyVAL.joinCondition = JoinCondition{Using: yyDollar[3].columns}
+ yyVAL.joinCondition = JoinCondition{Using: yyDollar[3].columnsUnion()}
}
- case 588:
+ case 623:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:3080
+//line sql.y:3254
{
yyVAL.joinCondition = JoinCondition{}
}
- case 589:
+ case 624:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3082
+//line sql.y:3256
{
yyVAL.joinCondition = yyDollar[1].joinCondition
}
- case 590:
+ case 625:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:3086
+//line sql.y:3260
{
yyVAL.joinCondition = JoinCondition{}
}
- case 591:
+ case 626:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3088
+//line sql.y:3262
{
- yyVAL.joinCondition = JoinCondition{On: yyDollar[2].expr}
+ yyVAL.joinCondition = JoinCondition{On: yyDollar[2].exprUnion()}
}
- case 592:
+ case 627:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:3091
+//line sql.y:3265
{
yyVAL.empty = struct{}{}
}
- case 593:
+ case 628:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3093
+//line sql.y:3267
{
yyVAL.empty = struct{}{}
}
- case 594:
+ case 629:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:3096
+//line sql.y:3270
{
yyVAL.tableIdent = NewTableIdent("")
}
- case 595:
+ case 630:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3100
+//line sql.y:3274
{
yyVAL.tableIdent = yyDollar[1].tableIdent
}
- case 596:
+ case 631:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3104
+//line sql.y:3278
{
yyVAL.tableIdent = yyDollar[2].tableIdent
}
- case 598:
+ case 633:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3111
+//line sql.y:3285
{
- yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes))
+ yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].str))
}
- case 599:
+ case 634:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3117
+ var yyLOCAL JoinType
+//line sql.y:3291
{
- yyVAL.joinType = NormalJoinType
+ yyLOCAL = NormalJoinType
}
- case 600:
+ yyVAL.union = yyLOCAL
+ case 635:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3121
+ var yyLOCAL JoinType
+//line sql.y:3295
{
- yyVAL.joinType = NormalJoinType
+ yyLOCAL = NormalJoinType
}
- case 601:
+ yyVAL.union = yyLOCAL
+ case 636:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3125
+ var yyLOCAL JoinType
+//line sql.y:3299
{
- yyVAL.joinType = NormalJoinType
+ yyLOCAL = NormalJoinType
}
- case 602:
+ yyVAL.union = yyLOCAL
+ case 637:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3131
+ var yyLOCAL JoinType
+//line sql.y:3305
{
- yyVAL.joinType = StraightJoinType
+ yyLOCAL = StraightJoinType
}
- case 603:
+ yyVAL.union = yyLOCAL
+ case 638:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3137
+ var yyLOCAL JoinType
+//line sql.y:3311
{
- yyVAL.joinType = LeftJoinType
+ yyLOCAL = LeftJoinType
}
- case 604:
+ yyVAL.union = yyLOCAL
+ case 639:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3141
+ var yyLOCAL JoinType
+//line sql.y:3315
{
- yyVAL.joinType = LeftJoinType
+ yyLOCAL = LeftJoinType
}
- case 605:
+ yyVAL.union = yyLOCAL
+ case 640:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3145
+ var yyLOCAL JoinType
+//line sql.y:3319
{
- yyVAL.joinType = RightJoinType
+ yyLOCAL = RightJoinType
}
- case 606:
+ yyVAL.union = yyLOCAL
+ case 641:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3149
+ var yyLOCAL JoinType
+//line sql.y:3323
{
- yyVAL.joinType = RightJoinType
+ yyLOCAL = RightJoinType
}
- case 607:
+ yyVAL.union = yyLOCAL
+ case 642:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3155
+ var yyLOCAL JoinType
+//line sql.y:3329
{
- yyVAL.joinType = NaturalJoinType
+ yyLOCAL = NaturalJoinType
}
- case 608:
+ yyVAL.union = yyLOCAL
+ case 643:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3159
+ var yyLOCAL JoinType
+//line sql.y:3333
{
- if yyDollar[2].joinType == LeftJoinType {
- yyVAL.joinType = NaturalLeftJoinType
+ if yyDollar[2].joinTypeUnion() == LeftJoinType {
+ yyLOCAL = NaturalLeftJoinType
} else {
- yyVAL.joinType = NaturalRightJoinType
+ yyLOCAL = NaturalRightJoinType
}
}
- case 609:
+ yyVAL.union = yyLOCAL
+ case 644:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3169
+//line sql.y:3343
{
yyVAL.tableName = yyDollar[2].tableName
}
- case 610:
+ case 645:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3173
+//line sql.y:3347
{
yyVAL.tableName = yyDollar[1].tableName
}
- case 611:
+ case 646:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3179
+//line sql.y:3353
{
yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent}
}
- case 612:
+ case 647:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3183
+//line sql.y:3357
{
yyVAL.tableName = TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}
}
- case 613:
+ case 648:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3189
+//line sql.y:3363
{
yyVAL.tableName = TableName{Name: yyDollar[1].tableIdent}
}
- case 614:
+ case 649:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:3194
+ var yyLOCAL *IndexHints
+//line sql.y:3368
{
- yyVAL.indexHints = nil
+ yyLOCAL = nil
}
- case 615:
+ yyVAL.union = yyLOCAL
+ case 650:
yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:3198
+ var yyLOCAL *IndexHints
+//line sql.y:3372
{
- yyVAL.indexHints = &IndexHints{Type: UseOp, Indexes: yyDollar[4].columns}
+ yyLOCAL = &IndexHints{Type: UseOp, Indexes: yyDollar[4].columnsUnion()}
}
- case 616:
+ yyVAL.union = yyLOCAL
+ case 651:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:3202
+ var yyLOCAL *IndexHints
+//line sql.y:3376
{
- yyVAL.indexHints = &IndexHints{Type: UseOp}
+ yyLOCAL = &IndexHints{Type: UseOp}
}
- case 617:
+ yyVAL.union = yyLOCAL
+ case 652:
yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:3206
+ var yyLOCAL *IndexHints
+//line sql.y:3380
{
- yyVAL.indexHints = &IndexHints{Type: IgnoreOp, Indexes: yyDollar[4].columns}
+ yyLOCAL = &IndexHints{Type: IgnoreOp, Indexes: yyDollar[4].columnsUnion()}
}
- case 618:
+ yyVAL.union = yyLOCAL
+ case 653:
yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:3210
+ var yyLOCAL *IndexHints
+//line sql.y:3384
{
- yyVAL.indexHints = &IndexHints{Type: ForceOp, Indexes: yyDollar[4].columns}
+ yyLOCAL = &IndexHints{Type: ForceOp, Indexes: yyDollar[4].columnsUnion()}
}
- case 619:
+ yyVAL.union = yyLOCAL
+ case 654:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:3215
+ var yyLOCAL Expr
+//line sql.y:3389
{
- yyVAL.expr = nil
+ yyLOCAL = nil
}
- case 620:
+ yyVAL.union = yyLOCAL
+ case 655:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3219
+ var yyLOCAL Expr
+//line sql.y:3393
{
- yyVAL.expr = yyDollar[2].expr
+ yyLOCAL = yyDollar[2].exprUnion()
}
- case 621:
+ yyVAL.union = yyLOCAL
+ case 656:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3225
+ var yyLOCAL Expr
+//line sql.y:3399
{
- yyVAL.expr = yyDollar[1].expr
+ yyLOCAL = yyDollar[1].exprUnion()
}
- case 622:
+ yyVAL.union = yyLOCAL
+ case 657:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3229
+ var yyLOCAL Expr
+//line sql.y:3403
{
- yyVAL.expr = &AndExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr}
+ yyLOCAL = &AndExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].exprUnion()}
}
- case 623:
+ yyVAL.union = yyLOCAL
+ case 658:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3233
+ var yyLOCAL Expr
+//line sql.y:3407
{
- yyVAL.expr = &OrExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr}
+ yyLOCAL = &OrExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].exprUnion()}
}
- case 624:
+ yyVAL.union = yyLOCAL
+ case 659:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3237
+ var yyLOCAL Expr
+//line sql.y:3411
{
- yyVAL.expr = &XorExpr{Left: yyDollar[1].expr, Right: yyDollar[3].expr}
+ yyLOCAL = &XorExpr{Left: yyDollar[1].exprUnion(), Right: yyDollar[3].exprUnion()}
}
- case 625:
+ yyVAL.union = yyLOCAL
+ case 660:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3241
+ var yyLOCAL Expr
+//line sql.y:3415
{
- yyVAL.expr = &NotExpr{Expr: yyDollar[2].expr}
+ yyLOCAL = &NotExpr{Expr: yyDollar[2].exprUnion()}
}
- case 626:
+ yyVAL.union = yyLOCAL
+ case 661:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3245
+ var yyLOCAL Expr
+//line sql.y:3419
{
- yyVAL.expr = &IsExpr{Operator: yyDollar[3].isExprOperator, Expr: yyDollar[1].expr}
+ yyLOCAL = &IsExpr{Operator: yyDollar[3].isExprOperatorUnion(), Expr: yyDollar[1].exprUnion()}
}
- case 627:
+ yyVAL.union = yyLOCAL
+ case 662:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3249
+ var yyLOCAL Expr
+//line sql.y:3423
{
- yyVAL.expr = yyDollar[1].expr
+ yyLOCAL = yyDollar[1].exprUnion()
}
- case 628:
+ yyVAL.union = yyLOCAL
+ case 663:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3253
+ var yyLOCAL Expr
+//line sql.y:3427
{
- yyVAL.expr = &Default{ColName: yyDollar[2].str}
+ yyLOCAL = &Default{ColName: yyDollar[2].str}
}
- case 629:
+ yyVAL.union = yyLOCAL
+ case 664:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:3259
+//line sql.y:3433
{
yyVAL.str = ""
}
- case 630:
+ case 665:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3263
+//line sql.y:3437
{
yyVAL.str = string(yyDollar[2].colIdent.String())
}
- case 631:
+ case 666:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3269
+ var yyLOCAL BoolVal
+//line sql.y:3443
{
- yyVAL.boolVal = BoolVal(true)
+ yyLOCAL = BoolVal(true)
}
- case 632:
+ yyVAL.union = yyLOCAL
+ case 667:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3273
+ var yyLOCAL BoolVal
+//line sql.y:3447
{
- yyVAL.boolVal = BoolVal(false)
+ yyLOCAL = BoolVal(false)
}
- case 633:
+ yyVAL.union = yyLOCAL
+ case 668:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3279
+ var yyLOCAL Expr
+//line sql.y:3453
{
- yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: yyDollar[2].comparisonExprOperator, Right: yyDollar[3].expr}
+ yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: yyDollar[2].comparisonExprOperatorUnion(), Right: yyDollar[3].exprUnion()}
}
- case 634:
+ yyVAL.union = yyLOCAL
+ case 669:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3283
+ var yyLOCAL Expr
+//line sql.y:3457
{
- yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: InOp, Right: yyDollar[3].colTuple}
+ yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: InOp, Right: yyDollar[3].colTupleUnion()}
}
- case 635:
+ yyVAL.union = yyLOCAL
+ case 670:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:3287
+ var yyLOCAL Expr
+//line sql.y:3461
{
- yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotInOp, Right: yyDollar[4].colTuple}
+ yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotInOp, Right: yyDollar[4].colTupleUnion()}
}
- case 636:
+ yyVAL.union = yyLOCAL
+ case 671:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:3291
+ var yyLOCAL Expr
+//line sql.y:3465
{
- yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: LikeOp, Right: yyDollar[3].expr, Escape: yyDollar[4].expr}
+ yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: LikeOp, Right: yyDollar[3].exprUnion(), Escape: yyDollar[4].exprUnion()}
}
- case 637:
+ yyVAL.union = yyLOCAL
+ case 672:
yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:3295
+ var yyLOCAL Expr
+//line sql.y:3469
{
- yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotLikeOp, Right: yyDollar[4].expr, Escape: yyDollar[5].expr}
+ yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotLikeOp, Right: yyDollar[4].exprUnion(), Escape: yyDollar[5].exprUnion()}
}
- case 638:
+ yyVAL.union = yyLOCAL
+ case 673:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3299
+ var yyLOCAL Expr
+//line sql.y:3473
{
- yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: RegexpOp, Right: yyDollar[3].expr}
+ yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: RegexpOp, Right: yyDollar[3].exprUnion()}
}
- case 639:
+ yyVAL.union = yyLOCAL
+ case 674:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:3303
+ var yyLOCAL Expr
+//line sql.y:3477
{
- yyVAL.expr = &ComparisonExpr{Left: yyDollar[1].expr, Operator: NotRegexpOp, Right: yyDollar[4].expr}
+ yyLOCAL = &ComparisonExpr{Left: yyDollar[1].exprUnion(), Operator: NotRegexpOp, Right: yyDollar[4].exprUnion()}
}
- case 640:
+ yyVAL.union = yyLOCAL
+ case 675:
yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:3307
+ var yyLOCAL Expr
+//line sql.y:3481
{
- yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: BetweenOp, From: yyDollar[3].expr, To: yyDollar[5].expr}
+ yyLOCAL = &RangeCond{Left: yyDollar[1].exprUnion(), Operator: BetweenOp, From: yyDollar[3].exprUnion(), To: yyDollar[5].exprUnion()}
}
- case 641:
+ yyVAL.union = yyLOCAL
+ case 676:
yyDollar = yyS[yypt-6 : yypt+1]
-//line sql.y:3311
+ var yyLOCAL Expr
+//line sql.y:3485
{
- yyVAL.expr = &RangeCond{Left: yyDollar[1].expr, Operator: NotBetweenOp, From: yyDollar[4].expr, To: yyDollar[6].expr}
+ yyLOCAL = &RangeCond{Left: yyDollar[1].exprUnion(), Operator: NotBetweenOp, From: yyDollar[4].exprUnion(), To: yyDollar[6].exprUnion()}
}
- case 642:
+ yyVAL.union = yyLOCAL
+ case 677:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3315
+ var yyLOCAL Expr
+//line sql.y:3489
{
- yyVAL.expr = &ExistsExpr{Subquery: yyDollar[2].subquery}
+ yyLOCAL = &ExistsExpr{Subquery: yyDollar[2].subqueryUnion()}
}
- case 643:
+ yyVAL.union = yyLOCAL
+ case 678:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3321
+ var yyLOCAL IsExprOperator
+//line sql.y:3495
{
- yyVAL.isExprOperator = IsNullOp
+ yyLOCAL = IsNullOp
}
- case 644:
+ yyVAL.union = yyLOCAL
+ case 679:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3325
+ var yyLOCAL IsExprOperator
+//line sql.y:3499
{
- yyVAL.isExprOperator = IsNotNullOp
+ yyLOCAL = IsNotNullOp
}
- case 645:
+ yyVAL.union = yyLOCAL
+ case 680:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3329
+ var yyLOCAL IsExprOperator
+//line sql.y:3503
{
- yyVAL.isExprOperator = IsTrueOp
+ yyLOCAL = IsTrueOp
}
- case 646:
+ yyVAL.union = yyLOCAL
+ case 681:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3333
+ var yyLOCAL IsExprOperator
+//line sql.y:3507
{
- yyVAL.isExprOperator = IsNotTrueOp
+ yyLOCAL = IsNotTrueOp
}
- case 647:
+ yyVAL.union = yyLOCAL
+ case 682:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3337
+ var yyLOCAL IsExprOperator
+//line sql.y:3511
{
- yyVAL.isExprOperator = IsFalseOp
+ yyLOCAL = IsFalseOp
}
- case 648:
+ yyVAL.union = yyLOCAL
+ case 683:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3341
+ var yyLOCAL IsExprOperator
+//line sql.y:3515
{
- yyVAL.isExprOperator = IsNotFalseOp
+ yyLOCAL = IsNotFalseOp
}
- case 649:
+ yyVAL.union = yyLOCAL
+ case 684:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3347
+ var yyLOCAL ComparisonExprOperator
+//line sql.y:3521
{
- yyVAL.comparisonExprOperator = EqualOp
+ yyLOCAL = EqualOp
}
- case 650:
+ yyVAL.union = yyLOCAL
+ case 685:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3351
+ var yyLOCAL ComparisonExprOperator
+//line sql.y:3525
{
- yyVAL.comparisonExprOperator = LessThanOp
+ yyLOCAL = LessThanOp
}
- case 651:
+ yyVAL.union = yyLOCAL
+ case 686:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3355
+ var yyLOCAL ComparisonExprOperator
+//line sql.y:3529
{
- yyVAL.comparisonExprOperator = GreaterThanOp
+ yyLOCAL = GreaterThanOp
}
- case 652:
+ yyVAL.union = yyLOCAL
+ case 687:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3359
+ var yyLOCAL ComparisonExprOperator
+//line sql.y:3533
{
- yyVAL.comparisonExprOperator = LessEqualOp
+ yyLOCAL = LessEqualOp
}
- case 653:
+ yyVAL.union = yyLOCAL
+ case 688:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3363
+ var yyLOCAL ComparisonExprOperator
+//line sql.y:3537
{
- yyVAL.comparisonExprOperator = GreaterEqualOp
+ yyLOCAL = GreaterEqualOp
}
- case 654:
+ yyVAL.union = yyLOCAL
+ case 689:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3367
+ var yyLOCAL ComparisonExprOperator
+//line sql.y:3541
{
- yyVAL.comparisonExprOperator = NotEqualOp
+ yyLOCAL = NotEqualOp
}
- case 655:
+ yyVAL.union = yyLOCAL
+ case 690:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3371
+ var yyLOCAL ComparisonExprOperator
+//line sql.y:3545
{
- yyVAL.comparisonExprOperator = NullSafeEqualOp
+ yyLOCAL = NullSafeEqualOp
}
- case 656:
+ yyVAL.union = yyLOCAL
+ case 691:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:3376
+ var yyLOCAL Expr
+//line sql.y:3550
{
- yyVAL.expr = nil
+ yyLOCAL = nil
}
- case 657:
+ yyVAL.union = yyLOCAL
+ case 692:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3380
+ var yyLOCAL Expr
+//line sql.y:3554
{
- yyVAL.expr = yyDollar[2].expr
+ yyLOCAL = yyDollar[2].exprUnion()
}
- case 658:
+ yyVAL.union = yyLOCAL
+ case 693:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3386
+ var yyLOCAL ColTuple
+//line sql.y:3560
{
- yyVAL.colTuple = yyDollar[1].valTuple
+ yyLOCAL = yyDollar[1].valTupleUnion()
}
- case 659:
+ yyVAL.union = yyLOCAL
+ case 694:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3390
+ var yyLOCAL ColTuple
+//line sql.y:3564
{
- yyVAL.colTuple = yyDollar[1].subquery
+ yyLOCAL = yyDollar[1].subqueryUnion()
}
- case 660:
+ yyVAL.union = yyLOCAL
+ case 695:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3394
+ var yyLOCAL ColTuple
+//line sql.y:3568
{
- yyVAL.colTuple = ListArg(yyDollar[1].bytes)
+ yyLOCAL = ListArg(yyDollar[1].str)
+ bindVariable(yylex, yyDollar[1].str[2:])
}
- case 661:
+ yyVAL.union = yyLOCAL
+ case 696:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3400
+ var yyLOCAL *Subquery
+//line sql.y:3575
{
- yyVAL.subquery = &Subquery{yyDollar[2].selStmt}
+ yyLOCAL = &Subquery{yyDollar[2].selStmtUnion()}
}
- case 662:
+ yyVAL.union = yyLOCAL
+ case 697:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3406
+ var yyLOCAL Exprs
+//line sql.y:3581
{
- yyVAL.exprs = Exprs{yyDollar[1].expr}
+ yyLOCAL = Exprs{yyDollar[1].exprUnion()}
}
- case 663:
+ yyVAL.union = yyLOCAL
+ case 698:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3410
+//line sql.y:3585
{
- yyVAL.exprs = append(yyDollar[1].exprs, yyDollar[3].expr)
+ yySLICE := (*Exprs)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[3].exprUnion())
}
- case 664:
+ case 699:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3416
+ var yyLOCAL Expr
+//line sql.y:3591
{
- yyVAL.expr = yyDollar[1].expr
+ yyLOCAL = yyDollar[1].exprUnion()
}
- case 665:
+ yyVAL.union = yyLOCAL
+ case 700:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3420
+ var yyLOCAL Expr
+//line sql.y:3595
{
- yyVAL.expr = yyDollar[1].boolVal
+ yyLOCAL = yyDollar[1].boolValUnion()
}
- case 666:
+ yyVAL.union = yyLOCAL
+ case 701:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3424
+ var yyLOCAL Expr
+//line sql.y:3599
{
- yyVAL.expr = yyDollar[1].colName
+ yyLOCAL = yyDollar[1].colNameUnion()
}
- case 667:
+ yyVAL.union = yyLOCAL
+ case 702:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3428
+ var yyLOCAL Expr
+//line sql.y:3603
{
- yyVAL.expr = yyDollar[1].expr
+ yyLOCAL = yyDollar[1].exprUnion()
}
- case 668:
+ yyVAL.union = yyLOCAL
+ case 703:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3432
+ var yyLOCAL Expr
+//line sql.y:3607
{
- yyVAL.expr = yyDollar[1].subquery
+ yyLOCAL = yyDollar[1].subqueryUnion()
}
- case 669:
+ yyVAL.union = yyLOCAL
+ case 704:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3436
+ var yyLOCAL Expr
+//line sql.y:3611
{
- yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitAndOp, Right: yyDollar[3].expr}
+ yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitAndOp, Right: yyDollar[3].exprUnion()}
}
- case 670:
+ yyVAL.union = yyLOCAL
+ case 705:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3440
+ var yyLOCAL Expr
+//line sql.y:3615
{
- yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitOrOp, Right: yyDollar[3].expr}
+ yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitOrOp, Right: yyDollar[3].exprUnion()}
}
- case 671:
+ yyVAL.union = yyLOCAL
+ case 706:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3444
+ var yyLOCAL Expr
+//line sql.y:3619
{
- yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: BitXorOp, Right: yyDollar[3].expr}
+ yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: BitXorOp, Right: yyDollar[3].exprUnion()}
}
- case 672:
+ yyVAL.union = yyLOCAL
+ case 707:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3448
+ var yyLOCAL Expr
+//line sql.y:3623
{
- yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: PlusOp, Right: yyDollar[3].expr}
+ yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: PlusOp, Right: yyDollar[3].exprUnion()}
}
- case 673:
+ yyVAL.union = yyLOCAL
+ case 708:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3452
+ var yyLOCAL Expr
+//line sql.y:3627
{
- yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MinusOp, Right: yyDollar[3].expr}
+ yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: MinusOp, Right: yyDollar[3].exprUnion()}
}
- case 674:
+ yyVAL.union = yyLOCAL
+ case 709:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3456
+ var yyLOCAL Expr
+//line sql.y:3631
{
- yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: MultOp, Right: yyDollar[3].expr}
+ yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: MultOp, Right: yyDollar[3].exprUnion()}
}
- case 675:
+ yyVAL.union = yyLOCAL
+ case 710:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3460
+ var yyLOCAL Expr
+//line sql.y:3635
{
- yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: DivOp, Right: yyDollar[3].expr}
+ yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: DivOp, Right: yyDollar[3].exprUnion()}
}
- case 676:
+ yyVAL.union = yyLOCAL
+ case 711:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3464
+ var yyLOCAL Expr
+//line sql.y:3639
{
- yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: IntDivOp, Right: yyDollar[3].expr}
+ yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: IntDivOp, Right: yyDollar[3].exprUnion()}
}
- case 677:
+ yyVAL.union = yyLOCAL
+ case 712:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3468
+ var yyLOCAL Expr
+//line sql.y:3643
{
- yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModOp, Right: yyDollar[3].expr}
+ yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ModOp, Right: yyDollar[3].exprUnion()}
}
- case 678:
+ yyVAL.union = yyLOCAL
+ case 713:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3472
+ var yyLOCAL Expr
+//line sql.y:3647
{
- yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ModOp, Right: yyDollar[3].expr}
+ yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ModOp, Right: yyDollar[3].exprUnion()}
}
- case 679:
+ yyVAL.union = yyLOCAL
+ case 714:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3476
+ var yyLOCAL Expr
+//line sql.y:3651
{
- yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftLeftOp, Right: yyDollar[3].expr}
+ yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ShiftLeftOp, Right: yyDollar[3].exprUnion()}
}
- case 680:
+ yyVAL.union = yyLOCAL
+ case 715:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3480
+ var yyLOCAL Expr
+//line sql.y:3655
{
- yyVAL.expr = &BinaryExpr{Left: yyDollar[1].expr, Operator: ShiftRightOp, Right: yyDollar[3].expr}
+ yyLOCAL = &BinaryExpr{Left: yyDollar[1].exprUnion(), Operator: ShiftRightOp, Right: yyDollar[3].exprUnion()}
}
- case 681:
+ yyVAL.union = yyLOCAL
+ case 716:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3484
+ var yyLOCAL Expr
+//line sql.y:3659
{
- yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONExtractOp, Right: yyDollar[3].expr}
+ yyLOCAL = &BinaryExpr{Left: yyDollar[1].colNameUnion(), Operator: JSONExtractOp, Right: yyDollar[3].exprUnion()}
}
- case 682:
+ yyVAL.union = yyLOCAL
+ case 717:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3488
+ var yyLOCAL Expr
+//line sql.y:3663
{
- yyVAL.expr = &BinaryExpr{Left: yyDollar[1].colName, Operator: JSONUnquoteExtractOp, Right: yyDollar[3].expr}
+ yyLOCAL = &BinaryExpr{Left: yyDollar[1].colNameUnion(), Operator: JSONUnquoteExtractOp, Right: yyDollar[3].exprUnion()}
}
- case 683:
+ yyVAL.union = yyLOCAL
+ case 718:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3492
+ var yyLOCAL Expr
+//line sql.y:3667
{
- yyVAL.expr = &CollateExpr{Expr: yyDollar[1].expr, Charset: yyDollar[3].str}
+ yyLOCAL = &CollateExpr{Expr: yyDollar[1].exprUnion(), Charset: yyDollar[3].str}
}
- case 684:
+ yyVAL.union = yyLOCAL
+ case 719:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3496
+ var yyLOCAL Expr
+//line sql.y:3671
{
- yyVAL.expr = &UnaryExpr{Operator: BinaryOp, Expr: yyDollar[2].expr}
+ yyLOCAL = &UnaryExpr{Operator: BinaryOp, Expr: yyDollar[2].exprUnion()}
}
- case 685:
+ yyVAL.union = yyLOCAL
+ case 720:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3500
+ var yyLOCAL Expr
+//line sql.y:3675
{
- yyVAL.expr = &UnaryExpr{Operator: UBinaryOp, Expr: yyDollar[2].expr}
+ yyLOCAL = &UnaryExpr{Operator: UBinaryOp, Expr: yyDollar[2].exprUnion()}
}
- case 686:
+ yyVAL.union = yyLOCAL
+ case 721:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3504
+ var yyLOCAL Expr
+//line sql.y:3679
{
- yyVAL.expr = &UnaryExpr{Operator: Utf8Op, Expr: yyDollar[2].expr}
+ yyLOCAL = &UnaryExpr{Operator: Utf8Op, Expr: yyDollar[2].exprUnion()}
}
- case 687:
+ yyVAL.union = yyLOCAL
+ case 722:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3508
+ var yyLOCAL Expr
+//line sql.y:3683
{
- yyVAL.expr = &UnaryExpr{Operator: Utf8mb4Op, Expr: yyDollar[2].expr}
+ yyLOCAL = &UnaryExpr{Operator: Utf8mb4Op, Expr: yyDollar[2].exprUnion()}
}
- case 688:
+ yyVAL.union = yyLOCAL
+ case 723:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3512
+ var yyLOCAL Expr
+//line sql.y:3687
{
- yyVAL.expr = &UnaryExpr{Operator: Latin1Op, Expr: yyDollar[2].expr}
+ yyLOCAL = &UnaryExpr{Operator: Latin1Op, Expr: yyDollar[2].exprUnion()}
}
- case 689:
+ yyVAL.union = yyLOCAL
+ case 724:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3516
+ var yyLOCAL Expr
+//line sql.y:3691
{
- if num, ok := yyDollar[2].expr.(*Literal); ok && num.Type == IntVal {
- yyVAL.expr = num
- } else {
- yyVAL.expr = &UnaryExpr{Operator: UPlusOp, Expr: yyDollar[2].expr}
- }
+ yyLOCAL = yyDollar[2].exprUnion()
}
- case 690:
+ yyVAL.union = yyLOCAL
+ case 725:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3524
+ var yyLOCAL Expr
+//line sql.y:3695
{
- if num, ok := yyDollar[2].expr.(*Literal); ok && num.Type == IntVal {
- // Handle double negative
- if num.Val[0] == '-' {
- num.Val = num.Val[1:]
- yyVAL.expr = num
- } else {
- yyVAL.expr = NewIntLiteral(append([]byte("-"), num.Val...))
- }
- } else {
- yyVAL.expr = &UnaryExpr{Operator: UMinusOp, Expr: yyDollar[2].expr}
- }
+ yyLOCAL = handleUnaryMinus(yyDollar[2].exprUnion())
}
- case 691:
+ yyVAL.union = yyLOCAL
+ case 726:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3538
+ var yyLOCAL Expr
+//line sql.y:3699
{
- yyVAL.expr = &UnaryExpr{Operator: TildaOp, Expr: yyDollar[2].expr}
+ yyLOCAL = &UnaryExpr{Operator: TildaOp, Expr: yyDollar[2].exprUnion()}
}
- case 692:
+ yyVAL.union = yyLOCAL
+ case 727:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3542
+ var yyLOCAL Expr
+//line sql.y:3703
{
- yyVAL.expr = &UnaryExpr{Operator: BangOp, Expr: yyDollar[2].expr}
+ yyLOCAL = &UnaryExpr{Operator: BangOp, Expr: yyDollar[2].exprUnion()}
}
- case 693:
+ yyVAL.union = yyLOCAL
+ case 728:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3546
+ var yyLOCAL Expr
+//line sql.y:3707
{
// This rule prevents the usage of INTERVAL
// as a function. If support is needed for that,
// we'll need to revisit this. The solution
// will be non-trivial because of grammar conflicts.
- yyVAL.expr = &IntervalExpr{Expr: yyDollar[2].expr, Unit: yyDollar[3].colIdent.String()}
+ yyLOCAL = &IntervalExpr{Expr: yyDollar[2].exprUnion(), Unit: yyDollar[3].colIdent.String()}
}
- case 698:
+ yyVAL.union = yyLOCAL
+ case 733:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:3564
+ var yyLOCAL Expr
+//line sql.y:3725
{
- yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprs}
+ yyLOCAL = &FuncExpr{Name: yyDollar[1].colIdent, Exprs: yyDollar[3].selectExprsUnion()}
}
- case 699:
+ yyVAL.union = yyLOCAL
+ case 734:
yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:3568
+ var yyLOCAL Expr
+//line sql.y:3729
{
- yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs}
+ yyLOCAL = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprsUnion()}
}
- case 700:
+ yyVAL.union = yyLOCAL
+ case 735:
yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:3572
+ var yyLOCAL Expr
+//line sql.y:3733
{
- yyVAL.expr = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprs}
+ yyLOCAL = &FuncExpr{Name: yyDollar[1].colIdent, Distinct: true, Exprs: yyDollar[4].selectExprsUnion()}
}
- case 701:
+ yyVAL.union = yyLOCAL
+ case 736:
yyDollar = yyS[yypt-6 : yypt+1]
-//line sql.y:3576
+ var yyLOCAL Expr
+//line sql.y:3737
{
- yyVAL.expr = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprs}
+ yyLOCAL = &FuncExpr{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].colIdent, Exprs: yyDollar[5].selectExprsUnion()}
}
- case 702:
+ yyVAL.union = yyLOCAL
+ case 737:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:3586
+ var yyLOCAL Expr
+//line sql.y:3747
{
- yyVAL.expr = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprs}
+ yyLOCAL = &FuncExpr{Name: NewColIdent("left"), Exprs: yyDollar[3].selectExprsUnion()}
}
- case 703:
+ yyVAL.union = yyLOCAL
+ case 738:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:3590
+ var yyLOCAL Expr
+//line sql.y:3751
{
- yyVAL.expr = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprs}
+ yyLOCAL = &FuncExpr{Name: NewColIdent("right"), Exprs: yyDollar[3].selectExprsUnion()}
}
- case 704:
+ yyVAL.union = yyLOCAL
+ case 739:
yyDollar = yyS[yypt-6 : yypt+1]
-//line sql.y:3594
+ var yyLOCAL Expr
+//line sql.y:3755
{
- yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType}
+ yyLOCAL = &ConvertExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].convertTypeUnion()}
}
- case 705:
+ yyVAL.union = yyLOCAL
+ case 740:
yyDollar = yyS[yypt-6 : yypt+1]
-//line sql.y:3598
+ var yyLOCAL Expr
+//line sql.y:3759
{
- yyVAL.expr = &ConvertExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].convertType}
+ yyLOCAL = &ConvertExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].convertTypeUnion()}
}
- case 706:
+ yyVAL.union = yyLOCAL
+ case 741:
yyDollar = yyS[yypt-6 : yypt+1]
-//line sql.y:3602
+ var yyLOCAL Expr
+//line sql.y:3763
{
- yyVAL.expr = &ConvertUsingExpr{Expr: yyDollar[3].expr, Type: yyDollar[5].str}
+ yyLOCAL = &ConvertUsingExpr{Expr: yyDollar[3].exprUnion(), Type: yyDollar[5].str}
}
- case 707:
+ yyVAL.union = yyLOCAL
+ case 742:
yyDollar = yyS[yypt-8 : yypt+1]
-//line sql.y:3606
+ var yyLOCAL Expr
+//line sql.y:3767
{
- yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr}
+ yyLOCAL = &SubstrExpr{Name: yyDollar[3].colNameUnion(), From: yyDollar[5].exprUnion(), To: yyDollar[7].exprUnion()}
}
- case 708:
+ yyVAL.union = yyLOCAL
+ case 743:
yyDollar = yyS[yypt-8 : yypt+1]
-//line sql.y:3610
+ var yyLOCAL Expr
+//line sql.y:3771
{
- yyVAL.expr = &SubstrExpr{Name: yyDollar[3].colName, From: yyDollar[5].expr, To: yyDollar[7].expr}
+ yyLOCAL = &SubstrExpr{Name: yyDollar[3].colNameUnion(), From: yyDollar[5].exprUnion(), To: yyDollar[7].exprUnion()}
}
- case 709:
+ yyVAL.union = yyLOCAL
+ case 744:
yyDollar = yyS[yypt-8 : yypt+1]
-//line sql.y:3614
+ var yyLOCAL Expr
+//line sql.y:3775
{
- yyVAL.expr = &SubstrExpr{StrVal: NewStrLiteral(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr}
+ yyLOCAL = &SubstrExpr{StrVal: NewStrLiteral(yyDollar[3].str), From: yyDollar[5].exprUnion(), To: yyDollar[7].exprUnion()}
}
- case 710:
+ yyVAL.union = yyLOCAL
+ case 745:
yyDollar = yyS[yypt-8 : yypt+1]
-//line sql.y:3618
+ var yyLOCAL Expr
+//line sql.y:3779
{
- yyVAL.expr = &SubstrExpr{StrVal: NewStrLiteral(yyDollar[3].bytes), From: yyDollar[5].expr, To: yyDollar[7].expr}
+ yyLOCAL = &SubstrExpr{StrVal: NewStrLiteral(yyDollar[3].str), From: yyDollar[5].exprUnion(), To: yyDollar[7].exprUnion()}
}
- case 711:
+ yyVAL.union = yyLOCAL
+ case 746:
yyDollar = yyS[yypt-9 : yypt+1]
-//line sql.y:3622
+ var yyLOCAL Expr
+//line sql.y:3783
{
- yyVAL.expr = &MatchExpr{Columns: yyDollar[3].selectExprs, Expr: yyDollar[7].expr, Option: yyDollar[8].matchExprOption}
+ yyLOCAL = &MatchExpr{Columns: yyDollar[3].selectExprsUnion(), Expr: yyDollar[7].exprUnion(), Option: yyDollar[8].matchExprOptionUnion()}
}
- case 712:
+ yyVAL.union = yyLOCAL
+ case 747:
yyDollar = yyS[yypt-8 : yypt+1]
-//line sql.y:3626
+ var yyLOCAL Expr
+//line sql.y:3787
{
- yyVAL.expr = &GroupConcatExpr{Distinct: yyDollar[3].boolean, Exprs: yyDollar[4].selectExprs, OrderBy: yyDollar[5].orderBy, Separator: yyDollar[6].str, Limit: yyDollar[7].limit}
+ yyLOCAL = &GroupConcatExpr{Distinct: yyDollar[3].booleanUnion(), Exprs: yyDollar[4].selectExprsUnion(), OrderBy: yyDollar[5].orderByUnion(), Separator: yyDollar[6].str, Limit: yyDollar[7].limitUnion()}
}
- case 713:
+ yyVAL.union = yyLOCAL
+ case 748:
yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:3630
+ var yyLOCAL Expr
+//line sql.y:3791
{
- yyVAL.expr = &CaseExpr{Expr: yyDollar[2].expr, Whens: yyDollar[3].whens, Else: yyDollar[4].expr}
+ yyLOCAL = &CaseExpr{Expr: yyDollar[2].exprUnion(), Whens: yyDollar[3].whensUnion(), Else: yyDollar[4].exprUnion()}
}
- case 714:
+ yyVAL.union = yyLOCAL
+ case 749:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:3634
+ var yyLOCAL Expr
+//line sql.y:3795
{
- yyVAL.expr = &ValuesFuncExpr{Name: yyDollar[3].colName}
+ yyLOCAL = &ValuesFuncExpr{Name: yyDollar[3].colNameUnion()}
}
- case 715:
+ yyVAL.union = yyLOCAL
+ case 750:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3638
+ var yyLOCAL Expr
+//line sql.y:3799
{
- yyVAL.expr = &FuncExpr{Name: NewColIdent(string(yyDollar[1].bytes))}
+ yyLOCAL = &FuncExpr{Name: NewColIdent(yyDollar[1].str)}
}
- case 716:
+ yyVAL.union = yyLOCAL
+ case 751:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3648
+ var yyLOCAL Expr
+//line sql.y:3809
{
- yyVAL.expr = &FuncExpr{Name: NewColIdent("current_timestamp")}
+ yyLOCAL = &FuncExpr{Name: NewColIdent("current_timestamp")}
}
- case 717:
+ yyVAL.union = yyLOCAL
+ case 752:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3652
+ var yyLOCAL Expr
+//line sql.y:3813
{
- yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_timestamp")}
+ yyLOCAL = &FuncExpr{Name: NewColIdent("utc_timestamp")}
}
- case 718:
+ yyVAL.union = yyLOCAL
+ case 753:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3656
+ var yyLOCAL Expr
+//line sql.y:3817
{
- yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_time")}
+ yyLOCAL = &FuncExpr{Name: NewColIdent("utc_time")}
}
- case 719:
+ yyVAL.union = yyLOCAL
+ case 754:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3661
+ var yyLOCAL Expr
+//line sql.y:3822
{
- yyVAL.expr = &FuncExpr{Name: NewColIdent("utc_date")}
+ yyLOCAL = &FuncExpr{Name: NewColIdent("utc_date")}
}
- case 720:
+ yyVAL.union = yyLOCAL
+ case 755:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3666
+ var yyLOCAL Expr
+//line sql.y:3827
{
- yyVAL.expr = &FuncExpr{Name: NewColIdent("localtime")}
+ yyLOCAL = &FuncExpr{Name: NewColIdent("localtime")}
}
- case 721:
+ yyVAL.union = yyLOCAL
+ case 756:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3671
+ var yyLOCAL Expr
+//line sql.y:3832
{
- yyVAL.expr = &FuncExpr{Name: NewColIdent("localtimestamp")}
+ yyLOCAL = &FuncExpr{Name: NewColIdent("localtimestamp")}
}
- case 722:
+ yyVAL.union = yyLOCAL
+ case 757:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3677
+ var yyLOCAL Expr
+//line sql.y:3838
{
- yyVAL.expr = &FuncExpr{Name: NewColIdent("current_date")}
+ yyLOCAL = &FuncExpr{Name: NewColIdent("current_date")}
}
- case 723:
+ yyVAL.union = yyLOCAL
+ case 758:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3682
+ var yyLOCAL Expr
+//line sql.y:3843
{
- yyVAL.expr = &FuncExpr{Name: NewColIdent("current_time")}
+ yyLOCAL = &FuncExpr{Name: NewColIdent("current_time")}
}
- case 724:
+ yyVAL.union = yyLOCAL
+ case 759:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3687
+ var yyLOCAL Expr
+//line sql.y:3848
{
- yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_timestamp"), Fsp: yyDollar[2].expr}
+ yyLOCAL = &CurTimeFuncExpr{Name: NewColIdent("current_timestamp"), Fsp: yyDollar[2].exprUnion()}
}
- case 725:
+ yyVAL.union = yyLOCAL
+ case 760:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3691
+ var yyLOCAL Expr
+//line sql.y:3852
{
- yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_timestamp"), Fsp: yyDollar[2].expr}
+ yyLOCAL = &CurTimeFuncExpr{Name: NewColIdent("utc_timestamp"), Fsp: yyDollar[2].exprUnion()}
}
- case 726:
+ yyVAL.union = yyLOCAL
+ case 761:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3695
+ var yyLOCAL Expr
+//line sql.y:3856
{
- yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("utc_time"), Fsp: yyDollar[2].expr}
+ yyLOCAL = &CurTimeFuncExpr{Name: NewColIdent("utc_time"), Fsp: yyDollar[2].exprUnion()}
}
- case 727:
+ yyVAL.union = yyLOCAL
+ case 762:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3700
+ var yyLOCAL Expr
+//line sql.y:3861
{
- yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtime"), Fsp: yyDollar[2].expr}
+ yyLOCAL = &CurTimeFuncExpr{Name: NewColIdent("localtime"), Fsp: yyDollar[2].exprUnion()}
}
- case 728:
+ yyVAL.union = yyLOCAL
+ case 763:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3705
+ var yyLOCAL Expr
+//line sql.y:3866
{
- yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("localtimestamp"), Fsp: yyDollar[2].expr}
+ yyLOCAL = &CurTimeFuncExpr{Name: NewColIdent("localtimestamp"), Fsp: yyDollar[2].exprUnion()}
}
- case 729:
+ yyVAL.union = yyLOCAL
+ case 764:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3710
+ var yyLOCAL Expr
+//line sql.y:3871
{
- yyVAL.expr = &CurTimeFuncExpr{Name: NewColIdent("current_time"), Fsp: yyDollar[2].expr}
+ yyLOCAL = &CurTimeFuncExpr{Name: NewColIdent("current_time"), Fsp: yyDollar[2].exprUnion()}
}
- case 730:
+ yyVAL.union = yyLOCAL
+ case 765:
yyDollar = yyS[yypt-8 : yypt+1]
-//line sql.y:3714
+ var yyLOCAL Expr
+//line sql.y:3875
{
- yyVAL.expr = &TimestampFuncExpr{Name: string("timestampadd"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr}
+ yyLOCAL = &TimestampFuncExpr{Name: string("timestampadd"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].exprUnion(), Expr2: yyDollar[7].exprUnion()}
}
- case 731:
+ yyVAL.union = yyLOCAL
+ case 766:
yyDollar = yyS[yypt-8 : yypt+1]
-//line sql.y:3718
+ var yyLOCAL Expr
+//line sql.y:3879
{
- yyVAL.expr = &TimestampFuncExpr{Name: string("timestampdiff"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].expr, Expr2: yyDollar[7].expr}
+ yyLOCAL = &TimestampFuncExpr{Name: string("timestampdiff"), Unit: yyDollar[3].colIdent.String(), Expr1: yyDollar[5].exprUnion(), Expr2: yyDollar[7].exprUnion()}
}
- case 734:
+ yyVAL.union = yyLOCAL
+ case 769:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3728
+ var yyLOCAL Expr
+//line sql.y:3889
{
- yyVAL.expr = yyDollar[2].expr
+ yyLOCAL = yyDollar[2].exprUnion()
}
- case 735:
+ yyVAL.union = yyLOCAL
+ case 770:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:3738
+ var yyLOCAL Expr
+//line sql.y:3899
{
- yyVAL.expr = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprs}
+ yyLOCAL = &FuncExpr{Name: NewColIdent("if"), Exprs: yyDollar[3].selectExprsUnion()}
}
- case 736:
+ yyVAL.union = yyLOCAL
+ case 771:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:3742
+ var yyLOCAL Expr
+//line sql.y:3903
{
- yyVAL.expr = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprs}
+ yyLOCAL = &FuncExpr{Name: NewColIdent("database"), Exprs: yyDollar[3].selectExprsUnion()}
}
- case 737:
+ yyVAL.union = yyLOCAL
+ case 772:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:3746
+ var yyLOCAL Expr
+//line sql.y:3907
{
- yyVAL.expr = &FuncExpr{Name: NewColIdent("schema"), Exprs: yyDollar[3].selectExprs}
+ yyLOCAL = &FuncExpr{Name: NewColIdent("schema"), Exprs: yyDollar[3].selectExprsUnion()}
}
- case 738:
+ yyVAL.union = yyLOCAL
+ case 773:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:3750
+ var yyLOCAL Expr
+//line sql.y:3911
{
- yyVAL.expr = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprs}
+ yyLOCAL = &FuncExpr{Name: NewColIdent("mod"), Exprs: yyDollar[3].selectExprsUnion()}
}
- case 739:
+ yyVAL.union = yyLOCAL
+ case 774:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:3754
+ var yyLOCAL Expr
+//line sql.y:3915
{
- yyVAL.expr = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprs}
+ yyLOCAL = &FuncExpr{Name: NewColIdent("replace"), Exprs: yyDollar[3].selectExprsUnion()}
}
- case 740:
+ yyVAL.union = yyLOCAL
+ case 775:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:3758
+ var yyLOCAL Expr
+//line sql.y:3919
{
- yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs}
+ yyLOCAL = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprsUnion()}
}
- case 741:
+ yyVAL.union = yyLOCAL
+ case 776:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:3762
+ var yyLOCAL Expr
+//line sql.y:3923
{
- yyVAL.expr = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprs}
+ yyLOCAL = &FuncExpr{Name: NewColIdent("substr"), Exprs: yyDollar[3].selectExprsUnion()}
}
- case 742:
+ yyVAL.union = yyLOCAL
+ case 777:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:3768
+ var yyLOCAL MatchExprOption
+//line sql.y:3929
{
- yyVAL.matchExprOption = NoOption
+ yyLOCAL = NoOption
}
- case 743:
+ yyVAL.union = yyLOCAL
+ case 778:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3772
+ var yyLOCAL MatchExprOption
+//line sql.y:3933
{
- yyVAL.matchExprOption = BooleanModeOpt
+ yyLOCAL = BooleanModeOpt
}
- case 744:
+ yyVAL.union = yyLOCAL
+ case 779:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:3776
+ var yyLOCAL MatchExprOption
+//line sql.y:3937
{
- yyVAL.matchExprOption = NaturalLanguageModeOpt
+ yyLOCAL = NaturalLanguageModeOpt
}
- case 745:
+ yyVAL.union = yyLOCAL
+ case 780:
yyDollar = yyS[yypt-7 : yypt+1]
-//line sql.y:3780
+ var yyLOCAL MatchExprOption
+//line sql.y:3941
{
- yyVAL.matchExprOption = NaturalLanguageModeWithQueryExpansionOpt
+ yyLOCAL = NaturalLanguageModeWithQueryExpansionOpt
}
- case 746:
+ yyVAL.union = yyLOCAL
+ case 781:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3784
+ var yyLOCAL MatchExprOption
+//line sql.y:3945
{
- yyVAL.matchExprOption = QueryExpansionOpt
+ yyLOCAL = QueryExpansionOpt
}
- case 747:
+ yyVAL.union = yyLOCAL
+ case 782:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3790
+//line sql.y:3951
{
yyVAL.str = string(yyDollar[1].colIdent.String())
}
- case 748:
+ case 783:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3794
+//line sql.y:3955
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyVAL.str = string(yyDollar[1].str)
}
- case 749:
+ case 784:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3798
+//line sql.y:3959
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyVAL.str = string(yyDollar[1].str)
}
- case 750:
+ case 785:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3804
+ var yyLOCAL *ConvertType
+//line sql.y:3965
{
- yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal}
+ yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()}
}
- case 751:
+ yyVAL.union = yyLOCAL
+ case 786:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3808
+ var yyLOCAL *ConvertType
+//line sql.y:3969
{
- yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: yyDollar[3].str, Operator: CharacterSetOp}
+ yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion(), Charset: yyDollar[3].str, Operator: CharacterSetOp}
}
- case 752:
+ yyVAL.union = yyLOCAL
+ case 787:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3812
+ var yyLOCAL *ConvertType
+//line sql.y:3973
{
- yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal, Charset: string(yyDollar[3].colIdent.String())}
+ yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion(), Charset: string(yyDollar[3].colIdent.String())}
}
- case 753:
+ yyVAL.union = yyLOCAL
+ case 788:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3816
+ var yyLOCAL *ConvertType
+//line sql.y:3977
{
- yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)}
+ yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)}
}
- case 754:
+ yyVAL.union = yyLOCAL
+ case 789:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3820
+ var yyLOCAL *ConvertType
+//line sql.y:3981
{
- yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal}
+ yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()}
}
- case 755:
+ yyVAL.union = yyLOCAL
+ case 790:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3824
+ var yyLOCAL *ConvertType
+//line sql.y:3985
{
- yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)}
- yyVAL.convertType.Length = yyDollar[2].LengthScaleOption.Length
- yyVAL.convertType.Scale = yyDollar[2].LengthScaleOption.Scale
+ yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)}
+ yyLOCAL.Length = yyDollar[2].LengthScaleOption.Length
+ yyLOCAL.Scale = yyDollar[2].LengthScaleOption.Scale
}
- case 756:
+ yyVAL.union = yyLOCAL
+ case 791:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3830
+ var yyLOCAL *ConvertType
+//line sql.y:3991
{
- yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)}
+ yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)}
}
- case 757:
+ yyVAL.union = yyLOCAL
+ case 792:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3834
+ var yyLOCAL *ConvertType
+//line sql.y:3995
{
- yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal}
+ yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()}
}
- case 758:
+ yyVAL.union = yyLOCAL
+ case 793:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3838
+ var yyLOCAL *ConvertType
+//line sql.y:3999
{
- yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)}
+ yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)}
}
- case 759:
+ yyVAL.union = yyLOCAL
+ case 794:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3842
+ var yyLOCAL *ConvertType
+//line sql.y:4003
{
- yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)}
+ yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)}
}
- case 760:
+ yyVAL.union = yyLOCAL
+ case 795:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3846
+ var yyLOCAL *ConvertType
+//line sql.y:4007
{
- yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes), Length: yyDollar[2].literal}
+ yyLOCAL = &ConvertType{Type: string(yyDollar[1].str), Length: yyDollar[2].literalUnion()}
}
- case 761:
+ yyVAL.union = yyLOCAL
+ case 796:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3850
+ var yyLOCAL *ConvertType
+//line sql.y:4011
{
- yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)}
+ yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)}
}
- case 762:
+ yyVAL.union = yyLOCAL
+ case 797:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3854
+ var yyLOCAL *ConvertType
+//line sql.y:4015
{
- yyVAL.convertType = &ConvertType{Type: string(yyDollar[1].bytes)}
+ yyLOCAL = &ConvertType{Type: string(yyDollar[1].str)}
}
- case 763:
+ yyVAL.union = yyLOCAL
+ case 798:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:3859
+ var yyLOCAL Expr
+//line sql.y:4020
{
- yyVAL.expr = nil
+ yyLOCAL = nil
}
- case 764:
+ yyVAL.union = yyLOCAL
+ case 799:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3863
+ var yyLOCAL Expr
+//line sql.y:4024
{
- yyVAL.expr = yyDollar[1].expr
+ yyLOCAL = yyDollar[1].exprUnion()
}
- case 765:
+ yyVAL.union = yyLOCAL
+ case 800:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:3868
+//line sql.y:4029
{
yyVAL.str = string("")
}
- case 766:
+ case 801:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3872
+//line sql.y:4033
{
- yyVAL.str = " separator '" + string(yyDollar[2].bytes) + "'"
+ yyVAL.str = " separator " + encodeSQLString(yyDollar[2].str)
}
- case 767:
+ case 802:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3878
+ var yyLOCAL []*When
+//line sql.y:4039
{
- yyVAL.whens = []*When{yyDollar[1].when}
+ yyLOCAL = []*When{yyDollar[1].whenUnion()}
}
- case 768:
+ yyVAL.union = yyLOCAL
+ case 803:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3882
+//line sql.y:4043
{
- yyVAL.whens = append(yyDollar[1].whens, yyDollar[2].when)
+ yySLICE := (*[]*When)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[2].whenUnion())
}
- case 769:
+ case 804:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:3888
+ var yyLOCAL *When
+//line sql.y:4049
{
- yyVAL.when = &When{Cond: yyDollar[2].expr, Val: yyDollar[4].expr}
+ yyLOCAL = &When{Cond: yyDollar[2].exprUnion(), Val: yyDollar[4].exprUnion()}
}
- case 770:
+ yyVAL.union = yyLOCAL
+ case 805:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:3893
+ var yyLOCAL Expr
+//line sql.y:4054
{
- yyVAL.expr = nil
+ yyLOCAL = nil
}
- case 771:
+ yyVAL.union = yyLOCAL
+ case 806:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3897
+ var yyLOCAL Expr
+//line sql.y:4058
{
- yyVAL.expr = yyDollar[2].expr
+ yyLOCAL = yyDollar[2].exprUnion()
}
- case 772:
+ yyVAL.union = yyLOCAL
+ case 807:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3903
+ var yyLOCAL *ColName
+//line sql.y:4064
{
- yyVAL.colName = &ColName{Name: yyDollar[1].colIdent}
+ yyLOCAL = &ColName{Name: yyDollar[1].colIdent}
}
- case 773:
+ yyVAL.union = yyLOCAL
+ case 808:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3907
+ var yyLOCAL *ColName
+//line sql.y:4068
{
- yyVAL.colName = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent}
+ yyLOCAL = &ColName{Qualifier: TableName{Name: yyDollar[1].tableIdent}, Name: yyDollar[3].colIdent}
}
- case 774:
+ yyVAL.union = yyLOCAL
+ case 809:
yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:3911
+ var yyLOCAL *ColName
+//line sql.y:4072
{
- yyVAL.colName = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent}
+ yyLOCAL = &ColName{Qualifier: TableName{Qualifier: yyDollar[1].tableIdent, Name: yyDollar[3].tableIdent}, Name: yyDollar[5].colIdent}
}
- case 775:
+ yyVAL.union = yyLOCAL
+ case 810:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3917
+ var yyLOCAL Expr
+//line sql.y:4078
{
- yyVAL.expr = NewStrLiteral(yyDollar[1].bytes)
+ yyLOCAL = NewStrLiteral(yyDollar[1].str)
}
- case 776:
+ yyVAL.union = yyLOCAL
+ case 811:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3921
+ var yyLOCAL Expr
+//line sql.y:4082
{
- yyVAL.expr = NewHexLiteral(yyDollar[1].bytes)
+ yyLOCAL = NewHexLiteral(yyDollar[1].str)
}
- case 777:
+ yyVAL.union = yyLOCAL
+ case 812:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3925
+ var yyLOCAL Expr
+//line sql.y:4086
{
- yyVAL.expr = NewBitLiteral(yyDollar[1].bytes)
+ yyLOCAL = NewBitLiteral(yyDollar[1].str)
}
- case 778:
+ yyVAL.union = yyLOCAL
+ case 813:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3929
+ var yyLOCAL Expr
+//line sql.y:4090
{
- yyVAL.expr = NewIntLiteral(yyDollar[1].bytes)
+ yyLOCAL = NewIntLiteral(yyDollar[1].str)
}
- case 779:
+ yyVAL.union = yyLOCAL
+ case 814:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3933
+ var yyLOCAL Expr
+//line sql.y:4094
{
- yyVAL.expr = NewFloatLiteral(yyDollar[1].bytes)
+ yyLOCAL = NewFloatLiteral(yyDollar[1].str)
}
- case 780:
+ yyVAL.union = yyLOCAL
+ case 815:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3937
+ var yyLOCAL Expr
+//line sql.y:4098
{
- yyVAL.expr = NewHexNumLiteral(yyDollar[1].bytes)
+ yyLOCAL = NewHexNumLiteral(yyDollar[1].str)
}
- case 781:
+ yyVAL.union = yyLOCAL
+ case 816:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3941
+ var yyLOCAL Expr
+//line sql.y:4102
{
- yyVAL.expr = NewArgument(yyDollar[1].bytes)
+ yyLOCAL = NewArgument(yyDollar[1].str)
+ bindVariable(yylex, yyDollar[1].str[1:])
}
- case 782:
+ yyVAL.union = yyLOCAL
+ case 817:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3945
+ var yyLOCAL Expr
+//line sql.y:4107
{
- yyVAL.expr = &NullVal{}
+ yyLOCAL = &NullVal{}
}
- case 783:
+ yyVAL.union = yyLOCAL
+ case 818:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3951
+ var yyLOCAL Expr
+//line sql.y:4113
{
// TODO(sougou): Deprecate this construct.
if yyDollar[1].colIdent.Lowered() != "value" {
yylex.Error("expecting value after next")
return 1
}
- yyVAL.expr = NewIntLiteral([]byte("1"))
+ yyLOCAL = NewIntLiteral("1")
}
- case 784:
+ yyVAL.union = yyLOCAL
+ case 819:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3960
+ var yyLOCAL Expr
+//line sql.y:4122
{
- yyVAL.expr = NewIntLiteral(yyDollar[1].bytes)
+ yyLOCAL = NewIntLiteral(yyDollar[1].str)
}
- case 785:
+ yyVAL.union = yyLOCAL
+ case 820:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3964
+ var yyLOCAL Expr
+//line sql.y:4126
{
- yyVAL.expr = NewArgument(yyDollar[1].bytes)
+ yyLOCAL = NewArgument(yyDollar[1].str)
+ bindVariable(yylex, yyDollar[1].str[1:])
}
- case 786:
+ yyVAL.union = yyLOCAL
+ case 821:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:3969
+ var yyLOCAL Exprs
+//line sql.y:4132
{
- yyVAL.exprs = nil
+ yyLOCAL = nil
}
- case 787:
+ yyVAL.union = yyLOCAL
+ case 822:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3973
+ var yyLOCAL Exprs
+//line sql.y:4136
{
- yyVAL.exprs = yyDollar[3].exprs
+ yyLOCAL = yyDollar[3].exprsUnion()
}
- case 788:
+ yyVAL.union = yyLOCAL
+ case 823:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:3978
+ var yyLOCAL Expr
+//line sql.y:4141
{
- yyVAL.expr = nil
+ yyLOCAL = nil
}
- case 789:
+ yyVAL.union = yyLOCAL
+ case 824:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:3982
+ var yyLOCAL Expr
+//line sql.y:4145
{
- yyVAL.expr = yyDollar[2].expr
+ yyLOCAL = yyDollar[2].exprUnion()
}
- case 790:
+ yyVAL.union = yyLOCAL
+ case 825:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:3987
+ var yyLOCAL OrderBy
+//line sql.y:4150
{
- yyVAL.orderBy = nil
+ yyLOCAL = nil
}
- case 791:
+ yyVAL.union = yyLOCAL
+ case 826:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:3991
+ var yyLOCAL OrderBy
+//line sql.y:4154
{
- yyVAL.orderBy = yyDollar[3].orderBy
+ yyLOCAL = yyDollar[3].orderByUnion()
}
- case 792:
+ yyVAL.union = yyLOCAL
+ case 827:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:3997
+ var yyLOCAL OrderBy
+//line sql.y:4160
{
- yyVAL.orderBy = OrderBy{yyDollar[1].order}
+ yyLOCAL = OrderBy{yyDollar[1].orderUnion()}
}
- case 793:
+ yyVAL.union = yyLOCAL
+ case 828:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4001
+//line sql.y:4164
{
- yyVAL.orderBy = append(yyDollar[1].orderBy, yyDollar[3].order)
+ yySLICE := (*OrderBy)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[3].orderUnion())
}
- case 794:
+ case 829:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:4007
+ var yyLOCAL *Order
+//line sql.y:4170
{
- yyVAL.order = &Order{Expr: yyDollar[1].expr, Direction: yyDollar[2].orderDirection}
+ yyLOCAL = &Order{Expr: yyDollar[1].exprUnion(), Direction: yyDollar[2].orderDirectionUnion()}
}
- case 795:
+ yyVAL.union = yyLOCAL
+ case 830:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4012
+ var yyLOCAL OrderDirection
+//line sql.y:4175
{
- yyVAL.orderDirection = AscOrder
+ yyLOCAL = AscOrder
}
- case 796:
+ yyVAL.union = yyLOCAL
+ case 831:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4016
+ var yyLOCAL OrderDirection
+//line sql.y:4179
{
- yyVAL.orderDirection = AscOrder
+ yyLOCAL = AscOrder
}
- case 797:
+ yyVAL.union = yyLOCAL
+ case 832:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4020
+ var yyLOCAL OrderDirection
+//line sql.y:4183
{
- yyVAL.orderDirection = DescOrder
+ yyLOCAL = DescOrder
}
- case 798:
+ yyVAL.union = yyLOCAL
+ case 833:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4025
+ var yyLOCAL *Limit
+//line sql.y:4188
{
- yyVAL.limit = nil
+ yyLOCAL = nil
}
- case 799:
+ yyVAL.union = yyLOCAL
+ case 834:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:4029
+ var yyLOCAL *Limit
+//line sql.y:4192
{
- yyVAL.limit = &Limit{Rowcount: yyDollar[2].expr}
+ yyLOCAL = &Limit{Rowcount: yyDollar[2].exprUnion()}
}
- case 800:
+ yyVAL.union = yyLOCAL
+ case 835:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:4033
+ var yyLOCAL *Limit
+//line sql.y:4196
{
- yyVAL.limit = &Limit{Offset: yyDollar[2].expr, Rowcount: yyDollar[4].expr}
+ yyLOCAL = &Limit{Offset: yyDollar[2].exprUnion(), Rowcount: yyDollar[4].exprUnion()}
}
- case 801:
+ yyVAL.union = yyLOCAL
+ case 836:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:4037
+ var yyLOCAL *Limit
+//line sql.y:4200
{
- yyVAL.limit = &Limit{Offset: yyDollar[4].expr, Rowcount: yyDollar[2].expr}
+ yyLOCAL = &Limit{Offset: yyDollar[4].exprUnion(), Rowcount: yyDollar[2].exprUnion()}
}
- case 802:
+ yyVAL.union = yyLOCAL
+ case 837:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4042
+ var yyLOCAL []AlterOption
+//line sql.y:4205
{
- yyVAL.indexOptions = nil
+ yyLOCAL = nil
}
- case 803:
+ yyVAL.union = yyLOCAL
+ case 838:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:4046
+ var yyLOCAL []AlterOption
+//line sql.y:4209
{
- yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption, yyDollar[2].indexOption}
+ yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion(), yyDollar[2].alterOptionUnion()}
}
- case 804:
+ yyVAL.union = yyLOCAL
+ case 839:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:4050
+ var yyLOCAL []AlterOption
+//line sql.y:4213
{
- yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption, yyDollar[2].indexOption}
+ yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion(), yyDollar[2].alterOptionUnion()}
}
- case 805:
+ yyVAL.union = yyLOCAL
+ case 840:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4054
+ var yyLOCAL []AlterOption
+//line sql.y:4217
{
- yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption}
+ yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion()}
}
- case 806:
+ yyVAL.union = yyLOCAL
+ case 841:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4058
+ var yyLOCAL []AlterOption
+//line sql.y:4221
{
- yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption}
+ yyLOCAL = []AlterOption{yyDollar[1].alterOptionUnion()}
}
- case 807:
+ yyVAL.union = yyLOCAL
+ case 842:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4065
+ var yyLOCAL AlterOption
+//line sql.y:4228
{
- yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)}
+ yyLOCAL = &LockOption{Type: DefaultType}
}
- case 808:
+ yyVAL.union = yyLOCAL
+ case 843:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4069
+ var yyLOCAL AlterOption
+//line sql.y:4232
{
- yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)}
+ yyLOCAL = &LockOption{Type: NoneType}
}
- case 809:
+ yyVAL.union = yyLOCAL
+ case 844:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4073
+ var yyLOCAL AlterOption
+//line sql.y:4236
{
- yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)}
+ yyLOCAL = &LockOption{Type: SharedType}
}
- case 810:
+ yyVAL.union = yyLOCAL
+ case 845:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4077
+ var yyLOCAL AlterOption
+//line sql.y:4240
{
- yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)}
+ yyLOCAL = &LockOption{Type: ExclusiveType}
}
- case 811:
+ yyVAL.union = yyLOCAL
+ case 846:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4083
+ var yyLOCAL AlterOption
+//line sql.y:4246
{
- yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)}
+ yyLOCAL = AlgorithmValue(yyDollar[3].str)
}
- case 812:
+ yyVAL.union = yyLOCAL
+ case 847:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4087
+ var yyLOCAL AlterOption
+//line sql.y:4250
{
- yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)}
+ yyLOCAL = AlgorithmValue(yyDollar[3].str)
}
- case 813:
+ yyVAL.union = yyLOCAL
+ case 848:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4091
+ var yyLOCAL AlterOption
+//line sql.y:4254
{
- yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[3].bytes)}
+ yyLOCAL = AlgorithmValue(yyDollar[3].str)
}
- case 814:
+ yyVAL.union = yyLOCAL
+ case 849:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4096
+//line sql.y:4259
{
yyVAL.str = ""
}
- case 815:
+ case 850:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4100
+//line sql.y:4263
{
- yyVAL.str = string(yyDollar[3].bytes)
+ yyVAL.str = string(yyDollar[3].str)
}
- case 816:
+ case 851:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4104
+//line sql.y:4267
{
- yyVAL.str = string(yyDollar[3].bytes)
+ yyVAL.str = string(yyDollar[3].str)
}
- case 817:
+ case 852:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4108
+//line sql.y:4271
{
- yyVAL.str = string(yyDollar[3].bytes)
+ yyVAL.str = string(yyDollar[3].str)
}
- case 818:
+ case 853:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4113
+//line sql.y:4276
{
yyVAL.str = ""
}
- case 819:
+ case 854:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4117
+//line sql.y:4280
{
yyVAL.str = yyDollar[3].str
}
- case 820:
+ case 855:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4123
+//line sql.y:4286
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyVAL.str = string(yyDollar[1].str)
}
- case 821:
+ case 856:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4127
+//line sql.y:4290
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyVAL.str = string(yyDollar[1].str)
}
- case 822:
+ case 857:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4132
+//line sql.y:4295
{
yyVAL.str = ""
}
- case 823:
+ case 858:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:4136
+//line sql.y:4299
{
yyVAL.str = yyDollar[2].str
}
- case 824:
+ case 859:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4141
+//line sql.y:4304
{
yyVAL.str = "cascaded"
}
- case 825:
+ case 860:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4145
+//line sql.y:4308
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyVAL.str = string(yyDollar[1].str)
}
- case 826:
+ case 861:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4149
+//line sql.y:4312
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyVAL.str = string(yyDollar[1].str)
}
- case 827:
+ case 862:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4154
+//line sql.y:4317
{
yyVAL.str = ""
}
- case 828:
+ case 863:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4158
+//line sql.y:4321
{
yyVAL.str = yyDollar[3].str
}
- case 829:
+ case 864:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4164
+//line sql.y:4327
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyVAL.str = string(yyDollar[1].str)
}
- case 830:
+ case 865:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4168
+//line sql.y:4331
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyVAL.str = string(yyDollar[1].str)
}
- case 831:
+ case 866:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:4172
+//line sql.y:4335
{
- yyVAL.str = "'" + string(yyDollar[1].bytes) + "'@" + string(yyDollar[2].bytes)
+ yyVAL.str = encodeSQLString(yyDollar[1].str) + "@" + string(yyDollar[2].str)
}
- case 832:
+ case 867:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4176
+//line sql.y:4339
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyVAL.str = string(yyDollar[1].str)
}
- case 833:
+ case 868:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4181
+ var yyLOCAL Lock
+//line sql.y:4344
{
- yyVAL.lock = NoLock
+ yyLOCAL = NoLock
}
- case 834:
+ yyVAL.union = yyLOCAL
+ case 869:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:4185
+ var yyLOCAL Lock
+//line sql.y:4348
{
- yyVAL.lock = ForUpdateLock
+ yyLOCAL = ForUpdateLock
}
- case 835:
+ yyVAL.union = yyLOCAL
+ case 870:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:4189
+ var yyLOCAL Lock
+//line sql.y:4352
{
- yyVAL.lock = ShareModeLock
+ yyLOCAL = ShareModeLock
}
- case 836:
+ yyVAL.union = yyLOCAL
+ case 871:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4194
+ var yyLOCAL *SelectInto
+//line sql.y:4357
{
- yyVAL.selectInto = nil
+ yyLOCAL = nil
}
- case 837:
+ yyVAL.union = yyLOCAL
+ case 872:
yyDollar = yyS[yypt-9 : yypt+1]
-//line sql.y:4198
+ var yyLOCAL *SelectInto
+//line sql.y:4361
{
- yyVAL.selectInto = &SelectInto{Type: IntoOutfileS3, FileName: string(yyDollar[4].bytes), Charset: yyDollar[5].str, FormatOption: yyDollar[6].str, ExportOption: yyDollar[7].str, Manifest: yyDollar[8].str, Overwrite: yyDollar[9].str}
+ yyLOCAL = &SelectInto{Type: IntoOutfileS3, FileName: encodeSQLString(yyDollar[4].str), Charset: yyDollar[5].str, FormatOption: yyDollar[6].str, ExportOption: yyDollar[7].str, Manifest: yyDollar[8].str, Overwrite: yyDollar[9].str}
}
- case 838:
+ yyVAL.union = yyLOCAL
+ case 873:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4202
+ var yyLOCAL *SelectInto
+//line sql.y:4365
{
- yyVAL.selectInto = &SelectInto{Type: IntoDumpfile, FileName: string(yyDollar[3].bytes), Charset: "", FormatOption: "", ExportOption: "", Manifest: "", Overwrite: ""}
+ yyLOCAL = &SelectInto{Type: IntoDumpfile, FileName: encodeSQLString(yyDollar[3].str), Charset: "", FormatOption: "", ExportOption: "", Manifest: "", Overwrite: ""}
}
- case 839:
+ yyVAL.union = yyLOCAL
+ case 874:
yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:4206
+ var yyLOCAL *SelectInto
+//line sql.y:4369
{
- yyVAL.selectInto = &SelectInto{Type: IntoOutfile, FileName: string(yyDollar[3].bytes), Charset: yyDollar[4].str, FormatOption: "", ExportOption: yyDollar[5].str, Manifest: "", Overwrite: ""}
+ yyLOCAL = &SelectInto{Type: IntoOutfile, FileName: encodeSQLString(yyDollar[3].str), Charset: yyDollar[4].str, FormatOption: "", ExportOption: yyDollar[5].str, Manifest: "", Overwrite: ""}
}
- case 840:
+ yyVAL.union = yyLOCAL
+ case 875:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4211
+//line sql.y:4374
{
yyVAL.str = ""
}
- case 841:
+ case 876:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4215
+//line sql.y:4378
{
yyVAL.str = " format csv" + yyDollar[3].str
}
- case 842:
+ case 877:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4219
+//line sql.y:4382
{
yyVAL.str = " format text" + yyDollar[3].str
}
- case 843:
+ case 878:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4224
+//line sql.y:4387
{
yyVAL.str = ""
}
- case 844:
+ case 879:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4228
+//line sql.y:4391
{
yyVAL.str = " header"
}
- case 845:
+ case 880:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4233
+//line sql.y:4396
{
yyVAL.str = ""
}
- case 846:
+ case 881:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:4237
+//line sql.y:4400
{
yyVAL.str = " manifest on"
}
- case 847:
+ case 882:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:4241
+//line sql.y:4404
{
yyVAL.str = " manifest off"
}
- case 848:
+ case 883:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4246
+//line sql.y:4409
{
yyVAL.str = ""
}
- case 849:
+ case 884:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:4250
+//line sql.y:4413
{
yyVAL.str = " overwrite on"
}
- case 850:
+ case 885:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:4254
+//line sql.y:4417
{
yyVAL.str = " overwrite off"
}
- case 851:
+ case 886:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:4260
+//line sql.y:4423
{
yyVAL.str = yyDollar[1].str + yyDollar[2].str
}
- case 852:
+ case 887:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4265
+//line sql.y:4428
{
yyVAL.str = ""
}
- case 853:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4269
+ case 888:
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:4432
{
- yyVAL.str = " lines" + yyDollar[2].str + yyDollar[3].str
+ yyVAL.str = " lines" + yyDollar[2].str
}
- case 854:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4274
+ case 889:
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:4438
{
- yyVAL.str = ""
+ yyVAL.str = yyDollar[1].str
}
- case 855:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4278
+ case 890:
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:4442
{
- yyVAL.str = " starting by '" + string(yyDollar[3].bytes) + "'"
+ yyVAL.str = yyDollar[1].str + yyDollar[2].str
}
- case 856:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4283
+ case 891:
+ yyDollar = yyS[yypt-3 : yypt+1]
+//line sql.y:4448
{
- yyVAL.str = ""
+ yyVAL.str = " starting by " + encodeSQLString(yyDollar[3].str)
}
- case 857:
+ case 892:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4287
+//line sql.y:4452
{
- yyVAL.str = " terminated by '" + string(yyDollar[3].bytes) + "'"
+ yyVAL.str = " terminated by " + encodeSQLString(yyDollar[3].str)
}
- case 858:
+ case 893:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4292
+//line sql.y:4457
{
yyVAL.str = ""
}
- case 859:
- yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:4296
+ case 894:
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:4461
{
- yyVAL.str = " " + yyDollar[1].str + yyDollar[2].str + yyDollar[3].str + yyDollar[4].str
+ yyVAL.str = " " + yyDollar[1].str + yyDollar[2].str
}
- case 860:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4301
+ case 895:
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:4467
{
- yyVAL.str = ""
+ yyVAL.str = yyDollar[1].str
}
- case 861:
- yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4305
+ case 896:
+ yyDollar = yyS[yypt-2 : yypt+1]
+//line sql.y:4471
{
- yyVAL.str = " escaped by '" + string(yyDollar[3].bytes) + "'"
+ yyVAL.str = yyDollar[1].str + yyDollar[2].str
}
- case 862:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4310
+ case 897:
+ yyDollar = yyS[yypt-3 : yypt+1]
+//line sql.y:4477
{
- yyVAL.str = ""
+ yyVAL.str = " terminated by " + encodeSQLString(yyDollar[3].str)
}
- case 863:
+ case 898:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:4314
+//line sql.y:4481
{
- yyVAL.str = yyDollar[1].str + " enclosed by '" + string(yyDollar[4].bytes) + "'"
+ yyVAL.str = yyDollar[1].str + " enclosed by " + encodeSQLString(yyDollar[4].str)
}
- case 864:
+ case 899:
+ yyDollar = yyS[yypt-3 : yypt+1]
+//line sql.y:4485
+ {
+ yyVAL.str = " escaped by " + encodeSQLString(yyDollar[3].str)
+ }
+ case 900:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4319
+//line sql.y:4490
{
yyVAL.str = ""
}
- case 865:
+ case 901:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4323
+//line sql.y:4494
{
yyVAL.str = " optionally"
}
- case 866:
+ case 902:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:4336
+ var yyLOCAL *Insert
+//line sql.y:4507
{
- yyVAL.ins = &Insert{Rows: yyDollar[2].values}
+ yyLOCAL = &Insert{Rows: yyDollar[2].valuesUnion()}
}
- case 867:
+ yyVAL.union = yyLOCAL
+ case 903:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4340
+ var yyLOCAL *Insert
+//line sql.y:4511
{
- yyVAL.ins = &Insert{Rows: yyDollar[1].selStmt}
+ yyLOCAL = &Insert{Rows: yyDollar[1].selStmtUnion()}
}
- case 868:
+ yyVAL.union = yyLOCAL
+ case 904:
yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:4344
+ var yyLOCAL *Insert
+//line sql.y:4515
{
- yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[5].values}
+ yyLOCAL = &Insert{Columns: yyDollar[2].columnsUnion(), Rows: yyDollar[5].valuesUnion()}
}
- case 869:
+ yyVAL.union = yyLOCAL
+ case 905:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:4348
+ var yyLOCAL *Insert
+//line sql.y:4519
{
- yyVAL.ins = &Insert{Rows: yyDollar[4].values}
+ yyLOCAL = &Insert{Rows: yyDollar[4].valuesUnion()}
}
- case 870:
+ yyVAL.union = yyLOCAL
+ case 906:
yyDollar = yyS[yypt-4 : yypt+1]
-//line sql.y:4352
+ var yyLOCAL *Insert
+//line sql.y:4523
{
- yyVAL.ins = &Insert{Columns: yyDollar[2].columns, Rows: yyDollar[4].selStmt}
+ yyLOCAL = &Insert{Columns: yyDollar[2].columnsUnion(), Rows: yyDollar[4].selStmtUnion()}
}
- case 871:
+ yyVAL.union = yyLOCAL
+ case 907:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4358
+ var yyLOCAL Columns
+//line sql.y:4529
{
- yyVAL.columns = Columns{yyDollar[1].colIdent}
+ yyLOCAL = Columns{yyDollar[1].colIdent}
}
- case 872:
+ yyVAL.union = yyLOCAL
+ case 908:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4362
+ var yyLOCAL Columns
+//line sql.y:4533
{
- yyVAL.columns = Columns{yyDollar[3].colIdent}
+ yyLOCAL = Columns{yyDollar[3].colIdent}
}
- case 873:
+ yyVAL.union = yyLOCAL
+ case 909:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4366
+//line sql.y:4537
{
- yyVAL.columns = append(yyVAL.columns, yyDollar[3].colIdent)
+ yySLICE := (*Columns)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[3].colIdent)
}
- case 874:
+ case 910:
yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:4370
+//line sql.y:4541
{
- yyVAL.columns = append(yyVAL.columns, yyDollar[5].colIdent)
+ yySLICE := (*Columns)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[5].colIdent)
}
- case 875:
+ case 911:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4375
+ var yyLOCAL UpdateExprs
+//line sql.y:4546
{
- yyVAL.updateExprs = nil
+ yyLOCAL = nil
}
- case 876:
+ yyVAL.union = yyLOCAL
+ case 912:
yyDollar = yyS[yypt-5 : yypt+1]
-//line sql.y:4379
+ var yyLOCAL UpdateExprs
+//line sql.y:4550
{
- yyVAL.updateExprs = yyDollar[5].updateExprs
+ yyLOCAL = yyDollar[5].updateExprsUnion()
}
- case 877:
+ yyVAL.union = yyLOCAL
+ case 913:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4385
+ var yyLOCAL Values
+//line sql.y:4556
{
- yyVAL.values = Values{yyDollar[1].valTuple}
+ yyLOCAL = Values{yyDollar[1].valTupleUnion()}
}
- case 878:
+ yyVAL.union = yyLOCAL
+ case 914:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4389
+//line sql.y:4560
{
- yyVAL.values = append(yyDollar[1].values, yyDollar[3].valTuple)
+ yySLICE := (*Values)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[3].valTupleUnion())
}
- case 879:
+ case 915:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4395
+ var yyLOCAL ValTuple
+//line sql.y:4566
{
- yyVAL.valTuple = yyDollar[1].valTuple
+ yyLOCAL = yyDollar[1].valTupleUnion()
}
- case 880:
+ yyVAL.union = yyLOCAL
+ case 916:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:4399
+ var yyLOCAL ValTuple
+//line sql.y:4570
{
- yyVAL.valTuple = ValTuple{}
+ yyLOCAL = ValTuple{}
}
- case 881:
+ yyVAL.union = yyLOCAL
+ case 917:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4405
+ var yyLOCAL ValTuple
+//line sql.y:4576
{
- yyVAL.valTuple = ValTuple(yyDollar[2].exprs)
+ yyLOCAL = ValTuple(yyDollar[2].exprsUnion())
}
- case 882:
+ yyVAL.union = yyLOCAL
+ case 918:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4411
+ var yyLOCAL Expr
+//line sql.y:4582
{
- if len(yyDollar[1].valTuple) == 1 {
- yyVAL.expr = yyDollar[1].valTuple[0]
+ if len(yyDollar[1].valTupleUnion()) == 1 {
+ yyLOCAL = yyDollar[1].valTupleUnion()[0]
} else {
- yyVAL.expr = yyDollar[1].valTuple
+ yyLOCAL = yyDollar[1].valTupleUnion()
}
}
- case 883:
+ yyVAL.union = yyLOCAL
+ case 919:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4421
+ var yyLOCAL UpdateExprs
+//line sql.y:4592
{
- yyVAL.updateExprs = UpdateExprs{yyDollar[1].updateExpr}
+ yyLOCAL = UpdateExprs{yyDollar[1].updateExprUnion()}
}
- case 884:
+ yyVAL.union = yyLOCAL
+ case 920:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4425
+//line sql.y:4596
{
- yyVAL.updateExprs = append(yyDollar[1].updateExprs, yyDollar[3].updateExpr)
+ yySLICE := (*UpdateExprs)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[3].updateExprUnion())
}
- case 885:
+ case 921:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4431
+ var yyLOCAL *UpdateExpr
+//line sql.y:4602
{
- yyVAL.updateExpr = &UpdateExpr{Name: yyDollar[1].colName, Expr: yyDollar[3].expr}
+ yyLOCAL = &UpdateExpr{Name: yyDollar[1].colNameUnion(), Expr: yyDollar[3].exprUnion()}
}
- case 886:
+ yyVAL.union = yyLOCAL
+ case 922:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4437
+ var yyLOCAL SetExprs
+//line sql.y:4608
{
- yyVAL.setExprs = SetExprs{yyDollar[1].setExpr}
+ yyLOCAL = SetExprs{yyDollar[1].setExprUnion()}
}
- case 887:
+ yyVAL.union = yyLOCAL
+ case 923:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4441
+//line sql.y:4612
{
- yyVAL.setExprs = append(yyDollar[1].setExprs, yyDollar[3].setExpr)
+ yySLICE := (*SetExprs)(yyIaddr(yyVAL.union))
+ *yySLICE = append(*yySLICE, yyDollar[3].setExprUnion())
}
- case 888:
+ case 924:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4447
+ var yyLOCAL *SetExpr
+//line sql.y:4618
{
- yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: NewStrLiteral([]byte("on"))}
+ yyLOCAL = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: NewStrLiteral("on")}
}
- case 889:
+ yyVAL.union = yyLOCAL
+ case 925:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4451
+ var yyLOCAL *SetExpr
+//line sql.y:4622
{
- yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: NewStrLiteral([]byte("off"))}
+ yyLOCAL = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: NewStrLiteral("off")}
}
- case 890:
+ yyVAL.union = yyLOCAL
+ case 926:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4455
+ var yyLOCAL *SetExpr
+//line sql.y:4626
{
- yyVAL.setExpr = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: yyDollar[3].expr}
+ yyLOCAL = &SetExpr{Name: yyDollar[1].colIdent, Scope: ImplicitScope, Expr: yyDollar[3].exprUnion()}
}
- case 891:
+ yyVAL.union = yyLOCAL
+ case 927:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4459
+ var yyLOCAL *SetExpr
+//line sql.y:4630
{
- yyVAL.setExpr = &SetExpr{Name: NewColIdent(string(yyDollar[1].bytes)), Scope: ImplicitScope, Expr: yyDollar[2].expr}
+ yyLOCAL = &SetExpr{Name: NewColIdent(string(yyDollar[1].str)), Scope: ImplicitScope, Expr: yyDollar[2].exprUnion()}
}
- case 892:
+ yyVAL.union = yyLOCAL
+ case 928:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:4463
+ var yyLOCAL *SetExpr
+//line sql.y:4634
{
- yyDollar[2].setExpr.Scope = yyDollar[1].scope
- yyVAL.setExpr = yyDollar[2].setExpr
+ yyDollar[2].setExprUnion().Scope = yyDollar[1].scopeUnion()
+ yyLOCAL = yyDollar[2].setExprUnion()
}
- case 894:
+ yyVAL.union = yyLOCAL
+ case 930:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:4471
+//line sql.y:4642
{
- yyVAL.bytes = []byte("charset")
+ yyVAL.str = "charset"
}
- case 897:
+ case 933:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4481
+ var yyLOCAL Expr
+//line sql.y:4652
{
- yyVAL.expr = NewStrLiteral([]byte(yyDollar[1].colIdent.String()))
+ yyLOCAL = NewStrLiteral(yyDollar[1].colIdent.String())
}
- case 898:
+ yyVAL.union = yyLOCAL
+ case 934:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4485
+ var yyLOCAL Expr
+//line sql.y:4656
{
- yyVAL.expr = NewStrLiteral(yyDollar[1].bytes)
+ yyLOCAL = NewStrLiteral(yyDollar[1].str)
}
- case 899:
+ yyVAL.union = yyLOCAL
+ case 935:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4489
+ var yyLOCAL Expr
+//line sql.y:4660
{
- yyVAL.expr = &Default{}
+ yyLOCAL = &Default{}
}
- case 902:
+ yyVAL.union = yyLOCAL
+ case 938:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4498
+ var yyLOCAL bool
+//line sql.y:4669
{
- yyVAL.boolean = false
+ yyLOCAL = false
}
- case 903:
+ yyVAL.union = yyLOCAL
+ case 939:
+ yyDollar = yyS[yypt-1 : yypt+1]
+ var yyLOCAL bool
+//line sql.y:4671
+ {
+ yyLOCAL = true
+ }
+ yyVAL.union = yyLOCAL
+ case 940:
+ yyDollar = yyS[yypt-0 : yypt+1]
+ var yyLOCAL bool
+//line sql.y:4674
+ {
+ yyLOCAL = false
+ }
+ yyVAL.union = yyLOCAL
+ case 941:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:4500
+ var yyLOCAL bool
+//line sql.y:4676
{
- yyVAL.boolean = true
+ yyLOCAL = true
}
- case 904:
+ yyVAL.union = yyLOCAL
+ case 942:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4503
+ var yyLOCAL bool
+//line sql.y:4679
{
- yyVAL.boolean = false
+ yyLOCAL = false
}
- case 905:
+ yyVAL.union = yyLOCAL
+ case 943:
yyDollar = yyS[yypt-3 : yypt+1]
-//line sql.y:4505
+ var yyLOCAL bool
+//line sql.y:4681
{
- yyVAL.boolean = true
+ yyLOCAL = true
}
- case 906:
+ yyVAL.union = yyLOCAL
+ case 944:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4508
+ var yyLOCAL Ignore
+//line sql.y:4684
{
- yyVAL.ignore = false
+ yyLOCAL = false
}
- case 907:
+ yyVAL.union = yyLOCAL
+ case 945:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4510
+ var yyLOCAL Ignore
+//line sql.y:4686
{
- yyVAL.ignore = true
+ yyLOCAL = true
}
- case 908:
+ yyVAL.union = yyLOCAL
+ case 946:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4513
+//line sql.y:4689
{
yyVAL.empty = struct{}{}
}
- case 909:
+ case 947:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4515
+//line sql.y:4691
{
yyVAL.empty = struct{}{}
}
- case 910:
+ case 948:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4517
+//line sql.y:4693
{
yyVAL.empty = struct{}{}
}
- case 911:
- yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4520
- {
- yyVAL.str = ""
- }
- case 912:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4522
+ case 949:
+ yyDollar = yyS[yypt-5 : yypt+1]
+ var yyLOCAL Statement
+//line sql.y:4697
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyLOCAL = &CallProc{Name: yyDollar[2].tableName, Params: yyDollar[4].exprsUnion()}
}
- case 913:
- yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4524
+ yyVAL.union = yyLOCAL
+ case 950:
+ yyDollar = yyS[yypt-0 : yypt+1]
+ var yyLOCAL Exprs
+//line sql.y:4702
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyLOCAL = nil
}
- case 914:
+ yyVAL.union = yyLOCAL
+ case 951:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4526
+ var yyLOCAL Exprs
+//line sql.y:4706
{
- yyVAL.str = string(yyDollar[1].bytes)
+ yyLOCAL = yyDollar[1].exprsUnion()
}
- case 915:
+ yyVAL.union = yyLOCAL
+ case 952:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4529
+ var yyLOCAL []*IndexOption
+//line sql.y:4711
{
- yyVAL.indexOptions = nil
+ yyLOCAL = nil
}
- case 916:
+ yyVAL.union = yyLOCAL
+ case 953:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4531
+ var yyLOCAL []*IndexOption
+//line sql.y:4713
{
- yyVAL.indexOptions = []*IndexOption{yyDollar[1].indexOption}
+ yyLOCAL = []*IndexOption{yyDollar[1].indexOptionUnion()}
}
- case 917:
+ yyVAL.union = yyLOCAL
+ case 954:
yyDollar = yyS[yypt-2 : yypt+1]
-//line sql.y:4535
+ var yyLOCAL *IndexOption
+//line sql.y:4717
{
- yyVAL.indexOption = &IndexOption{Name: string(yyDollar[1].bytes), String: string(yyDollar[2].colIdent.String())}
+ yyLOCAL = &IndexOption{Name: string(yyDollar[1].str), String: string(yyDollar[2].colIdent.String())}
}
- case 918:
+ yyVAL.union = yyLOCAL
+ case 955:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4541
+//line sql.y:4723
{
yyVAL.colIdent = yyDollar[1].colIdent
}
- case 919:
+ case 956:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4545
+//line sql.y:4727
{
- yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes))
+ yyVAL.colIdent = NewColIdent(string(yyDollar[1].str))
}
- case 921:
+ case 958:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4552
+//line sql.y:4734
{
- yyVAL.colIdent = NewColIdent(string(yyDollar[1].bytes))
+ yyVAL.colIdent = NewColIdent(string(yyDollar[1].str))
}
- case 922:
+ case 959:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4558
+//line sql.y:4740
{
yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].colIdent.String()))
}
- case 923:
+ case 960:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4562
+//line sql.y:4744
{
- yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes))
+ yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].str))
}
- case 925:
+ case 961:
+ yyDollar = yyS[yypt-0 : yypt+1]
+//line sql.y:4749
+ {
+ yyVAL.tableIdent = NewTableIdent("")
+ }
+ case 962:
+ yyDollar = yyS[yypt-1 : yypt+1]
+//line sql.y:4753
+ {
+ yyVAL.tableIdent = yyDollar[1].tableIdent
+ }
+ case 964:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4569
+//line sql.y:4760
{
- yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].bytes))
+ yyVAL.tableIdent = NewTableIdent(string(yyDollar[1].str))
}
- case 1307:
+ case 1368:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4975
+//line sql.y:5188
{
if incNesting(yylex) {
yylex.Error("max nesting level reached")
return 1
}
}
- case 1308:
+ case 1369:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4984
+//line sql.y:5197
{
decNesting(yylex)
}
- case 1309:
+ case 1370:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4989
+//line sql.y:5202
{
skipToEnd(yylex)
}
- case 1310:
+ case 1371:
yyDollar = yyS[yypt-0 : yypt+1]
-//line sql.y:4994
+//line sql.y:5207
{
skipToEnd(yylex)
}
- case 1311:
+ case 1372:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:4998
+//line sql.y:5211
{
skipToEnd(yylex)
}
- case 1312:
+ case 1373:
yyDollar = yyS[yypt-1 : yypt+1]
-//line sql.y:5002
+//line sql.y:5215
{
skipToEnd(yylex)
}
diff --git a/go/vt/sqlparser/sql.y b/go/vt/sqlparser/sql.y
index 8aaa1351165..38fd54530f5 100644
--- a/go/vt/sqlparser/sql.y
+++ b/go/vt/sqlparser/sql.y
@@ -17,19 +17,19 @@ limitations under the License.
%{
package sqlparser
-func setParseTree(yylex interface{}, stmt Statement) {
+func setParseTree(yylex yyLexer, stmt Statement) {
yylex.(*Tokenizer).ParseTree = stmt
}
-func setAllowComments(yylex interface{}, allow bool) {
+func setAllowComments(yylex yyLexer, allow bool) {
yylex.(*Tokenizer).AllowComments = allow
}
-func setDDL(yylex interface{}, node Statement) {
+func setDDL(yylex yyLexer, node Statement) {
yylex.(*Tokenizer).partialDDL = node
}
-func incNesting(yylex interface{}) bool {
+func incNesting(yylex yyLexer) bool {
yylex.(*Tokenizer).nesting++
if yylex.(*Tokenizer).nesting == 200 {
return true
@@ -37,94 +37,114 @@ func incNesting(yylex interface{}) bool {
return false
}
-func decNesting(yylex interface{}) {
+func decNesting(yylex yyLexer) {
yylex.(*Tokenizer).nesting--
}
// skipToEnd forces the lexer to end prematurely. Not all SQL statements
// are supported by the Parser, thus calling skipToEnd will make the lexer
// return EOF early.
-func skipToEnd(yylex interface{}) {
+func skipToEnd(yylex yyLexer) {
yylex.(*Tokenizer).SkipToEnd = true
}
+func bindVariable(yylex yyLexer, bvar string) {
+ yylex.(*Tokenizer).BindVars[bvar] = struct{}{}
+}
+
%}
-%union {
+%struct {
empty struct{}
+ LengthScaleOption LengthScaleOption
+ tableName TableName
+ tableIdent TableIdent
+ str string
+ strs []string
+ vindexParam VindexParam
+ colIdent ColIdent
+ joinCondition JoinCondition
+ collateAndCharset CollateAndCharset
+ columnType ColumnType
+}
+
+%union {
statement Statement
selStmt SelectStatement
- ddl *DDL
+ tableExpr TableExpr
+ expr Expr
+ colTuple ColTuple
+ optVal Expr
+ constraintInfo ConstraintInfo
+ alterOption AlterOption
+ characteristic Characteristic
+
ins *Insert
- byt byte
- bytes []byte
- bytes2 [][]byte
- str string
- strs []string
- selectExprs SelectExprs
- selectExpr SelectExpr
- columns Columns
- partitions Partitions
colName *ColName
- tableExprs TableExprs
- tableExpr TableExpr
- joinCondition JoinCondition
- tableName TableName
- tableNames TableNames
indexHints *IndexHints
- expr Expr
- exprs Exprs
- boolVal BoolVal
- boolean bool
literal *Literal
- colTuple ColTuple
- values Values
- valTuple ValTuple
subquery *Subquery
derivedTable *DerivedTable
- whens []*When
when *When
- orderBy OrderBy
order *Order
limit *Limit
- updateExprs UpdateExprs
- setExprs SetExprs
updateExpr *UpdateExpr
setExpr *SetExpr
- characteristic Characteristic
- characteristics []Characteristic
- colIdent ColIdent
- tableIdent TableIdent
convertType *ConvertType
aliasedTableName *AliasedTableExpr
- TableSpec *TableSpec
- columnType ColumnType
- colKeyOpt ColumnKeyOption
- optVal Expr
- LengthScaleOption LengthScaleOption
+ tableSpec *TableSpec
columnDefinition *ColumnDefinition
- columnDefinitions []*ColumnDefinition
indexDefinition *IndexDefinition
indexInfo *IndexInfo
indexOption *IndexOption
- indexOptions []*IndexOption
indexColumn *IndexColumn
- indexColumns []*IndexColumn
- constraintDefinition *ConstraintDefinition
- constraintInfo ConstraintInfo
- ReferenceAction ReferenceAction
- partDefs []*PartitionDefinition
partDef *PartitionDefinition
partSpec *PartitionSpec
- partSpecs []*PartitionSpec
- vindexParam VindexParam
- vindexParams []VindexParam
showFilter *ShowFilter
optLike *OptLike
+ selectInto *SelectInto
+ createDatabase *CreateDatabase
+ alterDatabase *AlterDatabase
+ createTable *CreateTable
+ tableAndLockType *TableAndLockType
+ alterTable *AlterTable
+ tableOption *TableOption
+ columnTypeOptions *ColumnTypeOptions
+ constraintDefinition *ConstraintDefinition
+ revertMigration *RevertMigration
+ alterMigration *AlterMigration
+
+ whens []*When
+ columnDefinitions []*ColumnDefinition
+ indexOptions []*IndexOption
+ indexColumns []*IndexColumn
+ collateAndCharsets []CollateAndCharset
+ tableAndLockTypes TableAndLockTypes
+ renameTablePairs []*RenameTablePair
+ alterOptions []AlterOption
+ vindexParams []VindexParam
+ partDefs []*PartitionDefinition
+ partSpecs []*PartitionSpec
+ characteristics []Characteristic
+ selectExpr SelectExpr
+ columns Columns
+ partitions Partitions
+ tableExprs TableExprs
+ tableNames TableNames
+ exprs Exprs
+ values Values
+ valTuple ValTuple
+ orderBy OrderBy
+ updateExprs UpdateExprs
+ setExprs SetExprs
+ selectExprs SelectExprs
+ tableOptions TableOptions
+
+ colKeyOpt ColumnKeyOption
+ ReferenceAction ReferenceAction
isolationLevel IsolationLevel
insertAction InsertAction
scope Scope
- ignore Ignore
lock Lock
joinType JoinType
comparisonExprOperator ComparisonExprOperator
@@ -132,62 +152,52 @@ func skipToEnd(yylex interface{}) {
matchExprOption MatchExprOption
orderDirection OrderDirection
explainType ExplainType
- selectInto *SelectInto
- createIndex *CreateIndex
- createDatabase *CreateDatabase
- alterDatabase *AlterDatabase
- collateAndCharset CollateAndCharset
- collateAndCharsets []CollateAndCharset
- createTable *CreateTable
- tableAndLockTypes []*TableAndLockType
- tableAndLockType *TableAndLockType
lockType LockType
- alterTable *AlterTable
- alterOption AlterOption
- alterOptions []AlterOption
- tableOption *TableOption
- tableOptions TableOptions
+
+ boolean bool
+ boolVal BoolVal
+ ignore Ignore
}
%token LEX_ERROR
-%left UNION
-%token SELECT STREAM VSTREAM INSERT UPDATE DELETE FROM WHERE GROUP HAVING ORDER BY LIMIT OFFSET FOR
-%token ALL DISTINCT AS EXISTS ASC DESC INTO DUPLICATE KEY DEFAULT SET LOCK UNLOCK KEYS DO
-%token DISTINCTROW PARSER
-%token OUTFILE S3 DATA LOAD LINES TERMINATED ESCAPED ENCLOSED
-%token DUMPFILE CSV HEADER MANIFEST OVERWRITE STARTING OPTIONALLY
-%token VALUES LAST_INSERT_ID
-%token NEXT VALUE SHARE MODE
-%token SQL_NO_CACHE SQL_CACHE SQL_CALC_FOUND_ROWS
-%left JOIN STRAIGHT_JOIN LEFT RIGHT INNER OUTER CROSS NATURAL USE FORCE
-%left ON USING INPLACE COPY ALGORITHM NONE SHARED EXCLUSIVE
+%left UNION
+%token SELECT STREAM VSTREAM INSERT UPDATE DELETE FROM WHERE GROUP HAVING ORDER BY LIMIT OFFSET FOR
+%token ALL DISTINCT AS EXISTS ASC DESC INTO DUPLICATE KEY DEFAULT SET LOCK UNLOCK KEYS DO CALL
+%token DISTINCTROW PARSER
+%token OUTFILE S3 DATA LOAD LINES TERMINATED ESCAPED ENCLOSED
+%token DUMPFILE CSV HEADER MANIFEST OVERWRITE STARTING OPTIONALLY
+%token VALUES LAST_INSERT_ID
+%token NEXT VALUE SHARE MODE
+%token SQL_NO_CACHE SQL_CACHE SQL_CALC_FOUND_ROWS
+%left JOIN STRAIGHT_JOIN LEFT RIGHT INNER OUTER CROSS NATURAL USE FORCE
+%left ON USING INPLACE COPY ALGORITHM NONE SHARED EXCLUSIVE
%token '(' ',' ')'
-%token ID AT_ID AT_AT_ID HEX STRING INTEGRAL FLOAT HEXNUM VALUE_ARG LIST_ARG COMMENT COMMENT_KEYWORD BIT_LITERAL COMPRESSION
-%token NULL TRUE FALSE OFF
-%token DISCARD IMPORT ENABLE DISABLE TABLESPACE
+%token ID AT_ID AT_AT_ID HEX STRING INTEGRAL FLOAT HEXNUM VALUE_ARG LIST_ARG COMMENT COMMENT_KEYWORD BIT_LITERAL COMPRESSION
+%token NULL TRUE FALSE OFF
+%token DISCARD IMPORT ENABLE DISABLE TABLESPACE
// Precedence dictated by mysql. But the vitess grammar is simplified.
// Some of these operators don't conflict in our situation. Nevertheless,
// it's better to have these listed in the correct order. Also, we don't
// support all operators yet.
// * NOTE: If you change anything here, update precedence.go as well *
-%left OR
-%left XOR
-%left AND
-%right NOT '!'
-%left BETWEEN CASE WHEN THEN ELSE END
-%left '=' '<' '>' LE GE NE NULL_SAFE_EQUAL IS LIKE REGEXP IN
-%left '|'
-%left '&'
-%left SHIFT_LEFT SHIFT_RIGHT
-%left '+' '-'
-%left '*' '/' DIV '%' MOD
-%left '^'
-%right '~' UNARY
-%left COLLATE
-%right BINARY UNDERSCORE_BINARY UNDERSCORE_UTF8MB4 UNDERSCORE_UTF8 UNDERSCORE_LATIN1
-%right INTERVAL
-%nonassoc '.'
+%left OR
+%left XOR
+%left AND
+%right NOT '!'
+%left BETWEEN CASE WHEN THEN ELSE END
+%left '=' '<' '>' LE GE NE NULL_SAFE_EQUAL IS LIKE REGEXP IN
+%left '|'
+%left '&'
+%left SHIFT_LEFT SHIFT_RIGHT
+%left '+' '-'
+%left '*' '/' DIV '%' MOD
+%left '^'
+%right '~' UNARY
+%left COLLATE
+%right BINARY UNDERSCORE_BINARY UNDERSCORE_UTF8MB4 UNDERSCORE_UTF8 UNDERSCORE_LATIN1
+%right INTERVAL
+%nonassoc '.'
// There is no need to define precedence for the JSON
// operators because the syntax is restricted enough that
@@ -195,80 +205,87 @@ func skipToEnd(yylex interface{}) {
%token JSON_EXTRACT_OP JSON_UNQUOTE_EXTRACT_OP
// DDL Tokens
-%token CREATE ALTER DROP RENAME ANALYZE ADD FLUSH CHANGE MODIFY
-%token SCHEMA TABLE INDEX VIEW TO IGNORE IF UNIQUE PRIMARY COLUMN SPATIAL FULLTEXT KEY_BLOCK_SIZE CHECK INDEXES
-%token ACTION CASCADE CONSTRAINT FOREIGN NO REFERENCES RESTRICT
-%token SHOW DESCRIBE EXPLAIN DATE ESCAPE REPAIR OPTIMIZE TRUNCATE COALESCE EXCHANGE REBUILD PARTITIONING REMOVE
-%token MAXVALUE PARTITION REORGANIZE LESS THAN PROCEDURE TRIGGER
-%token VINDEX VINDEXES DIRECTORY NAME UPGRADE
-%token STATUS VARIABLES WARNINGS CASCADED DEFINER OPTION SQL UNDEFINED
-%token SEQUENCE MERGE TEMPTABLE INVOKER SECURITY FIRST AFTER LAST
+%token CREATE ALTER DROP RENAME ANALYZE ADD FLUSH CHANGE MODIFY
+%token REVERT
+%token SCHEMA TABLE INDEX VIEW TO IGNORE IF UNIQUE PRIMARY COLUMN SPATIAL FULLTEXT KEY_BLOCK_SIZE CHECK INDEXES
+%token ACTION CASCADE CONSTRAINT FOREIGN NO REFERENCES RESTRICT
+%token SHOW DESCRIBE EXPLAIN DATE ESCAPE REPAIR OPTIMIZE TRUNCATE COALESCE EXCHANGE REBUILD PARTITIONING REMOVE
+%token MAXVALUE PARTITION REORGANIZE LESS THAN PROCEDURE TRIGGER
+%token VINDEX VINDEXES DIRECTORY NAME UPGRADE
+%token STATUS VARIABLES WARNINGS CASCADED DEFINER OPTION SQL UNDEFINED
+%token SEQUENCE MERGE TEMPORARY TEMPTABLE INVOKER SECURITY FIRST AFTER LAST
+
+// Migration tokens
+%token VITESS_MIGRATION CANCEL RETRY COMPLETE
// Transaction Tokens
-%token BEGIN START TRANSACTION COMMIT ROLLBACK SAVEPOINT RELEASE WORK
+%token BEGIN START TRANSACTION COMMIT ROLLBACK SAVEPOINT RELEASE WORK
// Type Tokens
-%token BIT TINYINT SMALLINT MEDIUMINT INT INTEGER BIGINT INTNUM
-%token REAL DOUBLE FLOAT_TYPE DECIMAL NUMERIC
-%token TIME TIMESTAMP DATETIME YEAR
-%token CHAR VARCHAR BOOL CHARACTER VARBINARY NCHAR
-%token TEXT TINYTEXT MEDIUMTEXT LONGTEXT
-%token BLOB TINYBLOB MEDIUMBLOB LONGBLOB JSON ENUM
-%token GEOMETRY POINT LINESTRING POLYGON GEOMETRYCOLLECTION MULTIPOINT MULTILINESTRING MULTIPOLYGON
+%token BIT TINYINT SMALLINT MEDIUMINT INT INTEGER BIGINT INTNUM
+%token REAL DOUBLE FLOAT_TYPE DECIMAL NUMERIC
+%token TIME TIMESTAMP DATETIME YEAR
+%token CHAR VARCHAR BOOL CHARACTER VARBINARY NCHAR
+%token TEXT TINYTEXT MEDIUMTEXT LONGTEXT
+%token BLOB TINYBLOB MEDIUMBLOB LONGBLOB JSON ENUM
+%token GEOMETRY POINT LINESTRING POLYGON GEOMETRYCOLLECTION MULTIPOINT MULTILINESTRING MULTIPOLYGON
// Type Modifiers
-%token NULLX AUTO_INCREMENT APPROXNUM SIGNED UNSIGNED ZEROFILL
+%token NULLX AUTO_INCREMENT APPROXNUM SIGNED UNSIGNED ZEROFILL
// SHOW tokens
-%token COLLATION DATABASES SCHEMAS TABLES VITESS_METADATA VSCHEMA FULL PROCESSLIST COLUMNS FIELDS ENGINES PLUGINS EXTENDED
-%token KEYSPACES VITESS_KEYSPACES VITESS_SHARDS VITESS_TABLETS CODE PRIVILEGES FUNCTION
+%token COLLATION DATABASES SCHEMAS TABLES VITESS_METADATA VSCHEMA FULL PROCESSLIST COLUMNS FIELDS ENGINES PLUGINS EXTENDED
+%token KEYSPACES VITESS_KEYSPACES VITESS_SHARDS VITESS_TABLETS VITESS_MIGRATIONS CODE PRIVILEGES FUNCTION OPEN TRIGGERS EVENT USER
// SET tokens
-%token NAMES CHARSET GLOBAL SESSION ISOLATION LEVEL READ WRITE ONLY REPEATABLE COMMITTED UNCOMMITTED SERIALIZABLE
+%token NAMES CHARSET GLOBAL SESSION ISOLATION LEVEL READ WRITE ONLY REPEATABLE COMMITTED UNCOMMITTED SERIALIZABLE
// Functions
-%token CURRENT_TIMESTAMP DATABASE CURRENT_DATE
-%token CURRENT_TIME LOCALTIME LOCALTIMESTAMP CURRENT_USER
-%token UTC_DATE UTC_TIME UTC_TIMESTAMP
-%token REPLACE
-%token CONVERT CAST
-%token SUBSTR SUBSTRING
-%token GROUP_CONCAT SEPARATOR
-%token TIMESTAMPADD TIMESTAMPDIFF
+%token CURRENT_TIMESTAMP DATABASE CURRENT_DATE
+%token CURRENT_TIME LOCALTIME LOCALTIMESTAMP CURRENT_USER
+%token UTC_DATE UTC_TIME UTC_TIMESTAMP
+%token REPLACE
+%token CONVERT CAST
+%token SUBSTR SUBSTRING
+%token GROUP_CONCAT SEPARATOR
+%token TIMESTAMPADD TIMESTAMPDIFF
// Match
-%token MATCH AGAINST BOOLEAN LANGUAGE WITH QUERY EXPANSION WITHOUT VALIDATION
+%token MATCH AGAINST BOOLEAN LANGUAGE WITH QUERY EXPANSION WITHOUT VALIDATION
// MySQL reserved words that are unused by this grammar will map to this token.
-%token UNUSED ARRAY CUME_DIST DESCRIPTION DENSE_RANK EMPTY EXCEPT FIRST_VALUE GROUPING GROUPS JSON_TABLE LAG LAST_VALUE LATERAL LEAD MEMBER
-%token NTH_VALUE NTILE OF OVER PERCENT_RANK RANK RECURSIVE ROW_NUMBER SYSTEM WINDOW
-%token ACTIVE ADMIN BUCKETS CLONE COMPONENT DEFINITION ENFORCED EXCLUDE FOLLOWING GEOMCOLLECTION GET_MASTER_PUBLIC_KEY HISTOGRAM HISTORY
-%token INACTIVE INVISIBLE LOCKED MASTER_COMPRESSION_ALGORITHMS MASTER_PUBLIC_KEY_PATH MASTER_TLS_CIPHERSUITES MASTER_ZSTD_COMPRESSION_LEVEL
-%token NESTED NETWORK_NAMESPACE NOWAIT NULLS OJ OLD OPTIONAL ORDINALITY ORGANIZATION OTHERS PATH PERSIST PERSIST_ONLY PRECEDING PRIVILEGE_CHECKS_USER PROCESS
-%token RANDOM REFERENCE REQUIRE_ROW_FORMAT RESOURCE RESPECT RESTART RETAIN REUSE ROLE SECONDARY SECONDARY_ENGINE SECONDARY_LOAD SECONDARY_UNLOAD SKIP SRID
-%token THREAD_PRIORITY TIES UNBOUNDED VCPU VISIBLE
+%token UNUSED ARRAY CUME_DIST DESCRIPTION DENSE_RANK EMPTY EXCEPT FIRST_VALUE GROUPING GROUPS JSON_TABLE LAG LAST_VALUE LATERAL LEAD MEMBER
+%token NTH_VALUE NTILE OF OVER PERCENT_RANK RANK RECURSIVE ROW_NUMBER SYSTEM WINDOW
+%token ACTIVE ADMIN BUCKETS CLONE COMPONENT DEFINITION ENFORCED EXCLUDE FOLLOWING GEOMCOLLECTION GET_MASTER_PUBLIC_KEY HISTOGRAM HISTORY
+%token INACTIVE INVISIBLE LOCKED MASTER_COMPRESSION_ALGORITHMS MASTER_PUBLIC_KEY_PATH MASTER_TLS_CIPHERSUITES MASTER_ZSTD_COMPRESSION_LEVEL
+%token NESTED NETWORK_NAMESPACE NOWAIT NULLS OJ OLD OPTIONAL ORDINALITY ORGANIZATION OTHERS PATH PERSIST PERSIST_ONLY PRECEDING PRIVILEGE_CHECKS_USER PROCESS
+%token RANDOM REFERENCE REQUIRE_ROW_FORMAT RESOURCE RESPECT RESTART RETAIN REUSE ROLE SECONDARY SECONDARY_ENGINE SECONDARY_LOAD SECONDARY_UNLOAD SKIP SRID
+%token THREAD_PRIORITY TIES UNBOUNDED VCPU VISIBLE
// Explain tokens
-%token FORMAT TREE VITESS TRADITIONAL
+%token FORMAT TREE VITESS TRADITIONAL
// Lock type tokens
-%token LOCAL LOW_PRIORITY
+%token LOCAL LOW_PRIORITY
+
+// Flush tokens
+%token NO_WRITE_TO_BINLOG LOGS ERROR GENERAL HOSTS OPTIMIZER_COSTS USER_RESOURCES SLOW CHANNEL RELAY EXPORT
// TableOptions tokens
-%token AVG_ROW_LENGTH CONNECTION CHECKSUM DELAY_KEY_WRITE ENCRYPTION ENGINE INSERT_METHOD MAX_ROWS MIN_ROWS PACK_KEYS PASSWORD
-%token FIXED DYNAMIC COMPRESSED REDUNDANT COMPACT ROW_FORMAT STATS_AUTO_RECALC STATS_PERSISTENT STATS_SAMPLE_PAGES STORAGE MEMORY DISK
+%token AVG_ROW_LENGTH CONNECTION CHECKSUM DELAY_KEY_WRITE ENCRYPTION ENGINE INSERT_METHOD MAX_ROWS MIN_ROWS PACK_KEYS PASSWORD
+%token FIXED DYNAMIC COMPRESSED REDUNDANT COMPACT ROW_FORMAT STATS_AUTO_RECALC STATS_PERSISTENT STATS_SAMPLE_PAGES STORAGE MEMORY DISK
%type command
%type simple_select select_statement base_select union_rhs
%type explain_statement explainable_statement
%type stream_statement vstream_statement insert_statement update_statement delete_statement set_statement set_transaction_statement
%type create_statement alter_statement rename_statement drop_statement truncate_statement flush_statement do_statement
-%type rename_list
+%type rename_list
%type create_table_prefix
%type alter_table_prefix
-%type alter_option alter_commands_modifier
-%type alter_options alter_commands_list alter_commands_modifier_list
-%type create_index_prefix
+%type alter_option alter_commands_modifier lock_index algorithm_index
+%type alter_options alter_commands_list alter_commands_modifier_list algorithm_lock_opt
+%type create_index_prefix
%type create_database_prefix
%type alter_database_prefix
%type collate character_set
@@ -276,19 +293,20 @@ func skipToEnd(yylex interface{}) {
%type default_optional
%type analyze_statement show_statement use_statement other_statement
%type begin_statement commit_statement rollback_statement savepoint_statement release_statement load_statement
-%type lock_statement unlock_statement
-%type comment_opt comment_list
+%type lock_statement unlock_statement call_statement
+%type revert_statement
+%type comment_opt comment_list
%type wild_opt check_option_opt cascade_or_local_opt restrict_or_cascade_opt
%type explain_format_opt
%type insert_or_replace
-%type explain_synonyms
-%type cache_opt separator_opt
+%type explain_synonyms
+%type cache_opt separator_opt flush_option for_channel_opt
%type match_option
-%type distinct_opt union_op replace_opt
+%type distinct_opt union_op replace_opt local_opt
%type like_escape_opt
%type select_expression_list select_expression_list_opt
%type select_expression
-%type select_options
+%type select_options flush_option_list
%type select_option algorithm_view security_view security_view_opt
%type definer_opt user
%type expression
@@ -309,7 +327,7 @@ func skipToEnd(yylex interface{}) {
%type function_call_keyword function_call_nonkeyword function_call_generic function_call_conflict func_datetime_precision
%type is_suffix
%type col_tuple
-%type expression_list
+%type expression_list expression_list_opt
%type | | |